aboutsummaryrefslogtreecommitdiff
path: root/llvm/docs/AMDGPU/gfx12_delay.rst
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/docs/AMDGPU/gfx12_delay.rst')
-rw-r--r--llvm/docs/AMDGPU/gfx12_delay.rst74
1 files changed, 74 insertions, 0 deletions
diff --git a/llvm/docs/AMDGPU/gfx12_delay.rst b/llvm/docs/AMDGPU/gfx12_delay.rst
new file mode 100644
index 0000000..600ece7
--- /dev/null
+++ b/llvm/docs/AMDGPU/gfx12_delay.rst
@@ -0,0 +1,74 @@
+.. _amdgpu_synid_delay:
+
+delay
+=====
+
+A delay between dependent SALU/VALU instructions.
+This operand may specify a delay for 2 instructions:
+the one after the current *s_delay_alu* instruction
+and for the second instruction indicated by *SKIP*.
+
+The bits of this operand have the following meaning:
+
+ ===== ========================================================== ============
+ Bits Description Value Range
+ ===== ========================================================== ============
+ 3:0 ID0: indicates a delay for the first instruction. 0..11
+ 6:4 SKIP: indicates the position of the second instruction. 0..5
+ 10:7 ID1: indicates a delay for the second instruction. 0..11
+ ===== ========================================================== ============
+
+This operand may be specified as one of the following:
+
+* An :ref:`integer_number<amdgpu_synid_integer_number>` or an :ref:`absolute_expression<amdgpu_synid_absolute_expression>`. The value must be in the range 0..0xFFFF.
+* A combination of *instid0*, *instskip*, *instid1* values described below.
+
+ ======================== =========================== ===============
+ Syntax Description Default Value
+ ======================== =========================== ===============
+ instid0(<*ID name*>) A symbolic *ID0* value. instid0(NO_DEP)
+ instskip(<*SKIP name*>) A symbolic *SKIP* value. instskip(SAME)
+ instid1(<*ID name*>) A symbolic *ID1* value. instid1(NO_DEP)
+ ======================== =========================== ===============
+
+These values may be specified in any order.
+When more than one value is specified, the values must be separated from each other by a '|'.
+
+Valid *ID names* are defined below.
+
+ =================== ===================================================================
+ Name Description
+ =================== ===================================================================
+ NO_DEP No dependency on any prior instruction. This is the default value.
+ VALU_DEP_1 Dependency on a previous VALU instruction, 1 opcode back.
+ VALU_DEP_2 Dependency on a previous VALU instruction, 2 opcodes back.
+ VALU_DEP_3 Dependency on a previous VALU instruction, 3 opcodes back.
+ VALU_DEP_4 Dependency on a previous VALU instruction, 4 opcodes back.
+ TRANS32_DEP_1 Dependency on a previous TRANS32 instruction, 1 opcode back.
+ TRANS32_DEP_2 Dependency on a previous TRANS32 instruction, 2 opcodes back.
+ TRANS32_DEP_3 Dependency on a previous TRANS32 instruction, 3 opcodes back.
+ FMA_ACCUM_CYCLE_1 Single cycle penalty for FMA accumulation.
+ SALU_CYCLE_1 1 cycle penalty for a prior SALU instruction.
+ SALU_CYCLE_2 2 cycle penalty for a prior SALU instruction.
+ SALU_CYCLE_3 3 cycle penalty for a prior SALU instruction.
+ =================== ===================================================================
+
+Legal *SKIP names* are described in the following table.
+
+ ======== ============================================================================
+ Name Description
+ ======== ============================================================================
+ SAME Apply second dependency to the same instruction. This is the default value.
+ NEXT Apply second dependency to the next instruction.
+ SKIP_1 Skip 1 instruction then apply dependency.
+ SKIP_2 Skip 2 instructions then apply dependency.
+ SKIP_3 Skip 3 instructions then apply dependency.
+ SKIP_4 Skip 4 instructions then apply dependency.
+ ======== ============================================================================
+
+Examples:
+
+.. parsed-literal::
+
+ s_delay_alu instid0(VALU_DEP_1)
+ s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)