Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / docs / AMDGPU / gfx11_delay.rst
bloba773c2887f87a187846a7396608ae51ce921105e
1 ..
2     **************************************************
3     *                                                *
4     *   Automatically generated file, do not edit!   *
5     *                                                *
6     **************************************************
8 .. _amdgpu_synid_gfx11_delay:
10 delay
11 =====
13 A delay between dependent SALU/VALU instructions.
14 This operand may specify a delay for 2 instructions:
15 the one after the current *s_delay_alu* instruction
16 and for the second instruction indicated by *SKIP*.
18 The bits of this operand have the following meaning:
20     ===== ========================================================== ============
21     Bits  Description                                                Value Range
22     ===== ========================================================== ============
23     3:0   ID0: indicates a delay for the first instruction.          0..11
24     6:4   SKIP: indicates the position of the second instruction.    0..5
25     10:7  ID1: indicates a delay for the second instruction.         0..11
26     ===== ========================================================== ============
28 This operand may be specified as one of the following:
30 * An :ref:`integer_number<amdgpu_synid_integer_number>` or an :ref:`absolute_expression<amdgpu_synid_absolute_expression>`. The value must be in the range from 0 to 0xFFFF.
31 * A combination of *instid0*, *instskip*, *instid1* values which are described below.
33     ======================== =========================== ===============
34     Syntax                   Description                 Default Value
35     ======================== =========================== ===============
36     instid0(<*ID name*>)     A symbolic *ID0* value.     instid0(NO_DEP)
37     instskip(<*SKIP name*>)  A symbolic *SKIP* value.    instskip(SAME)
38     instid1(<*ID name*>)     A symbolic *ID1* value.     instid1(NO_DEP)
39     ======================== =========================== ===============
41 These values may be specified in any order.
42 When more than one value is specified, the values must be separated from each other by a '|'.
44 Valid *ID names* are defined below.
46     =================== ===================================================================
47     Name                Description
48     =================== ===================================================================
49     NO_DEP              No dependency on any prior instruction. This is the default value.
50     VALU_DEP_1          Dependency on a previous VALU instruction, 1 opcode back.
51     VALU_DEP_2          Dependency on a previous VALU instruction, 2 opcodes back.
52     VALU_DEP_3          Dependency on a previous VALU instruction, 3 opcodes back.
53     VALU_DEP_4          Dependency on a previous VALU instruction, 4 opcodes back.
54     TRANS32_DEP_1       Dependency on a previous TRANS32 instruction, 1 opcode back.
55     TRANS32_DEP_2       Dependency on a previous TRANS32 instruction, 2 opcodes back.
56     TRANS32_DEP_3       Dependency on a previous TRANS32 instruction, 3 opcodes back.
57     FMA_ACCUM_CYCLE_1   Single cycle penalty for FMA accumulation.
58     SALU_CYCLE_1        1 cycle penalty for a prior SALU instruction.
59     SALU_CYCLE_2        2 cycle penalty for a prior SALU instruction.
60     SALU_CYCLE_3        3 cycle penalty for a prior SALU instruction.
61     =================== ===================================================================
63 Legal *SKIP names* are described in the following table.
65     ======== ============================================================================
66     Name     Description
67     ======== ============================================================================
68     SAME     Apply second dependency to the same instruction. This is the default value.
69     NEXT     Apply second dependency to the next instruction.
70     SKIP_1   Skip 1 instruction then apply dependency.
71     SKIP_2   Skip 2 instructions then apply dependency.
72     SKIP_3   Skip 3 instructions then apply dependency.
73     SKIP_4   Skip 4 instructions then apply dependency.
74     ======== ============================================================================
76 Examples:
78 .. parsed-literal::
80     s_delay_alu instid0(VALU_DEP_1)
81     s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)