xref: /llvm-project/llvm/docs/AMDGPUModifierSyntax.rst (revision 7591a7b6ea5a36653c22fcec9aaf5c81ebab5bd1)
147eb6368SDmitry Preobrazhensky======================================
247eb6368SDmitry PreobrazhenskySyntax of AMDGPU Instruction Modifiers
347eb6368SDmitry Preobrazhensky======================================
447eb6368SDmitry Preobrazhensky
547eb6368SDmitry Preobrazhensky.. contents::
647eb6368SDmitry Preobrazhensky   :local:
747eb6368SDmitry Preobrazhensky
847eb6368SDmitry PreobrazhenskyConventions
947eb6368SDmitry Preobrazhensky===========
1047eb6368SDmitry Preobrazhensky
1147eb6368SDmitry PreobrazhenskyThe following notation is used throughout this document:
1247eb6368SDmitry Preobrazhensky
1347eb6368SDmitry Preobrazhensky    =================== =============================================================
1447eb6368SDmitry Preobrazhensky    Notation            Description
1547eb6368SDmitry Preobrazhensky    =================== =============================================================
1647eb6368SDmitry Preobrazhensky    {0..N}              Any integer value in the range from 0 to N (inclusive).
17d9daee5aSDmitry Preobrazhensky    <x>                 Syntax and meaning of *x* are explained elsewhere.
1847eb6368SDmitry Preobrazhensky    =================== =============================================================
1947eb6368SDmitry Preobrazhensky
2047eb6368SDmitry Preobrazhensky.. _amdgpu_syn_modifiers:
2147eb6368SDmitry Preobrazhensky
2247eb6368SDmitry PreobrazhenskyModifiers
2347eb6368SDmitry Preobrazhensky=========
2447eb6368SDmitry Preobrazhensky
2547eb6368SDmitry PreobrazhenskyDS Modifiers
2647eb6368SDmitry Preobrazhensky------------
2747eb6368SDmitry Preobrazhensky
288ea3e9d9SDmitry Preobrazhensky.. _amdgpu_synid_ds_offset80:
2947eb6368SDmitry Preobrazhensky
308ea3e9d9SDmitry Preobrazhenskyoffset0
31ddac5c9bSDmitry Preobrazhensky~~~~~~~
3247eb6368SDmitry Preobrazhensky
33d9daee5aSDmitry PreobrazhenskySpecifies the first 8-bit offset, in bytes. The default value is 0.
3447eb6368SDmitry Preobrazhensky
358ea3e9d9SDmitry PreobrazhenskyUsed with DS instructions that expect two addresses.
3647eb6368SDmitry Preobrazhensky
37b9683d3cSDmitry Preobrazhensky    =================== ====================================================================
3847eb6368SDmitry Preobrazhensky    Syntax              Description
39b9683d3cSDmitry Preobrazhensky    =================== ====================================================================
408ea3e9d9SDmitry Preobrazhensky    offset0:{0..0xFF}   Specifies an unsigned 8-bit offset as a positive
41b9683d3cSDmitry Preobrazhensky                        :ref:`integer number <amdgpu_synid_integer_number>`
42b9683d3cSDmitry Preobrazhensky                        or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
43b9683d3cSDmitry Preobrazhensky    =================== ====================================================================
4447eb6368SDmitry Preobrazhensky
4547eb6368SDmitry PreobrazhenskyExamples:
4647eb6368SDmitry Preobrazhensky
471fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
4847eb6368SDmitry Preobrazhensky
498ea3e9d9SDmitry Preobrazhensky  offset0:0xff
508ea3e9d9SDmitry Preobrazhensky  offset0:2-x
518ea3e9d9SDmitry Preobrazhensky  offset0:-x-y
528ea3e9d9SDmitry Preobrazhensky
538ea3e9d9SDmitry Preobrazhensky.. _amdgpu_synid_ds_offset81:
548ea3e9d9SDmitry Preobrazhensky
558ea3e9d9SDmitry Preobrazhenskyoffset1
568ea3e9d9SDmitry Preobrazhensky~~~~~~~
578ea3e9d9SDmitry Preobrazhensky
58d9daee5aSDmitry PreobrazhenskySpecifies the second 8-bit offset, in bytes. The default value is 0.
598ea3e9d9SDmitry Preobrazhensky
608ea3e9d9SDmitry PreobrazhenskyUsed with DS instructions that expect two addresses.
618ea3e9d9SDmitry Preobrazhensky
628ea3e9d9SDmitry Preobrazhensky    =================== ====================================================================
638ea3e9d9SDmitry Preobrazhensky    Syntax              Description
648ea3e9d9SDmitry Preobrazhensky    =================== ====================================================================
658ea3e9d9SDmitry Preobrazhensky    offset1:{0..0xFF}   Specifies an unsigned 8-bit offset as a positive
668ea3e9d9SDmitry Preobrazhensky                        :ref:`integer number <amdgpu_synid_integer_number>`
678ea3e9d9SDmitry Preobrazhensky                        or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
688ea3e9d9SDmitry Preobrazhensky    =================== ====================================================================
698ea3e9d9SDmitry Preobrazhensky
708ea3e9d9SDmitry PreobrazhenskyExamples:
718ea3e9d9SDmitry Preobrazhensky
728ea3e9d9SDmitry Preobrazhensky.. parsed-literal::
738ea3e9d9SDmitry Preobrazhensky
748ea3e9d9SDmitry Preobrazhensky  offset1:0xff
758ea3e9d9SDmitry Preobrazhensky  offset1:2-x
768ea3e9d9SDmitry Preobrazhensky  offset1:-x-y
7747eb6368SDmitry Preobrazhensky
7847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_ds_offset16:
7947eb6368SDmitry Preobrazhensky
808ea3e9d9SDmitry Preobrazhenskyoffset
818ea3e9d9SDmitry Preobrazhensky~~~~~~
8247eb6368SDmitry Preobrazhensky
838ea3e9d9SDmitry PreobrazhenskySpecifies a 16-bit offset, in bytes. The default value is 0.
8447eb6368SDmitry Preobrazhensky
858ea3e9d9SDmitry PreobrazhenskyUsed with DS instructions that expect a single address.
8647eb6368SDmitry Preobrazhensky
87b9683d3cSDmitry Preobrazhensky    ==================== ====================================================================
8847eb6368SDmitry Preobrazhensky    Syntax               Description
89b9683d3cSDmitry Preobrazhensky    ==================== ====================================================================
9047eb6368SDmitry Preobrazhensky    offset:{0..0xFFFF}   Specifies an unsigned 16-bit offset as a positive
91b9683d3cSDmitry Preobrazhensky                         :ref:`integer number <amdgpu_synid_integer_number>`
92b9683d3cSDmitry Preobrazhensky                         or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
93b9683d3cSDmitry Preobrazhensky    ==================== ====================================================================
9447eb6368SDmitry Preobrazhensky
9547eb6368SDmitry PreobrazhenskyExamples:
9647eb6368SDmitry Preobrazhensky
971fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
9847eb6368SDmitry Preobrazhensky
9947eb6368SDmitry Preobrazhensky  offset:65535
10047eb6368SDmitry Preobrazhensky  offset:0xffff
101b9683d3cSDmitry Preobrazhensky  offset:-x-y
10247eb6368SDmitry Preobrazhensky
10347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_sw_offset16:
10447eb6368SDmitry Preobrazhensky
105cef9d421SDmitry Preobrazhenskyswizzle pattern
106cef9d421SDmitry Preobrazhensky~~~~~~~~~~~~~~~
10747eb6368SDmitry Preobrazhensky
108d9daee5aSDmitry PreobrazhenskyThis is a special modifier that may be used with *ds_swizzle_b32* instruction only.
10947eb6368SDmitry PreobrazhenskyIt specifies a swizzle pattern in numeric or symbolic form. The default value is 0.
11047eb6368SDmitry Preobrazhensky
11147eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
11247eb6368SDmitry Preobrazhensky    Syntax                                                  Description
11347eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
11447eb6368SDmitry Preobrazhensky    offset:{0..0xFFFF}                                      Specifies a 16-bit swizzle pattern.
11547eb6368SDmitry Preobrazhensky    offset:swizzle(QUAD_PERM,{0..3},{0..3},{0..3},{0..3})   Specifies a quad permute mode pattern
11647eb6368SDmitry Preobrazhensky
11747eb6368SDmitry Preobrazhensky                                                            Each number is a lane *id*.
11847eb6368SDmitry Preobrazhensky    offset:swizzle(BITMASK_PERM, "<mask>")                  Specifies a bitmask permute mode pattern.
11947eb6368SDmitry Preobrazhensky
12047eb6368SDmitry Preobrazhensky                                                            The pattern converts a 5-bit lane *id* to another
12147eb6368SDmitry Preobrazhensky                                                            lane *id* with which the lane interacts.
12247eb6368SDmitry Preobrazhensky
123d9daee5aSDmitry Preobrazhensky                                                            The *mask* is a 5-character sequence which
12447eb6368SDmitry Preobrazhensky                                                            specifies how to transform the bits of the
12547eb6368SDmitry Preobrazhensky                                                            lane *id*.
12647eb6368SDmitry Preobrazhensky
12747eb6368SDmitry Preobrazhensky                                                            The following characters are allowed:
12847eb6368SDmitry Preobrazhensky
12947eb6368SDmitry Preobrazhensky                                                            * "0" - set bit to 0.
13047eb6368SDmitry Preobrazhensky
13147eb6368SDmitry Preobrazhensky                                                            * "1" - set bit to 1.
13247eb6368SDmitry Preobrazhensky
13347eb6368SDmitry Preobrazhensky                                                            * "p" - preserve bit.
13447eb6368SDmitry Preobrazhensky
13547eb6368SDmitry Preobrazhensky                                                            * "i" - inverse bit.
13647eb6368SDmitry Preobrazhensky
13747eb6368SDmitry Preobrazhensky    offset:swizzle(BROADCAST,{2..32},{0..N})                Specifies a broadcast mode.
13847eb6368SDmitry Preobrazhensky
13947eb6368SDmitry Preobrazhensky                                                            Broadcasts the value of any particular lane to
14047eb6368SDmitry Preobrazhensky                                                            all lanes in its group.
14147eb6368SDmitry Preobrazhensky
14247eb6368SDmitry Preobrazhensky                                                            The first numeric parameter is a group
14347eb6368SDmitry Preobrazhensky                                                            size and must be equal to 2, 4, 8, 16 or 32.
14447eb6368SDmitry Preobrazhensky
14547eb6368SDmitry Preobrazhensky                                                            The second numeric parameter is an index of the
146d9daee5aSDmitry Preobrazhensky                                                            lane being broadcast.
14747eb6368SDmitry Preobrazhensky
14847eb6368SDmitry Preobrazhensky                                                            The index must not exceed group size.
14947eb6368SDmitry Preobrazhensky    offset:swizzle(SWAP,{1..16})                            Specifies a swap mode.
15047eb6368SDmitry Preobrazhensky
15147eb6368SDmitry Preobrazhensky                                                            Swaps the neighboring groups of
15247eb6368SDmitry Preobrazhensky                                                            1, 2, 4, 8 or 16 lanes.
15347eb6368SDmitry Preobrazhensky    offset:swizzle(REVERSE,{2..32})                         Specifies a reverse mode.
15447eb6368SDmitry Preobrazhensky
15547eb6368SDmitry Preobrazhensky                                                            Reverses the lanes for groups of 2, 4, 8, 16 or 32 lanes.
15647eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
15747eb6368SDmitry Preobrazhensky
158d9daee5aSDmitry PreobrazhenskyNote: numeric values may be specified as either
159d9daee5aSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
16047eb6368SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
16147eb6368SDmitry Preobrazhensky
16247eb6368SDmitry PreobrazhenskyExamples:
16347eb6368SDmitry Preobrazhensky
1641fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
16547eb6368SDmitry Preobrazhensky
16647eb6368SDmitry Preobrazhensky  offset:255
16747eb6368SDmitry Preobrazhensky  offset:0xffff
16847eb6368SDmitry Preobrazhensky  offset:swizzle(QUAD_PERM, 0, 1, 2, 3)
16947eb6368SDmitry Preobrazhensky  offset:swizzle(BITMASK_PERM, "01pi0")
17047eb6368SDmitry Preobrazhensky  offset:swizzle(BROADCAST, 2, 0)
17147eb6368SDmitry Preobrazhensky  offset:swizzle(SWAP, 8)
17247eb6368SDmitry Preobrazhensky  offset:swizzle(REVERSE, 30 + 2)
17347eb6368SDmitry Preobrazhensky
17447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_gds:
17547eb6368SDmitry Preobrazhensky
17647eb6368SDmitry Preobrazhenskygds
17747eb6368SDmitry Preobrazhensky~~~
17847eb6368SDmitry Preobrazhensky
17947eb6368SDmitry PreobrazhenskySpecifies whether to use GDS or LDS memory (LDS is the default).
18047eb6368SDmitry Preobrazhensky
18147eb6368SDmitry Preobrazhensky    ======================================== ================================================
18247eb6368SDmitry Preobrazhensky    Syntax                                   Description
18347eb6368SDmitry Preobrazhensky    ======================================== ================================================
18447eb6368SDmitry Preobrazhensky    gds                                      Use GDS memory.
18547eb6368SDmitry Preobrazhensky    ======================================== ================================================
18647eb6368SDmitry Preobrazhensky
18747eb6368SDmitry Preobrazhensky
18847eb6368SDmitry PreobrazhenskyEXP Modifiers
18947eb6368SDmitry Preobrazhensky-------------
19047eb6368SDmitry Preobrazhensky
19147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_done:
19247eb6368SDmitry Preobrazhensky
19347eb6368SDmitry Preobrazhenskydone
19447eb6368SDmitry Preobrazhensky~~~~
19547eb6368SDmitry Preobrazhensky
196cef9d421SDmitry PreobrazhenskySpecifies if this is the last export from the shader to the target. By default,
197d9daee5aSDmitry Preobrazhenskyan *export* instruction does not finish an export sequence.
19847eb6368SDmitry Preobrazhensky
19947eb6368SDmitry Preobrazhensky    ======================================== ================================================
20047eb6368SDmitry Preobrazhensky    Syntax                                   Description
20147eb6368SDmitry Preobrazhensky    ======================================== ================================================
20247eb6368SDmitry Preobrazhensky    done                                     Indicates the last export operation.
20347eb6368SDmitry Preobrazhensky    ======================================== ================================================
20447eb6368SDmitry Preobrazhensky
20547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_compr:
20647eb6368SDmitry Preobrazhensky
20747eb6368SDmitry Preobrazhenskycompr
20847eb6368SDmitry Preobrazhensky~~~~~
20947eb6368SDmitry Preobrazhensky
210d9daee5aSDmitry PreobrazhenskyIndicates if the data is compressed (data is not compressed by default).
21147eb6368SDmitry Preobrazhensky
21247eb6368SDmitry Preobrazhensky    ======================================== ================================================
21347eb6368SDmitry Preobrazhensky    Syntax                                   Description
21447eb6368SDmitry Preobrazhensky    ======================================== ================================================
215d9daee5aSDmitry Preobrazhensky    compr                                    Data is compressed.
21647eb6368SDmitry Preobrazhensky    ======================================== ================================================
21747eb6368SDmitry Preobrazhensky
21847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vm:
21947eb6368SDmitry Preobrazhensky
22047eb6368SDmitry Preobrazhenskyvm
22147eb6368SDmitry Preobrazhensky~~
22247eb6368SDmitry Preobrazhensky
223d9daee5aSDmitry PreobrazhenskySpecifies if the :ref:`exec<amdgpu_synid_exec>` mask is valid for this *export* instruction
224d9daee5aSDmitry Preobrazhensky(the mask is not valid by default).
22547eb6368SDmitry Preobrazhensky
22647eb6368SDmitry Preobrazhensky    ======================================== ================================================
22747eb6368SDmitry Preobrazhensky    Syntax                                   Description
22847eb6368SDmitry Preobrazhensky    ======================================== ================================================
229d9daee5aSDmitry Preobrazhensky    vm                                       Set the flag indicating a valid
230d9daee5aSDmitry Preobrazhensky                                             :ref:`exec<amdgpu_synid_exec>` mask.
23147eb6368SDmitry Preobrazhensky    ======================================== ================================================
23247eb6368SDmitry Preobrazhensky
233b8e1071aSDmitry Preobrazhensky.. _amdgpu_synid_row_en:
234b8e1071aSDmitry Preobrazhensky
235b8e1071aSDmitry Preobrazhenskyrow_en
236b8e1071aSDmitry Preobrazhensky~~~~~~
237b8e1071aSDmitry Preobrazhensky
238b8e1071aSDmitry PreobrazhenskySpecifies whether to export one row or multiple rows of data.
239b8e1071aSDmitry Preobrazhensky
240b8e1071aSDmitry Preobrazhensky    ======================================== ================================================
241b8e1071aSDmitry Preobrazhensky    Syntax                                   Description
242b8e1071aSDmitry Preobrazhensky    ======================================== ================================================
243b8e1071aSDmitry Preobrazhensky    row_en                                   Export multiple rows using row index from M0.
244b8e1071aSDmitry Preobrazhensky    ======================================== ================================================
245b8e1071aSDmitry Preobrazhensky
24647eb6368SDmitry PreobrazhenskyFLAT Modifiers
24747eb6368SDmitry Preobrazhensky--------------
24847eb6368SDmitry Preobrazhensky
24947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset12:
25047eb6368SDmitry Preobrazhensky
251ddac5c9bSDmitry Preobrazhenskyoffset12
252ddac5c9bSDmitry Preobrazhensky~~~~~~~~
25347eb6368SDmitry Preobrazhensky
25447eb6368SDmitry PreobrazhenskySpecifies an immediate unsigned 12-bit offset, in bytes. The default value is 0.
25547eb6368SDmitry Preobrazhensky
256b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
25747eb6368SDmitry Preobrazhensky    Syntax            Description
258b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
25947eb6368SDmitry Preobrazhensky    offset:{0..4095}  Specifies a 12-bit unsigned offset as a positive
260b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
261b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
262b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
26347eb6368SDmitry Preobrazhensky
26447eb6368SDmitry PreobrazhenskyExamples:
26547eb6368SDmitry Preobrazhensky
2661fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
26747eb6368SDmitry Preobrazhensky
26847eb6368SDmitry Preobrazhensky  offset:4095
269b9683d3cSDmitry Preobrazhensky  offset:x-0xff
27047eb6368SDmitry Preobrazhensky
271ddac5c9bSDmitry Preobrazhensky.. _amdgpu_synid_flat_offset13s:
27247eb6368SDmitry Preobrazhensky
273ddac5c9bSDmitry Preobrazhenskyoffset13s
274ddac5c9bSDmitry Preobrazhensky~~~~~~~~~
27547eb6368SDmitry Preobrazhensky
27647eb6368SDmitry PreobrazhenskySpecifies an immediate signed 13-bit offset, in bytes. The default value is 0.
27747eb6368SDmitry Preobrazhensky
278b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
27947eb6368SDmitry Preobrazhensky    Syntax                Description
280b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
281ddac5c9bSDmitry Preobrazhensky    offset:{-4096..4095}  Specifies a 13-bit signed offset as an
282b9683d3cSDmitry Preobrazhensky                          :ref:`integer number <amdgpu_synid_integer_number>`
283b9683d3cSDmitry Preobrazhensky                          or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
284b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
28547eb6368SDmitry Preobrazhensky
28647eb6368SDmitry PreobrazhenskyExamples:
28747eb6368SDmitry Preobrazhensky
2881fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
28947eb6368SDmitry Preobrazhensky
29047eb6368SDmitry Preobrazhensky  offset:-4000
29147eb6368SDmitry Preobrazhensky  offset:0x10
292b9683d3cSDmitry Preobrazhensky  offset:-x
29347eb6368SDmitry Preobrazhensky
294cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset12s:
295cef9d421SDmitry Preobrazhensky
296cef9d421SDmitry Preobrazhenskyoffset12s
297cef9d421SDmitry Preobrazhensky~~~~~~~~~
298cef9d421SDmitry Preobrazhensky
299cef9d421SDmitry PreobrazhenskySpecifies an immediate signed 12-bit offset, in bytes. The default value is 0.
300cef9d421SDmitry Preobrazhensky
301b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
302cef9d421SDmitry Preobrazhensky    Syntax                Description
303b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
304cef9d421SDmitry Preobrazhensky    offset:{-2048..2047}  Specifies a 12-bit signed offset as an
305b9683d3cSDmitry Preobrazhensky                          :ref:`integer number <amdgpu_synid_integer_number>`
306b9683d3cSDmitry Preobrazhensky                          or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
307b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
308cef9d421SDmitry Preobrazhensky
309cef9d421SDmitry PreobrazhenskyExamples:
310cef9d421SDmitry Preobrazhensky
311cef9d421SDmitry Preobrazhensky.. parsed-literal::
312cef9d421SDmitry Preobrazhensky
313cef9d421SDmitry Preobrazhensky  offset:-2000
314cef9d421SDmitry Preobrazhensky  offset:0x10
315b9683d3cSDmitry Preobrazhensky  offset:-x+y
316cef9d421SDmitry Preobrazhensky
317cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset11:
318cef9d421SDmitry Preobrazhensky
319cef9d421SDmitry Preobrazhenskyoffset11
320cef9d421SDmitry Preobrazhensky~~~~~~~~
321cef9d421SDmitry Preobrazhensky
322cef9d421SDmitry PreobrazhenskySpecifies an immediate unsigned 11-bit offset, in bytes. The default value is 0.
323cef9d421SDmitry Preobrazhensky
324b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
325cef9d421SDmitry Preobrazhensky    Syntax            Description
326b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
327cef9d421SDmitry Preobrazhensky    offset:{0..2047}  Specifies an 11-bit unsigned offset as a positive
328b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
329b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
330b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
331cef9d421SDmitry Preobrazhensky
332cef9d421SDmitry PreobrazhenskyExamples:
333cef9d421SDmitry Preobrazhensky
334cef9d421SDmitry Preobrazhensky.. parsed-literal::
335cef9d421SDmitry Preobrazhensky
336cef9d421SDmitry Preobrazhensky  offset:2047
337b9683d3cSDmitry Preobrazhensky  offset:x+0xff
338cef9d421SDmitry Preobrazhensky
339cef9d421SDmitry Preobrazhenskydlc
340cef9d421SDmitry Preobrazhensky~~~
341cef9d421SDmitry Preobrazhensky
342d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`.
343cef9d421SDmitry Preobrazhensky
34447eb6368SDmitry Preobrazhenskyglc
34547eb6368SDmitry Preobrazhensky~~~
34647eb6368SDmitry Preobrazhensky
34747eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
34847eb6368SDmitry Preobrazhensky
349cef9d421SDmitry Preobrazhenskylds
350cef9d421SDmitry Preobrazhensky~~~
351cef9d421SDmitry Preobrazhensky
352d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_lds>`.
353cef9d421SDmitry Preobrazhensky
35447eb6368SDmitry Preobrazhenskyslc
35547eb6368SDmitry Preobrazhensky~~~
35647eb6368SDmitry Preobrazhensky
35747eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
35847eb6368SDmitry Preobrazhensky
35947eb6368SDmitry Preobrazhenskytfe
36047eb6368SDmitry Preobrazhensky~~~
36147eb6368SDmitry Preobrazhensky
36247eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
36347eb6368SDmitry Preobrazhensky
36447eb6368SDmitry Preobrazhenskynv
36547eb6368SDmitry Preobrazhensky~~
36647eb6368SDmitry Preobrazhensky
36747eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nv>`.
36847eb6368SDmitry Preobrazhensky
36962c46093SDmitry Preobrazhenskysc0
37062c46093SDmitry Preobrazhensky~~~
37162c46093SDmitry Preobrazhensky
37262c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_sc0>`.
37362c46093SDmitry Preobrazhensky
37462c46093SDmitry Preobrazhenskysc1
37562c46093SDmitry Preobrazhensky~~~
37662c46093SDmitry Preobrazhensky
37762c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_sc1>`.
37862c46093SDmitry Preobrazhensky
37962c46093SDmitry Preobrazhenskynt
38062c46093SDmitry Preobrazhensky~~
38162c46093SDmitry Preobrazhensky
38262c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nt>`.
38362c46093SDmitry Preobrazhensky
38447eb6368SDmitry PreobrazhenskyMIMG Modifiers
38547eb6368SDmitry Preobrazhensky--------------
38647eb6368SDmitry Preobrazhensky
38747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dmask:
38847eb6368SDmitry Preobrazhensky
38947eb6368SDmitry Preobrazhenskydmask
39047eb6368SDmitry Preobrazhensky~~~~~
39147eb6368SDmitry Preobrazhensky
392d9daee5aSDmitry PreobrazhenskySpecifies which channels (image components) are used by the operation.
393d9daee5aSDmitry PreobrazhenskyBy default, no channels are used.
39447eb6368SDmitry Preobrazhensky
395b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
39647eb6368SDmitry Preobrazhensky    Syntax          Description
397b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
39847eb6368SDmitry Preobrazhensky    dmask:{0..15}   Specifies image channels as a positive
399b9683d3cSDmitry Preobrazhensky                    :ref:`integer number <amdgpu_synid_integer_number>`
400b9683d3cSDmitry Preobrazhensky                    or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
40147eb6368SDmitry Preobrazhensky
402b9683d3cSDmitry Preobrazhensky                    Each bit corresponds to one of 4 image components (RGBA).
40347eb6368SDmitry Preobrazhensky
404d9daee5aSDmitry Preobrazhensky                    If the specified bit value is 0, the image component is not used,
405d9daee5aSDmitry Preobrazhensky                    while value 1 means that the component is used.
406b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
40747eb6368SDmitry Preobrazhensky
408d9daee5aSDmitry PreobrazhenskyThis modifier has some limitations depending on the instruction kind:
40947eb6368SDmitry Preobrazhensky
41047eb6368SDmitry Preobrazhensky    =================================================== ========================
41147eb6368SDmitry Preobrazhensky    Instruction Kind                                    Valid dmask Values
41247eb6368SDmitry Preobrazhensky    =================================================== ========================
41347eb6368SDmitry Preobrazhensky    32-bit atomic *cmpswap*                             0x3
41447eb6368SDmitry Preobrazhensky    32-bit atomic instructions except for *cmpswap*     0x1
41547eb6368SDmitry Preobrazhensky    64-bit atomic *cmpswap*                             0xF
41647eb6368SDmitry Preobrazhensky    64-bit atomic instructions except for *cmpswap*     0x3
41747eb6368SDmitry Preobrazhensky    *gather4*                                           0x1, 0x2, 0x4, 0x8
418b8e1071aSDmitry Preobrazhensky    GFX11+ *msaa_load*                                  0x1, 0x2, 0x4, 0x8
41947eb6368SDmitry Preobrazhensky    Other instructions                                  any value
42047eb6368SDmitry Preobrazhensky    =================================================== ========================
42147eb6368SDmitry Preobrazhensky
42247eb6368SDmitry PreobrazhenskyExamples:
42347eb6368SDmitry Preobrazhensky
4241fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
42547eb6368SDmitry Preobrazhensky
42647eb6368SDmitry Preobrazhensky  dmask:0xf
42747eb6368SDmitry Preobrazhensky  dmask:0b1111
428b9683d3cSDmitry Preobrazhensky  dmask:x|y|z
42947eb6368SDmitry Preobrazhensky
43047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_unorm:
43147eb6368SDmitry Preobrazhensky
43247eb6368SDmitry Preobrazhenskyunorm
43347eb6368SDmitry Preobrazhensky~~~~~
43447eb6368SDmitry Preobrazhensky
43547eb6368SDmitry PreobrazhenskySpecifies whether the address is normalized or not (the address is normalized by default).
43647eb6368SDmitry Preobrazhensky
43747eb6368SDmitry Preobrazhensky    ======================== ========================================
43847eb6368SDmitry Preobrazhensky    Syntax                   Description
43947eb6368SDmitry Preobrazhensky    ======================== ========================================
440d9daee5aSDmitry Preobrazhensky    unorm                    Force the address to be not normalized.
44147eb6368SDmitry Preobrazhensky    ======================== ========================================
44247eb6368SDmitry Preobrazhensky
44347eb6368SDmitry Preobrazhenskyglc
44447eb6368SDmitry Preobrazhensky~~~
44547eb6368SDmitry Preobrazhensky
44647eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
44747eb6368SDmitry Preobrazhensky
44847eb6368SDmitry Preobrazhenskyslc
44947eb6368SDmitry Preobrazhensky~~~
45047eb6368SDmitry Preobrazhensky
45147eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
45247eb6368SDmitry Preobrazhensky
45347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_r128:
45447eb6368SDmitry Preobrazhensky
45547eb6368SDmitry Preobrazhenskyr128
45647eb6368SDmitry Preobrazhensky~~~~
45747eb6368SDmitry Preobrazhensky
45847eb6368SDmitry PreobrazhenskySpecifies texture resource size. The default size is 256 bits.
45947eb6368SDmitry Preobrazhensky
46047eb6368SDmitry Preobrazhensky    =================== ================================================
46147eb6368SDmitry Preobrazhensky    Syntax              Description
46247eb6368SDmitry Preobrazhensky    =================== ================================================
46347eb6368SDmitry Preobrazhensky    r128                Specifies 128 bits texture resource size.
46447eb6368SDmitry Preobrazhensky    =================== ================================================
46547eb6368SDmitry Preobrazhensky
466d9daee5aSDmitry Preobrazhensky.. WARNING:: Using this modifier shall decrease *rsrc* operand size from 8 to 4 dwords, \
467d9daee5aSDmitry Preobrazhensky             but assembler does not currently support this feature.
46847eb6368SDmitry Preobrazhensky
46947eb6368SDmitry Preobrazhenskytfe
47047eb6368SDmitry Preobrazhensky~~~
47147eb6368SDmitry Preobrazhensky
47247eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
47347eb6368SDmitry Preobrazhensky
47447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_lwe:
47547eb6368SDmitry Preobrazhensky
47647eb6368SDmitry Preobrazhenskylwe
47747eb6368SDmitry Preobrazhensky~~~
47847eb6368SDmitry Preobrazhensky
47947eb6368SDmitry PreobrazhenskySpecifies LOD warning status (LOD warning is disabled by default).
48047eb6368SDmitry Preobrazhensky
48147eb6368SDmitry Preobrazhensky    ======================================== ================================================
48247eb6368SDmitry Preobrazhensky    Syntax                                   Description
48347eb6368SDmitry Preobrazhensky    ======================================== ================================================
48447eb6368SDmitry Preobrazhensky    lwe                                      Enables LOD warning.
48547eb6368SDmitry Preobrazhensky    ======================================== ================================================
48647eb6368SDmitry Preobrazhensky
48747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_da:
48847eb6368SDmitry Preobrazhensky
48947eb6368SDmitry Preobrazhenskyda
49047eb6368SDmitry Preobrazhensky~~
49147eb6368SDmitry Preobrazhensky
492d9daee5aSDmitry PreobrazhenskySpecifies if an array index must be sent to TA. By default, the array index is not sent.
49347eb6368SDmitry Preobrazhensky
49447eb6368SDmitry Preobrazhensky    ======================================== ================================================
49547eb6368SDmitry Preobrazhensky    Syntax                                   Description
49647eb6368SDmitry Preobrazhensky    ======================================== ================================================
497d9daee5aSDmitry Preobrazhensky    da                                       Send an array index to TA.
49847eb6368SDmitry Preobrazhensky    ======================================== ================================================
49947eb6368SDmitry Preobrazhensky
50047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_d16:
50147eb6368SDmitry Preobrazhensky
50247eb6368SDmitry Preobrazhenskyd16
50347eb6368SDmitry Preobrazhensky~~~
50447eb6368SDmitry Preobrazhensky
505d9daee5aSDmitry PreobrazhenskySpecifies data size: 16 or 32 bits (32 bits by default).
50647eb6368SDmitry Preobrazhensky
50747eb6368SDmitry Preobrazhensky    ======================================== ================================================
50847eb6368SDmitry Preobrazhensky    Syntax                                   Description
50947eb6368SDmitry Preobrazhensky    ======================================== ================================================
51047eb6368SDmitry Preobrazhensky    d16                                      Enables 16-bits data mode.
51147eb6368SDmitry Preobrazhensky
51247eb6368SDmitry Preobrazhensky                                             On loads, convert data in memory to 16-bit
51347eb6368SDmitry Preobrazhensky                                             format before storing it in VGPRs.
51447eb6368SDmitry Preobrazhensky
51547eb6368SDmitry Preobrazhensky                                             For stores, convert 16-bit data in VGPRs to
516d9daee5aSDmitry Preobrazhensky                                             32 bits before writing the values to memory.
51747eb6368SDmitry Preobrazhensky
51847eb6368SDmitry Preobrazhensky                                             Note that GFX8.0 does not support data packing.
51947eb6368SDmitry Preobrazhensky                                             Each 16-bit data element occupies 1 VGPR.
52047eb6368SDmitry Preobrazhensky
521d9daee5aSDmitry Preobrazhensky                                             GFX8.1 and GFX9+ support data packing.
52247eb6368SDmitry Preobrazhensky                                             Each pair of 16-bit data elements
52347eb6368SDmitry Preobrazhensky                                             occupies 1 VGPR.
52447eb6368SDmitry Preobrazhensky    ======================================== ================================================
52547eb6368SDmitry Preobrazhensky
52647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_a16:
52747eb6368SDmitry Preobrazhensky
52847eb6368SDmitry Preobrazhenskya16
52947eb6368SDmitry Preobrazhensky~~~
53047eb6368SDmitry Preobrazhensky
531d9daee5aSDmitry PreobrazhenskySpecifies the size of image address components: 16 or 32 bits (32 bits by default).
53247eb6368SDmitry Preobrazhensky
53347eb6368SDmitry Preobrazhensky    ======================================== ================================================
53447eb6368SDmitry Preobrazhensky    Syntax                                   Description
53547eb6368SDmitry Preobrazhensky    ======================================== ================================================
53647eb6368SDmitry Preobrazhensky    a16                                      Enables 16-bits image address components.
53747eb6368SDmitry Preobrazhensky    ======================================== ================================================
53847eb6368SDmitry Preobrazhensky
539cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dim:
540cef9d421SDmitry Preobrazhensky
541cef9d421SDmitry Preobrazhenskydim
542cef9d421SDmitry Preobrazhensky~~~
543cef9d421SDmitry Preobrazhensky
544cef9d421SDmitry PreobrazhenskySpecifies surface dimension. This is a mandatory modifier. There is no default value.
545cef9d421SDmitry Preobrazhensky
546cef9d421SDmitry Preobrazhensky    =============================== =========================================================
547cef9d421SDmitry Preobrazhensky    Syntax                          Description
548cef9d421SDmitry Preobrazhensky    =============================== =========================================================
549cef9d421SDmitry Preobrazhensky    dim:1D                          One-dimensional image.
550cef9d421SDmitry Preobrazhensky    dim:2D                          Two-dimensional image.
551cef9d421SDmitry Preobrazhensky    dim:3D                          Three-dimensional image.
552cef9d421SDmitry Preobrazhensky    dim:CUBE                        Cubemap array.
553cef9d421SDmitry Preobrazhensky    dim:1D_ARRAY                    One-dimensional image array.
554cef9d421SDmitry Preobrazhensky    dim:2D_ARRAY                    Two-dimensional image array.
555cef9d421SDmitry Preobrazhensky    dim:2D_MSAA                     Two-dimensional multi-sample auto-aliasing image.
556cef9d421SDmitry Preobrazhensky    dim:2D_MSAA_ARRAY               Two-dimensional multi-sample auto-aliasing image array.
557cef9d421SDmitry Preobrazhensky    =============================== =========================================================
558cef9d421SDmitry Preobrazhensky
559cef9d421SDmitry PreobrazhenskyThe following table defines an alternative syntax which is supported
560cef9d421SDmitry Preobrazhenskyfor compatibility with SP3 assembler:
561cef9d421SDmitry Preobrazhensky
562cef9d421SDmitry Preobrazhensky    =============================== =========================================================
563cef9d421SDmitry Preobrazhensky    Syntax                          Description
564cef9d421SDmitry Preobrazhensky    =============================== =========================================================
565cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_1D              One-dimensional image.
566cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D              Two-dimensional image.
567cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_3D              Three-dimensional image.
568cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_CUBE            Cubemap array.
569cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_1D_ARRAY        One-dimensional image array.
570cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_ARRAY        Two-dimensional image array.
571cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_MSAA         Two-dimensional multi-sample auto-aliasing image.
572cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_MSAA_ARRAY   Two-dimensional multi-sample auto-aliasing image array.
573cef9d421SDmitry Preobrazhensky    =============================== =========================================================
574cef9d421SDmitry Preobrazhensky
575cef9d421SDmitry Preobrazhenskydlc
576cef9d421SDmitry Preobrazhensky~~~
577cef9d421SDmitry Preobrazhensky
578d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`.
579cef9d421SDmitry Preobrazhensky
58047eb6368SDmitry PreobrazhenskyMiscellaneous Modifiers
58147eb6368SDmitry Preobrazhensky-----------------------
58247eb6368SDmitry Preobrazhensky
583cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dlc:
584cef9d421SDmitry Preobrazhensky
585cef9d421SDmitry Preobrazhenskydlc
586cef9d421SDmitry Preobrazhensky~~~
587cef9d421SDmitry Preobrazhensky
588cef9d421SDmitry PreobrazhenskyControls device level cache policy for memory operations. Used for synchronization.
589d9daee5aSDmitry PreobrazhenskyWhen specified, forces operation to bypass device level cache, making the operation device
590cef9d421SDmitry Preobrazhenskylevel coherent. By default, instructions use device level cache.
591cef9d421SDmitry Preobrazhensky
592cef9d421SDmitry Preobrazhensky    ======================================== ================================================
593cef9d421SDmitry Preobrazhensky    Syntax                                   Description
594cef9d421SDmitry Preobrazhensky    ======================================== ================================================
595cef9d421SDmitry Preobrazhensky    dlc                                      Bypass device level cache.
596cef9d421SDmitry Preobrazhensky    ======================================== ================================================
597cef9d421SDmitry Preobrazhensky
59847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_glc:
59947eb6368SDmitry Preobrazhensky
60047eb6368SDmitry Preobrazhenskyglc
60147eb6368SDmitry Preobrazhensky~~~
60247eb6368SDmitry Preobrazhensky
603d9daee5aSDmitry PreobrazhenskyFor atomic opcodes, this modifier indicates that the instruction returns the value from memory
604d9daee5aSDmitry Preobrazhenskybefore the operation. For other opcodes, it is used together with :ref:`slc<amdgpu_synid_slc>`
605d9daee5aSDmitry Preobrazhenskyto specify cache policy.
60647eb6368SDmitry Preobrazhensky
607d9daee5aSDmitry PreobrazhenskyThe default value is off (0).
60847eb6368SDmitry Preobrazhensky
60947eb6368SDmitry Preobrazhensky    ======================================== ================================================
61047eb6368SDmitry Preobrazhensky    Syntax                                   Description
61147eb6368SDmitry Preobrazhensky    ======================================== ================================================
61247eb6368SDmitry Preobrazhensky    glc                                      Set glc bit to 1.
61347eb6368SDmitry Preobrazhensky    ======================================== ================================================
61447eb6368SDmitry Preobrazhensky
615cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_lds:
616cef9d421SDmitry Preobrazhensky
617cef9d421SDmitry Preobrazhenskylds
618cef9d421SDmitry Preobrazhensky~~~
619cef9d421SDmitry Preobrazhensky
620cef9d421SDmitry PreobrazhenskySpecifies where to store the result: VGPRs or LDS (VGPRs by default).
621cef9d421SDmitry Preobrazhensky
622cef9d421SDmitry Preobrazhensky    ======================================== ===========================
623cef9d421SDmitry Preobrazhensky    Syntax                                   Description
624cef9d421SDmitry Preobrazhensky    ======================================== ===========================
625d9daee5aSDmitry Preobrazhensky    lds                                      Store the result in LDS.
626cef9d421SDmitry Preobrazhensky    ======================================== ===========================
627cef9d421SDmitry Preobrazhensky
628cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_nv:
629cef9d421SDmitry Preobrazhensky
630cef9d421SDmitry Preobrazhenskynv
631cef9d421SDmitry Preobrazhensky~~
632cef9d421SDmitry Preobrazhensky
633d9daee5aSDmitry PreobrazhenskySpecifies if the instruction is operating on non-volatile memory.
634d9daee5aSDmitry PreobrazhenskyBy default, memory is volatile.
635cef9d421SDmitry Preobrazhensky
636cef9d421SDmitry Preobrazhensky    ======================================== ================================================
637cef9d421SDmitry Preobrazhensky    Syntax                                   Description
638cef9d421SDmitry Preobrazhensky    ======================================== ================================================
639d9daee5aSDmitry Preobrazhensky    nv                                       Indicates that the instruction operates on
640cef9d421SDmitry Preobrazhensky                                             non-volatile memory.
641cef9d421SDmitry Preobrazhensky    ======================================== ================================================
642cef9d421SDmitry Preobrazhensky
64347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_slc:
64447eb6368SDmitry Preobrazhensky
64547eb6368SDmitry Preobrazhenskyslc
64647eb6368SDmitry Preobrazhensky~~~
64747eb6368SDmitry Preobrazhensky
648d9daee5aSDmitry PreobrazhenskyControls behavior of L2 cache. The default value is off (0).
64947eb6368SDmitry Preobrazhensky
65047eb6368SDmitry Preobrazhensky    ======================================== ================================================
65147eb6368SDmitry Preobrazhensky    Syntax                                   Description
65247eb6368SDmitry Preobrazhensky    ======================================== ================================================
65347eb6368SDmitry Preobrazhensky    slc                                      Set slc bit to 1.
65447eb6368SDmitry Preobrazhensky    ======================================== ================================================
65547eb6368SDmitry Preobrazhensky
65647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_tfe:
65747eb6368SDmitry Preobrazhensky
65847eb6368SDmitry Preobrazhenskytfe
65947eb6368SDmitry Preobrazhensky~~~
66047eb6368SDmitry Preobrazhensky
66147eb6368SDmitry PreobrazhenskyControls access to partially resident textures. The default value is off (0).
66247eb6368SDmitry Preobrazhensky
66347eb6368SDmitry Preobrazhensky    ======================================== ================================================
66447eb6368SDmitry Preobrazhensky    Syntax                                   Description
66547eb6368SDmitry Preobrazhensky    ======================================== ================================================
66647eb6368SDmitry Preobrazhensky    tfe                                      Set tfe bit to 1.
66747eb6368SDmitry Preobrazhensky    ======================================== ================================================
66847eb6368SDmitry Preobrazhensky
66962c46093SDmitry Preobrazhensky.. _amdgpu_synid_sc0:
67062c46093SDmitry Preobrazhensky
67162c46093SDmitry Preobrazhenskysc0
67262c46093SDmitry Preobrazhensky~~~
67362c46093SDmitry Preobrazhensky
674d9daee5aSDmitry PreobrazhenskyFor atomic opcodes, this modifier indicates that the instruction returns the value from memory
675d9daee5aSDmitry Preobrazhenskybefore the operation. For other opcodes, it is used together with :ref:`sc1<amdgpu_synid_sc1>`
676d9daee5aSDmitry Preobrazhenskyto specify cache policy.
67762c46093SDmitry Preobrazhensky
67862c46093SDmitry Preobrazhensky    ======================================== ================================================
67962c46093SDmitry Preobrazhensky    Syntax                                   Description
68062c46093SDmitry Preobrazhensky    ======================================== ================================================
68162c46093SDmitry Preobrazhensky    sc0                                      Set sc0 bit to 1.
68262c46093SDmitry Preobrazhensky    ======================================== ================================================
68362c46093SDmitry Preobrazhensky
68462c46093SDmitry Preobrazhensky.. _amdgpu_synid_sc1:
68562c46093SDmitry Preobrazhensky
68662c46093SDmitry Preobrazhenskysc1
68762c46093SDmitry Preobrazhensky~~~
68862c46093SDmitry Preobrazhensky
68962c46093SDmitry PreobrazhenskyThis modifier is used together with :ref:`sc0<amdgpu_synid_sc0>` to specify cache
69062c46093SDmitry Preobrazhenskypolicy.
69162c46093SDmitry Preobrazhensky
69262c46093SDmitry Preobrazhensky    ======================================== ================================================
69362c46093SDmitry Preobrazhensky    Syntax                                   Description
69462c46093SDmitry Preobrazhensky    ======================================== ================================================
69562c46093SDmitry Preobrazhensky    sc1                                      Set sc1 bit to 1.
69662c46093SDmitry Preobrazhensky    ======================================== ================================================
69762c46093SDmitry Preobrazhensky
69862c46093SDmitry Preobrazhensky.. _amdgpu_synid_nt:
69962c46093SDmitry Preobrazhensky
70062c46093SDmitry Preobrazhenskynt
70162c46093SDmitry Preobrazhensky~~
70262c46093SDmitry Preobrazhensky
70362c46093SDmitry PreobrazhenskyIndicates an operation with non-temporal data.
70462c46093SDmitry Preobrazhensky
70562c46093SDmitry Preobrazhensky    ======================================== ================================================
70662c46093SDmitry Preobrazhensky    Syntax                                   Description
70762c46093SDmitry Preobrazhensky    ======================================== ================================================
70862c46093SDmitry Preobrazhensky    nt                                       Set nt bit to 1.
70962c46093SDmitry Preobrazhensky    ======================================== ================================================
71062c46093SDmitry Preobrazhensky
71147eb6368SDmitry PreobrazhenskyMUBUF/MTBUF Modifiers
71247eb6368SDmitry Preobrazhensky---------------------
71347eb6368SDmitry Preobrazhensky
71447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_idxen:
71547eb6368SDmitry Preobrazhensky
71647eb6368SDmitry Preobrazhenskyidxen
71747eb6368SDmitry Preobrazhensky~~~~~
71847eb6368SDmitry Preobrazhensky
719d9daee5aSDmitry PreobrazhenskySpecifies whether address components include an index. By default, the index is not used.
72047eb6368SDmitry Preobrazhensky
721d9daee5aSDmitry PreobrazhenskyMay be used together with :ref:`offen<amdgpu_synid_offen>`.
72247eb6368SDmitry Preobrazhensky
72347eb6368SDmitry PreobrazhenskyCannot be used with :ref:`addr64<amdgpu_synid_addr64>`.
72447eb6368SDmitry Preobrazhensky
72547eb6368SDmitry Preobrazhensky    ======================================== ================================================
72647eb6368SDmitry Preobrazhensky    Syntax                                   Description
72747eb6368SDmitry Preobrazhensky    ======================================== ================================================
72847eb6368SDmitry Preobrazhensky    idxen                                    Address components include an index.
72947eb6368SDmitry Preobrazhensky    ======================================== ================================================
73047eb6368SDmitry Preobrazhensky
73147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_offen:
73247eb6368SDmitry Preobrazhensky
73347eb6368SDmitry Preobrazhenskyoffen
73447eb6368SDmitry Preobrazhensky~~~~~
73547eb6368SDmitry Preobrazhensky
736d9daee5aSDmitry PreobrazhenskySpecifies whether address components include an offset. By default, the offset is not used.
73747eb6368SDmitry Preobrazhensky
738d9daee5aSDmitry PreobrazhenskyMay be used together with :ref:`idxen<amdgpu_synid_idxen>`.
73947eb6368SDmitry Preobrazhensky
74047eb6368SDmitry PreobrazhenskyCannot be used with :ref:`addr64<amdgpu_synid_addr64>`.
74147eb6368SDmitry Preobrazhensky
74247eb6368SDmitry Preobrazhensky    ======================================== ================================================
74347eb6368SDmitry Preobrazhensky    Syntax                                   Description
74447eb6368SDmitry Preobrazhensky    ======================================== ================================================
74547eb6368SDmitry Preobrazhensky    offen                                    Address components include an offset.
74647eb6368SDmitry Preobrazhensky    ======================================== ================================================
74747eb6368SDmitry Preobrazhensky
74847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_addr64:
74947eb6368SDmitry Preobrazhensky
75047eb6368SDmitry Preobrazhenskyaddr64
75147eb6368SDmitry Preobrazhensky~~~~~~
75247eb6368SDmitry Preobrazhensky
75347eb6368SDmitry PreobrazhenskySpecifies whether a 64-bit address is used. By default, no address is used.
75447eb6368SDmitry Preobrazhensky
755d9daee5aSDmitry PreobrazhenskyCannot be used with :ref:`offen<amdgpu_synid_offen>` and
75647eb6368SDmitry Preobrazhensky:ref:`idxen<amdgpu_synid_idxen>` modifiers.
75747eb6368SDmitry Preobrazhensky
75847eb6368SDmitry Preobrazhensky    ======================================== ================================================
75947eb6368SDmitry Preobrazhensky    Syntax                                   Description
76047eb6368SDmitry Preobrazhensky    ======================================== ================================================
76147eb6368SDmitry Preobrazhensky    addr64                                   A 64-bit address is used.
76247eb6368SDmitry Preobrazhensky    ======================================== ================================================
76347eb6368SDmitry Preobrazhensky
76447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_buf_offset12:
76547eb6368SDmitry Preobrazhensky
766ddac5c9bSDmitry Preobrazhenskyoffset12
767ddac5c9bSDmitry Preobrazhensky~~~~~~~~
76847eb6368SDmitry Preobrazhensky
76947eb6368SDmitry PreobrazhenskySpecifies an immediate unsigned 12-bit offset, in bytes. The default value is 0.
77047eb6368SDmitry Preobrazhensky
771b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
77247eb6368SDmitry Preobrazhensky    Syntax             Description
773b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
77447eb6368SDmitry Preobrazhensky    offset:{0..0xFFF}  Specifies a 12-bit unsigned offset as a positive
775b9683d3cSDmitry Preobrazhensky                       :ref:`integer number <amdgpu_synid_integer_number>`
776b9683d3cSDmitry Preobrazhensky                       or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
777b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
77847eb6368SDmitry Preobrazhensky
77947eb6368SDmitry PreobrazhenskyExamples:
78047eb6368SDmitry Preobrazhensky
7811fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
78247eb6368SDmitry Preobrazhensky
783b9683d3cSDmitry Preobrazhensky  offset:x+y
78447eb6368SDmitry Preobrazhensky  offset:0x10
78547eb6368SDmitry Preobrazhensky
78647eb6368SDmitry Preobrazhenskyglc
78747eb6368SDmitry Preobrazhensky~~~
78847eb6368SDmitry Preobrazhensky
78947eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
79047eb6368SDmitry Preobrazhensky
79147eb6368SDmitry Preobrazhenskyslc
79247eb6368SDmitry Preobrazhensky~~~
79347eb6368SDmitry Preobrazhensky
79447eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
79547eb6368SDmitry Preobrazhensky
79647eb6368SDmitry Preobrazhenskylds
79747eb6368SDmitry Preobrazhensky~~~
79847eb6368SDmitry Preobrazhensky
799cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_lds>`.
80047eb6368SDmitry Preobrazhensky
801cef9d421SDmitry Preobrazhenskydlc
802cef9d421SDmitry Preobrazhensky~~~
803cef9d421SDmitry Preobrazhensky
804d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`.
80547eb6368SDmitry Preobrazhensky
80647eb6368SDmitry Preobrazhenskytfe
80747eb6368SDmitry Preobrazhensky~~~
80847eb6368SDmitry Preobrazhensky
80947eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
81047eb6368SDmitry Preobrazhensky
8113f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_fmt:
81247eb6368SDmitry Preobrazhensky
8133f7985e6SDmitry Preobrazhenskyfmt
8143f7985e6SDmitry Preobrazhensky~~~
8153f7985e6SDmitry Preobrazhensky
8163f7985e6SDmitry PreobrazhenskySpecifies data and numeric formats used by the operation.
8173f7985e6SDmitry PreobrazhenskyThe default numeric format is BUF_NUM_FORMAT_UNORM.
8183f7985e6SDmitry PreobrazhenskyThe default data format is BUF_DATA_FORMAT_8.
8193f7985e6SDmitry Preobrazhensky
8203f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8213f7985e6SDmitry Preobrazhensky    Syntax                                    Description
8223f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
823d9daee5aSDmitry Preobrazhensky    format:{0..127}                           Use a format specified as either an
8243f7985e6SDmitry Preobrazhensky                                              :ref:`integer number<amdgpu_synid_integer_number>` or an
8253f7985e6SDmitry Preobrazhensky                                              :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
8263f7985e6SDmitry Preobrazhensky    format:[<data format>]                    Use the specified data format and
8273f7985e6SDmitry Preobrazhensky                                              default numeric format.
8283f7985e6SDmitry Preobrazhensky    format:[<numeric format>]                 Use the specified numeric format and
8293f7985e6SDmitry Preobrazhensky                                              default data format.
8303f7985e6SDmitry Preobrazhensky    format:[<data format>,<numeric format>]   Use the specified data and numeric formats.
8313f7985e6SDmitry Preobrazhensky    format:[<numeric format>,<data format>]   Use the specified data and numeric formats.
8323f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8333f7985e6SDmitry Preobrazhensky
8343f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_format_data:
8353f7985e6SDmitry Preobrazhensky
8363f7985e6SDmitry PreobrazhenskySupported data formats are defined in the following table:
8373f7985e6SDmitry Preobrazhensky
8383f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8393f7985e6SDmitry Preobrazhensky    Syntax                                    Note
8403f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8413f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_INVALID
842d9daee5aSDmitry Preobrazhensky    BUF_DATA_FORMAT_8                         The default value.
8433f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16
8443f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_8_8
8453f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32
8463f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16_16
8473f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_10_11_11
8483f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_11_11_10
8493f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_10_10_10_2
8503f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_2_10_10_10
8513f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_8_8_8_8
8523f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32
8533f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16_16_16_16
8543f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32_32
8553f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32_32_32
8563f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_RESERVED_15
8573f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8583f7985e6SDmitry Preobrazhensky
8593f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_format_num:
8603f7985e6SDmitry Preobrazhensky
8613f7985e6SDmitry PreobrazhenskySupported numeric formats are defined below:
8623f7985e6SDmitry Preobrazhensky
8633f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8643f7985e6SDmitry Preobrazhensky    Syntax                                    Note
8653f7985e6SDmitry Preobrazhensky    ========================================= ===============================
866d9daee5aSDmitry Preobrazhensky    BUF_NUM_FORMAT_UNORM                      The default value.
8673f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SNORM
8683f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_USCALED
8693f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SSCALED
8703f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_UINT
8713f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SINT
8723f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SNORM_OGL                  GFX7 only.
8733f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_RESERVED_6                 GFX8 and GFX9 only.
8743f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_FLOAT
8753f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8763f7985e6SDmitry Preobrazhensky
8773f7985e6SDmitry PreobrazhenskyExamples:
8783f7985e6SDmitry Preobrazhensky
8793f7985e6SDmitry Preobrazhensky.. parsed-literal::
8803f7985e6SDmitry Preobrazhensky
8813f7985e6SDmitry Preobrazhensky  format:0
8823f7985e6SDmitry Preobrazhensky  format:127
8833f7985e6SDmitry Preobrazhensky  format:[BUF_DATA_FORMAT_16]
8843f7985e6SDmitry Preobrazhensky  format:[BUF_DATA_FORMAT_16,BUF_NUM_FORMAT_SSCALED]
8853f7985e6SDmitry Preobrazhensky  format:[BUF_NUM_FORMAT_FLOAT]
8863f7985e6SDmitry Preobrazhensky
8873f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_ufmt:
8883f7985e6SDmitry Preobrazhensky
8893f7985e6SDmitry Preobrazhenskyufmt
89047eb6368SDmitry Preobrazhensky~~~~
89147eb6368SDmitry Preobrazhensky
8923f7985e6SDmitry PreobrazhenskySpecifies a unified format used by the operation.
8933f7985e6SDmitry PreobrazhenskyThe default format is BUF_FMT_8_UNORM.
89447eb6368SDmitry Preobrazhensky
8953f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8963f7985e6SDmitry Preobrazhensky    Syntax                                    Description
8973f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
898d9daee5aSDmitry Preobrazhensky    format:{0..127}                           Use a unified format specified as either an
8993f7985e6SDmitry Preobrazhensky                                              :ref:`integer number<amdgpu_synid_integer_number>` or an
9003f7985e6SDmitry Preobrazhensky                                              :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
901d9daee5aSDmitry Preobrazhensky                                              Note that unified format numbers are incompatible with
9023f7985e6SDmitry Preobrazhensky                                              format numbers used for pre-GFX10 ISA.
9033f7985e6SDmitry Preobrazhensky    format:[<unified format>]                 Use the specified unified format.
9043f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
90547eb6368SDmitry Preobrazhensky
9063f7985e6SDmitry PreobrazhenskyUnified format is a replacement for :ref:`data<amdgpu_synid_format_data>`
9073f7985e6SDmitry Preobrazhenskyand :ref:`numeric<amdgpu_synid_format_num>` formats. For compatibility with older ISA,
908d9daee5aSDmitry Preobrazhensky:ref:`the syntax with data and numeric formats<amdgpu_synid_fmt>` is still accepted
9093f7985e6SDmitry Preobrazhenskyprovided that the combination of formats can be mapped to a unified format.
91047eb6368SDmitry Preobrazhensky
9113f7985e6SDmitry PreobrazhenskySupported unified formats and equivalent combinations of data and numeric formats
9123f7985e6SDmitry Preobrazhenskyare defined below:
9133f7985e6SDmitry Preobrazhensky
914b8e1071aSDmitry Preobrazhensky    ============================== ============================== ============================= ============
915b8e1071aSDmitry Preobrazhensky    Unified Format Syntax          Equivalent Data Format         Equivalent Numeric Format     Note
916b8e1071aSDmitry Preobrazhensky    ============================== ============================== ============================= ============
9173f7985e6SDmitry Preobrazhensky    BUF_FMT_INVALID                BUF_DATA_FORMAT_INVALID        BUF_NUM_FORMAT_UNORM
9183f7985e6SDmitry Preobrazhensky
9193f7985e6SDmitry Preobrazhensky    BUF_FMT_8_UNORM                BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_UNORM
9203f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SNORM                BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SNORM
9213f7985e6SDmitry Preobrazhensky    BUF_FMT_8_USCALED              BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_USCALED
9223f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SSCALED              BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SSCALED
9233f7985e6SDmitry Preobrazhensky    BUF_FMT_8_UINT                 BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_UINT
9243f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SINT                 BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SINT
9253f7985e6SDmitry Preobrazhensky
9263f7985e6SDmitry Preobrazhensky    BUF_FMT_16_UNORM               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_UNORM
9273f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SNORM               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SNORM
9283f7985e6SDmitry Preobrazhensky    BUF_FMT_16_USCALED             BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_USCALED
9293f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SSCALED             BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SSCALED
9303f7985e6SDmitry Preobrazhensky    BUF_FMT_16_UINT                BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_UINT
9313f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SINT                BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SINT
9323f7985e6SDmitry Preobrazhensky    BUF_FMT_16_FLOAT               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_FLOAT
9333f7985e6SDmitry Preobrazhensky
9343f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_UNORM              BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_UNORM
9353f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SNORM              BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SNORM
9363f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_USCALED            BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_USCALED
9373f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SSCALED            BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SSCALED
9383f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_UINT               BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_UINT
9393f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SINT               BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SINT
9403f7985e6SDmitry Preobrazhensky
9413f7985e6SDmitry Preobrazhensky    BUF_FMT_32_UINT                BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_UINT
9423f7985e6SDmitry Preobrazhensky    BUF_FMT_32_SINT                BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_SINT
9433f7985e6SDmitry Preobrazhensky    BUF_FMT_32_FLOAT               BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_FLOAT
9443f7985e6SDmitry Preobrazhensky
9453f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_UNORM            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_UNORM
9463f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SNORM            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SNORM
9473f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_USCALED          BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_USCALED
9483f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SSCALED          BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SSCALED
9493f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_UINT             BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_UINT
9503f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SINT             BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SINT
9513f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_FLOAT            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_FLOAT
9523f7985e6SDmitry Preobrazhensky
953b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_UNORM         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_UNORM          GFX10 only
954b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_SNORM         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SNORM          GFX10 only
955b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_USCALED       BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_USCALED        GFX10 only
956b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_SSCALED       BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SSCALED        GFX10 only
957b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_UINT          BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_UINT           GFX10 only
958b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_11_11_SINT          BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SINT           GFX10 only
9593f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_FLOAT         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_FLOAT
9603f7985e6SDmitry Preobrazhensky
961b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_UNORM         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_UNORM          GFX10 only
962b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_SNORM         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SNORM          GFX10 only
963b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_USCALED       BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_USCALED        GFX10 only
964b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_SSCALED       BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SSCALED        GFX10 only
965b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_UINT          BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_UINT           GFX10 only
966b8e1071aSDmitry Preobrazhensky    BUF_FMT_11_11_10_SINT          BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SINT           GFX10 only
9673f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_FLOAT         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_FLOAT
9683f7985e6SDmitry Preobrazhensky
9693f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_UNORM       BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_UNORM
9703f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SNORM       BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SNORM
971b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_10_10_2_USCALED     BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_USCALED        GFX10 only
972b8e1071aSDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SSCALED     BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SSCALED        GFX10 only
9733f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_UINT        BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_UINT
9743f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SINT        BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SINT
9753f7985e6SDmitry Preobrazhensky
9763f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_UNORM       BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_UNORM
9773f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SNORM       BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SNORM
9783f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_USCALED     BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_USCALED
9793f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SSCALED     BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SSCALED
9803f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_UINT        BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_UINT
9813f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SINT        BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SINT
9823f7985e6SDmitry Preobrazhensky
9833f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_UNORM          BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_UNORM
9843f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SNORM          BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SNORM
9853f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_USCALED        BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_USCALED
9863f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SSCALED        BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SSCALED
9873f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_UINT           BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_UINT
9883f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SINT           BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SINT
9893f7985e6SDmitry Preobrazhensky
9903f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_UINT             BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_UINT
9913f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_SINT             BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_SINT
9923f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_FLOAT            BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_FLOAT
9933f7985e6SDmitry Preobrazhensky
9943f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_UNORM      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_UNORM
9953f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SNORM      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SNORM
9963f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_USCALED    BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_USCALED
9973f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SSCALED    BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SSCALED
9983f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_UINT       BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_UINT
9993f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SINT       BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SINT
10003f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_FLOAT      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_FLOAT
10013f7985e6SDmitry Preobrazhensky
10023f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_UINT          BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_UINT
10033f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_SINT          BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_SINT
10043f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_FLOAT         BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_FLOAT
10053f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_UINT       BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_UINT
10063f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_SINT       BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_SINT
10073f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_FLOAT      BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_FLOAT
1008b8e1071aSDmitry Preobrazhensky    ============================== ============================== ============================= ============
10093f7985e6SDmitry Preobrazhensky
10103f7985e6SDmitry PreobrazhenskyExamples:
10113f7985e6SDmitry Preobrazhensky
10123f7985e6SDmitry Preobrazhensky.. parsed-literal::
10133f7985e6SDmitry Preobrazhensky
10143f7985e6SDmitry Preobrazhensky  format:0
10153f7985e6SDmitry Preobrazhensky  format:[BUF_FMT_32_UINT]
101647eb6368SDmitry Preobrazhensky
101747eb6368SDmitry PreobrazhenskySMRD/SMEM Modifiers
101847eb6368SDmitry Preobrazhensky-------------------
101947eb6368SDmitry Preobrazhensky
102047eb6368SDmitry Preobrazhenskyglc
102147eb6368SDmitry Preobrazhensky~~~
102247eb6368SDmitry Preobrazhensky
102347eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
102447eb6368SDmitry Preobrazhensky
102547eb6368SDmitry Preobrazhenskynv
102647eb6368SDmitry Preobrazhensky~~
102747eb6368SDmitry Preobrazhensky
1028d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nv>`.
1029cef9d421SDmitry Preobrazhensky
1030cef9d421SDmitry Preobrazhenskydlc
1031cef9d421SDmitry Preobrazhensky~~~
1032cef9d421SDmitry Preobrazhensky
1033d9daee5aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`.
103447eb6368SDmitry Preobrazhensky
1035480f3e02SDmitry Preobrazhensky.. _amdgpu_synid_smem_offset20u:
1036480f3e02SDmitry Preobrazhensky
1037480f3e02SDmitry Preobrazhenskyoffset20u
1038480f3e02SDmitry Preobrazhensky~~~~~~~~~
1039480f3e02SDmitry Preobrazhensky
1040480f3e02SDmitry PreobrazhenskySpecifies an unsigned 20-bit offset, in bytes. The default value is 0.
1041480f3e02SDmitry Preobrazhensky
1042480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1043480f3e02SDmitry Preobrazhensky    Syntax               Description
1044480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1045480f3e02SDmitry Preobrazhensky    offset:{0..0xFFFFF}  Specifies an offset as a positive
1046480f3e02SDmitry Preobrazhensky                         :ref:`integer number <amdgpu_synid_integer_number>`
1047480f3e02SDmitry Preobrazhensky                         or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1048480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1049480f3e02SDmitry Preobrazhensky
1050480f3e02SDmitry PreobrazhenskyExamples:
1051480f3e02SDmitry Preobrazhensky
1052480f3e02SDmitry Preobrazhensky.. parsed-literal::
1053480f3e02SDmitry Preobrazhensky
1054480f3e02SDmitry Preobrazhensky  offset:1
1055480f3e02SDmitry Preobrazhensky  offset:0xfffff
1056480f3e02SDmitry Preobrazhensky  offset:x-y
1057480f3e02SDmitry Preobrazhensky
1058480f3e02SDmitry Preobrazhensky.. _amdgpu_synid_smem_offset21s:
1059480f3e02SDmitry Preobrazhensky
1060480f3e02SDmitry Preobrazhenskyoffset21s
1061480f3e02SDmitry Preobrazhensky~~~~~~~~~
1062480f3e02SDmitry Preobrazhensky
1063480f3e02SDmitry PreobrazhenskySpecifies a signed 21-bit offset, in bytes. The default value is 0.
1064480f3e02SDmitry Preobrazhensky
1065480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1066480f3e02SDmitry Preobrazhensky    Syntax                        Description
1067480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1068480f3e02SDmitry Preobrazhensky    offset:{-0x100000..0xFFFFF}   Specifies an offset as an
1069480f3e02SDmitry Preobrazhensky                                  :ref:`integer number <amdgpu_synid_integer_number>`
1070480f3e02SDmitry Preobrazhensky                                  or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1071480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1072480f3e02SDmitry Preobrazhensky
1073480f3e02SDmitry PreobrazhenskyExamples:
1074480f3e02SDmitry Preobrazhensky
1075480f3e02SDmitry Preobrazhensky.. parsed-literal::
1076480f3e02SDmitry Preobrazhensky
1077480f3e02SDmitry Preobrazhensky  offset:-1
1078480f3e02SDmitry Preobrazhensky  offset:0xfffff
1079480f3e02SDmitry Preobrazhensky  offset:-x
1080480f3e02SDmitry Preobrazhensky
1081b8e1071aSDmitry PreobrazhenskyVINTRP/VINTERP/LDSDIR Modifiers
1082b8e1071aSDmitry Preobrazhensky-------------------------------
108347eb6368SDmitry Preobrazhensky
108447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_high:
108547eb6368SDmitry Preobrazhensky
108647eb6368SDmitry Preobrazhenskyhigh
108747eb6368SDmitry Preobrazhensky~~~~
108847eb6368SDmitry Preobrazhensky
108947eb6368SDmitry PreobrazhenskySpecifies which half of the LDS word to use. Low half of LDS word is used by default.
109047eb6368SDmitry Preobrazhensky
109147eb6368SDmitry Preobrazhensky    ======================================== ================================
109247eb6368SDmitry Preobrazhensky    Syntax                                   Description
109347eb6368SDmitry Preobrazhensky    ======================================== ================================
1094d9daee5aSDmitry Preobrazhensky    high                                     Use the high half of LDS word.
109547eb6368SDmitry Preobrazhensky    ======================================== ================================
109647eb6368SDmitry Preobrazhensky
1097b8e1071aSDmitry Preobrazhenskyneg
1098b8e1071aSDmitry Preobrazhensky~~~
1099b8e1071aSDmitry Preobrazhensky
1100b8e1071aSDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_neg>`.
1101b8e1071aSDmitry Preobrazhensky
1102b8e1071aSDmitry Preobrazhensky.. _amdgpu_synid_wait_exp:
1103b8e1071aSDmitry Preobrazhensky
1104b8e1071aSDmitry Preobrazhenskywait_exp
1105b8e1071aSDmitry Preobrazhensky~~~~~~~~
1106b8e1071aSDmitry Preobrazhensky
1107b8e1071aSDmitry PreobrazhenskySpecifies a wait on the EXP counter before issuing the current instruction.
1108b8e1071aSDmitry PreobrazhenskyThe counter must be less than or equal to this value before the instruction is issued.
1109b8e1071aSDmitry PreobrazhenskyIf set to 7, no wait is performed.
1110b8e1071aSDmitry Preobrazhensky
1111b8e1071aSDmitry PreobrazhenskyThe default value is zero. This is a safe value, but it may be suboptimal.
1112b8e1071aSDmitry Preobrazhensky
1113b8e1071aSDmitry Preobrazhensky    ================ ======================================================
1114b8e1071aSDmitry Preobrazhensky    Syntax           Description
1115b8e1071aSDmitry Preobrazhensky    ================ ======================================================
1116b8e1071aSDmitry Preobrazhensky    wait_exp:{0..7}  An additional wait on the EXP counter before
1117b8e1071aSDmitry Preobrazhensky                     issuing this instruction.
1118b8e1071aSDmitry Preobrazhensky    ================ ======================================================
1119b8e1071aSDmitry Preobrazhensky
1120b8e1071aSDmitry Preobrazhensky.. _amdgpu_synid_wait_vdst:
1121b8e1071aSDmitry Preobrazhensky
1122b8e1071aSDmitry Preobrazhenskywait_vdst
1123b8e1071aSDmitry Preobrazhensky~~~~~~~~~
1124b8e1071aSDmitry Preobrazhensky
1125b8e1071aSDmitry PreobrazhenskySpecifies a wait on the VA_VDST counter before issuing the current instruction.
1126b8e1071aSDmitry PreobrazhenskyThe counter must be less than or equal to this value before the instruction is issued.
1127b8e1071aSDmitry PreobrazhenskyIf set to 15, no wait is performed.
1128b8e1071aSDmitry Preobrazhensky
1129b8e1071aSDmitry PreobrazhenskyThe default value is zero. This is a safe value, but it may be suboptimal.
1130b8e1071aSDmitry Preobrazhensky
1131b8e1071aSDmitry Preobrazhensky    ================== ======================================================
1132b8e1071aSDmitry Preobrazhensky    Syntax             Description
1133b8e1071aSDmitry Preobrazhensky    ================== ======================================================
1134b8e1071aSDmitry Preobrazhensky    wait_vdst:{0..15}  An additional wait on the VA_VDST counter before
1135b8e1071aSDmitry Preobrazhensky                       issuing this instruction.
1136b8e1071aSDmitry Preobrazhensky    ================== ======================================================
1137b8e1071aSDmitry Preobrazhensky
1138cef9d421SDmitry PreobrazhenskyDPP8 Modifiers
1139cef9d421SDmitry Preobrazhensky--------------
114047eb6368SDmitry Preobrazhensky
1141cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dpp8_sel:
1142cef9d421SDmitry Preobrazhensky
1143cef9d421SDmitry Preobrazhenskydpp8_sel
1144cef9d421SDmitry Preobrazhensky~~~~~~~~
1145cef9d421SDmitry Preobrazhensky
1146b9683d3cSDmitry PreobrazhenskySelects which lanes to pull data from, within a group of 8 lanes. This is a mandatory modifier.
1147cef9d421SDmitry PreobrazhenskyThere is no default value.
1148cef9d421SDmitry Preobrazhensky
1149b9683d3cSDmitry PreobrazhenskyThe *dpp8_sel* modifier must specify exactly 8 values.
1150d9daee5aSDmitry PreobrazhenskyThe first value selects which lane to read from to supply data into lane 0.
1151d9daee5aSDmitry PreobrazhenskyThe second value controls lane 1 and so on.
1152b9683d3cSDmitry Preobrazhensky
1153b9683d3cSDmitry PreobrazhenskyEach value may be specified as either
1154b9683d3cSDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
1155b9683d3cSDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1156cef9d421SDmitry Preobrazhensky
1157cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1158cef9d421SDmitry Preobrazhensky    Syntax                                                          Description
1159cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1160cef9d421SDmitry Preobrazhensky    dpp8:[{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7}]  Select lanes to read from.
1161cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1162cef9d421SDmitry Preobrazhensky
1163cef9d421SDmitry PreobrazhenskyExamples:
1164cef9d421SDmitry Preobrazhensky
1165cef9d421SDmitry Preobrazhensky.. parsed-literal::
1166cef9d421SDmitry Preobrazhensky
1167cef9d421SDmitry Preobrazhensky  dpp8:[7,6,5,4,3,2,1,0]
1168cef9d421SDmitry Preobrazhensky  dpp8:[0,1,0,1,0,1,0,1]
1169cef9d421SDmitry Preobrazhensky
1170cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_fi8:
1171cef9d421SDmitry Preobrazhensky
1172cef9d421SDmitry Preobrazhenskyfi
1173cef9d421SDmitry Preobrazhensky~~
1174cef9d421SDmitry Preobrazhensky
1175cef9d421SDmitry PreobrazhenskyControls interaction with inactive lanes for *dpp8* instructions. The default value is zero.
1176cef9d421SDmitry Preobrazhensky
1177b9683d3cSDmitry PreobrazhenskyNote: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero.
1178cef9d421SDmitry Preobrazhensky
1179cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1180cef9d421SDmitry Preobrazhensky    Syntax                               Description
1181cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1182cef9d421SDmitry Preobrazhensky    fi:0                                 Fetch zero when accessing data from inactive lanes.
1183d9daee5aSDmitry Preobrazhensky    fi:1                                 Fetch pre-existing values from inactive lanes.
1184cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1185cef9d421SDmitry Preobrazhensky
1186d9daee5aSDmitry PreobrazhenskyNote: numeric values may be specified as either
1187d9daee5aSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1188b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1189b9683d3cSDmitry Preobrazhensky
1190434b278cSDmitry PreobrazhenskyDPP Modifiers
1191434b278cSDmitry Preobrazhensky-------------
1192cef9d421SDmitry Preobrazhensky
119347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dpp_ctrl:
119447eb6368SDmitry Preobrazhensky
119547eb6368SDmitry Preobrazhenskydpp_ctrl
119647eb6368SDmitry Preobrazhensky~~~~~~~~
119747eb6368SDmitry Preobrazhensky
1198d9daee5aSDmitry PreobrazhenskySpecifies how data is shared between threads. This is a mandatory modifier.
119947eb6368SDmitry PreobrazhenskyThere is no default value.
120047eb6368SDmitry Preobrazhensky
1201b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
120247eb6368SDmitry Preobrazhensky
1203d9daee5aSDmitry Preobrazhensky    ======================================== ========================================================
120447eb6368SDmitry Preobrazhensky    Syntax                                   Description
1205d9daee5aSDmitry Preobrazhensky    ======================================== ========================================================
120647eb6368SDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
120747eb6368SDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
120847eb6368SDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
1209d9daee5aSDmitry Preobrazhensky    row_bcast:15                             Broadcast the 15th thread of each row to the next row.
121047eb6368SDmitry Preobrazhensky    row_bcast:31                             Broadcast thread 31 to rows 2 and 3.
121147eb6368SDmitry Preobrazhensky    wave_shl:1                               Wavefront left shift by 1 thread.
121247eb6368SDmitry Preobrazhensky    wave_rol:1                               Wavefront left rotate by 1 thread.
121347eb6368SDmitry Preobrazhensky    wave_shr:1                               Wavefront right shift by 1 thread.
121447eb6368SDmitry Preobrazhensky    wave_ror:1                               Wavefront right rotate by 1 thread.
121547eb6368SDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
121647eb6368SDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
121747eb6368SDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
1218d9daee5aSDmitry Preobrazhensky    ======================================== ========================================================
121947eb6368SDmitry Preobrazhensky
1220b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
122147eb6368SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
122247eb6368SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
122347eb6368SDmitry Preobrazhensky
122447eb6368SDmitry PreobrazhenskyExamples:
122547eb6368SDmitry Preobrazhensky
12261fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
122747eb6368SDmitry Preobrazhensky
122847eb6368SDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
122947eb6368SDmitry Preobrazhensky  row_shl:3
123047eb6368SDmitry Preobrazhensky
1231cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dpp16_ctrl:
1232cef9d421SDmitry Preobrazhensky
1233cef9d421SDmitry Preobrazhenskydpp16_ctrl
1234cef9d421SDmitry Preobrazhensky~~~~~~~~~~
1235cef9d421SDmitry Preobrazhensky
1236d9daee5aSDmitry PreobrazhenskySpecifies how data is shared between threads. This is a mandatory modifier.
1237cef9d421SDmitry PreobrazhenskyThere is no default value.
1238cef9d421SDmitry Preobrazhensky
1239b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1240cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
1241cef9d421SDmitry Preobrazhensky
1242d9daee5aSDmitry Preobrazhensky    ======================================== =======================================================
1243cef9d421SDmitry Preobrazhensky    Syntax                                   Description
1244d9daee5aSDmitry Preobrazhensky    ======================================== =======================================================
1245cef9d421SDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
1246cef9d421SDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
1247cef9d421SDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
1248cef9d421SDmitry Preobrazhensky    row_share:{0..15}                        Share the value from the specified lane with other
1249cef9d421SDmitry Preobrazhensky                                             lanes in the row.
1250d9daee5aSDmitry Preobrazhensky    row_xmask:{0..15}                        Fetch from XOR(<current lane id>,<specified lane id>).
1251cef9d421SDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
1252cef9d421SDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
1253cef9d421SDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
1254d9daee5aSDmitry Preobrazhensky    ======================================== =======================================================
1255cef9d421SDmitry Preobrazhensky
1256b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1257cef9d421SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1258cef9d421SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1259cef9d421SDmitry Preobrazhensky
1260cef9d421SDmitry PreobrazhenskyExamples:
1261cef9d421SDmitry Preobrazhensky
1262cef9d421SDmitry Preobrazhensky.. parsed-literal::
1263cef9d421SDmitry Preobrazhensky
1264cef9d421SDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
1265cef9d421SDmitry Preobrazhensky  row_shl:3
1266cef9d421SDmitry Preobrazhensky
1267434b278cSDmitry Preobrazhensky.. _amdgpu_synid_dpp32_ctrl:
1268434b278cSDmitry Preobrazhensky
1269434b278cSDmitry Preobrazhenskydpp32_ctrl
1270434b278cSDmitry Preobrazhensky~~~~~~~~~~
1271434b278cSDmitry Preobrazhensky
1272d9daee5aSDmitry PreobrazhenskySpecifies how data is shared between threads. This is a mandatory modifier.
1273434b278cSDmitry PreobrazhenskyThere is no default value.
1274434b278cSDmitry Preobrazhensky
1275434b278cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1276434b278cSDmitry Preobrazhensky
1277d9daee5aSDmitry Preobrazhensky    ======================================== =========================================================
1278434b278cSDmitry Preobrazhensky    Syntax                                   Description
1279d9daee5aSDmitry Preobrazhensky    ======================================== =========================================================
1280434b278cSDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
1281434b278cSDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
1282434b278cSDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
1283d9daee5aSDmitry Preobrazhensky    row_bcast:15                             Broadcast the 15th thread of each row to the next row.
1284434b278cSDmitry Preobrazhensky    row_bcast:31                             Broadcast thread 31 to rows 2 and 3.
1285434b278cSDmitry Preobrazhensky    wave_shl:1                               Wavefront left shift by 1 thread.
1286434b278cSDmitry Preobrazhensky    wave_rol:1                               Wavefront left rotate by 1 thread.
1287434b278cSDmitry Preobrazhensky    wave_shr:1                               Wavefront right shift by 1 thread.
1288434b278cSDmitry Preobrazhensky    wave_ror:1                               Wavefront right rotate by 1 thread.
1289434b278cSDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
1290434b278cSDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
1291434b278cSDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
1292434b278cSDmitry Preobrazhensky    row_newbcast:{1..15}                     Broadcast a thread within a row to the whole row.
1293d9daee5aSDmitry Preobrazhensky    ======================================== =========================================================
1294434b278cSDmitry Preobrazhensky
1295434b278cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1296434b278cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1297434b278cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1298434b278cSDmitry Preobrazhensky
1299434b278cSDmitry PreobrazhenskyExamples:
1300434b278cSDmitry Preobrazhensky
1301434b278cSDmitry Preobrazhensky.. parsed-literal::
1302434b278cSDmitry Preobrazhensky
1303434b278cSDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
1304434b278cSDmitry Preobrazhensky  row_shl:3
1305434b278cSDmitry Preobrazhensky
1306434b278cSDmitry Preobrazhensky
1307434b278cSDmitry Preobrazhensky.. _amdgpu_synid_dpp64_ctrl:
1308434b278cSDmitry Preobrazhensky
1309434b278cSDmitry Preobrazhenskydpp64_ctrl
1310434b278cSDmitry Preobrazhensky~~~~~~~~~~
1311434b278cSDmitry Preobrazhensky
1312d9daee5aSDmitry PreobrazhenskySpecifies how data is shared between threads. This is a mandatory modifier.
1313434b278cSDmitry PreobrazhenskyThere is no default value.
1314434b278cSDmitry Preobrazhensky
1315434b278cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1316434b278cSDmitry Preobrazhensky
1317434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1318434b278cSDmitry Preobrazhensky    Syntax                                   Description
1319434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1320434b278cSDmitry Preobrazhensky    row_newbcast:{1..15}                     Broadcast a thread within a row to the whole row.
1321434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1322434b278cSDmitry Preobrazhensky
1323434b278cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1324434b278cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1325434b278cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1326434b278cSDmitry Preobrazhensky
1327434b278cSDmitry PreobrazhenskyExamples:
1328434b278cSDmitry Preobrazhensky
1329434b278cSDmitry Preobrazhensky.. parsed-literal::
1330434b278cSDmitry Preobrazhensky
1331434b278cSDmitry Preobrazhensky  row_newbcast:3
1332434b278cSDmitry Preobrazhensky
1333434b278cSDmitry Preobrazhensky
133447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_row_mask:
133547eb6368SDmitry Preobrazhensky
133647eb6368SDmitry Preobrazhenskyrow_mask
133747eb6368SDmitry Preobrazhensky~~~~~~~~
133847eb6368SDmitry Preobrazhensky
133947eb6368SDmitry PreobrazhenskyControls which rows are enabled for data sharing. By default, all rows are enabled.
134047eb6368SDmitry Preobrazhensky
1341b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1342cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
134347eb6368SDmitry Preobrazhensky
1344b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
134547eb6368SDmitry Preobrazhensky    Syntax            Description
1346b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
134747eb6368SDmitry Preobrazhensky    row_mask:{0..15}  Specifies a *row mask* as a positive
1348b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
1349b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
135047eb6368SDmitry Preobrazhensky
1351d9daee5aSDmitry Preobrazhensky                      Each of the 4 bits in the mask controls one row
1352b9683d3cSDmitry Preobrazhensky                      (0 - disabled, 1 - enabled).
1353cef9d421SDmitry Preobrazhensky
1354d9daee5aSDmitry Preobrazhensky                      In *wave32* mode, the values shall be limited to {0..7}.
1355b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
135647eb6368SDmitry Preobrazhensky
135747eb6368SDmitry PreobrazhenskyExamples:
135847eb6368SDmitry Preobrazhensky
13591fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
136047eb6368SDmitry Preobrazhensky
136147eb6368SDmitry Preobrazhensky  row_mask:0xf
136247eb6368SDmitry Preobrazhensky  row_mask:0b1010
1363b9683d3cSDmitry Preobrazhensky  row_mask:x|y
136447eb6368SDmitry Preobrazhensky
136547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_bank_mask:
136647eb6368SDmitry Preobrazhensky
136747eb6368SDmitry Preobrazhenskybank_mask
136847eb6368SDmitry Preobrazhensky~~~~~~~~~
136947eb6368SDmitry Preobrazhensky
137047eb6368SDmitry PreobrazhenskyControls which banks are enabled for data sharing. By default, all banks are enabled.
137147eb6368SDmitry Preobrazhensky
1372b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1373cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
137447eb6368SDmitry Preobrazhensky
1375b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
137647eb6368SDmitry Preobrazhensky    Syntax             Description
1377b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
137847eb6368SDmitry Preobrazhensky    bank_mask:{0..15}  Specifies a *bank mask* as a positive
1379b9683d3cSDmitry Preobrazhensky                       :ref:`integer number <amdgpu_synid_integer_number>`
1380b9683d3cSDmitry Preobrazhensky                       or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
138147eb6368SDmitry Preobrazhensky
1382d9daee5aSDmitry Preobrazhensky                       Each of the 4 bits in the mask controls one bank
1383b9683d3cSDmitry Preobrazhensky                       (0 - disabled, 1 - enabled).
1384b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
138547eb6368SDmitry Preobrazhensky
138647eb6368SDmitry PreobrazhenskyExamples:
138747eb6368SDmitry Preobrazhensky
13881fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
138947eb6368SDmitry Preobrazhensky
139047eb6368SDmitry Preobrazhensky  bank_mask:0x3
139147eb6368SDmitry Preobrazhensky  bank_mask:0b0011
1392b9683d3cSDmitry Preobrazhensky  bank_mask:x&y
139347eb6368SDmitry Preobrazhensky
139447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_bound_ctrl:
139547eb6368SDmitry Preobrazhensky
139647eb6368SDmitry Preobrazhenskybound_ctrl
139747eb6368SDmitry Preobrazhensky~~~~~~~~~~
139847eb6368SDmitry Preobrazhensky
139947eb6368SDmitry PreobrazhenskyControls data sharing when accessing an invalid lane. By default, data sharing with
140047eb6368SDmitry Preobrazhenskyinvalid lanes is disabled.
140147eb6368SDmitry Preobrazhensky
140247eb6368SDmitry Preobrazhensky    ======================================== ================================================
140347eb6368SDmitry Preobrazhensky    Syntax                                   Description
140447eb6368SDmitry Preobrazhensky    ======================================== ================================================
140548135180SDmitry Preobrazhensky    bound_ctrl:1                             Enables data sharing with invalid lanes.
140647eb6368SDmitry Preobrazhensky
140747eb6368SDmitry Preobrazhensky                                             Accessing data from an invalid lane will
140847eb6368SDmitry Preobrazhensky                                             return zero.
1409*7591a7b6SDiana Picus
1410*7591a7b6SDiana Picus    bound_ctrl:0 (GFX11+)                    Disables data sharing with invalid lanes.
141147eb6368SDmitry Preobrazhensky    ======================================== ================================================
141247eb6368SDmitry Preobrazhensky
1413*7591a7b6SDiana Picus.. WARNING:: For historical reasons, *bound_ctrl:0* has the same meaning as *bound_ctrl:1* for older architectures.
1414d9daee5aSDmitry Preobrazhensky
1415cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_fi16:
141647eb6368SDmitry Preobrazhensky
1417cef9d421SDmitry Preobrazhenskyfi
1418cef9d421SDmitry Preobrazhensky~~
1419cef9d421SDmitry Preobrazhensky
1420cef9d421SDmitry PreobrazhenskyControls interaction with *inactive* lanes for *dpp16* instructions. The default value is zero.
1421cef9d421SDmitry Preobrazhensky
1422b9683d3cSDmitry PreobrazhenskyNote: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero.
1423cef9d421SDmitry Preobrazhensky
1424cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1425cef9d421SDmitry Preobrazhensky    Syntax                                   Description
1426cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1427cef9d421SDmitry Preobrazhensky    fi:0                                     Interaction with inactive lanes is controlled by
1428cef9d421SDmitry Preobrazhensky                                             :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
1429cef9d421SDmitry Preobrazhensky
1430d9daee5aSDmitry Preobrazhensky    fi:1                                     Fetch pre-existing values from inactive lanes.
1431cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1432cef9d421SDmitry Preobrazhensky
1433d9daee5aSDmitry PreobrazhenskyNote: numeric values may be specified as either
1434d9daee5aSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1435b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1436b9683d3cSDmitry Preobrazhensky
1437cef9d421SDmitry PreobrazhenskySDWA Modifiers
1438cef9d421SDmitry Preobrazhensky--------------
1439cef9d421SDmitry Preobrazhensky
144047eb6368SDmitry Preobrazhenskyclamp
144147eb6368SDmitry Preobrazhensky~~~~~
144247eb6368SDmitry Preobrazhensky
144347eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_clamp>`.
144447eb6368SDmitry Preobrazhensky
144547eb6368SDmitry Preobrazhenskyomod
144647eb6368SDmitry Preobrazhensky~~~~
144747eb6368SDmitry Preobrazhensky
144847eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_omod>`.
144947eb6368SDmitry Preobrazhensky
145047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dst_sel:
145147eb6368SDmitry Preobrazhensky
145247eb6368SDmitry Preobrazhenskydst_sel
145347eb6368SDmitry Preobrazhensky~~~~~~~
145447eb6368SDmitry Preobrazhensky
145547eb6368SDmitry PreobrazhenskySelects which bits in the destination are affected. By default, all bits are affected.
145647eb6368SDmitry Preobrazhensky
145747eb6368SDmitry Preobrazhensky    ======================================== ================================================
145847eb6368SDmitry Preobrazhensky    Syntax                                   Description
145947eb6368SDmitry Preobrazhensky    ======================================== ================================================
146047eb6368SDmitry Preobrazhensky    dst_sel:DWORD                            Use bits 31:0.
146147eb6368SDmitry Preobrazhensky    dst_sel:BYTE_0                           Use bits 7:0.
146247eb6368SDmitry Preobrazhensky    dst_sel:BYTE_1                           Use bits 15:8.
146347eb6368SDmitry Preobrazhensky    dst_sel:BYTE_2                           Use bits 23:16.
146447eb6368SDmitry Preobrazhensky    dst_sel:BYTE_3                           Use bits 31:24.
146547eb6368SDmitry Preobrazhensky    dst_sel:WORD_0                           Use bits 15:0.
146647eb6368SDmitry Preobrazhensky    dst_sel:WORD_1                           Use bits 31:16.
146747eb6368SDmitry Preobrazhensky    ======================================== ================================================
146847eb6368SDmitry Preobrazhensky
146947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dst_unused:
147047eb6368SDmitry Preobrazhensky
147147eb6368SDmitry Preobrazhenskydst_unused
147247eb6368SDmitry Preobrazhensky~~~~~~~~~~
147347eb6368SDmitry Preobrazhensky
147447eb6368SDmitry PreobrazhenskyControls what to do with the bits in the destination which are not selected
147547eb6368SDmitry Preobrazhenskyby :ref:`dst_sel<amdgpu_synid_dst_sel>`.
147647eb6368SDmitry PreobrazhenskyBy default, unused bits are preserved.
147747eb6368SDmitry Preobrazhensky
147847eb6368SDmitry Preobrazhensky    ======================================== ================================================
147947eb6368SDmitry Preobrazhensky    Syntax                                   Description
148047eb6368SDmitry Preobrazhensky    ======================================== ================================================
148147eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_PAD                    Pad with zeros.
148247eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_SEXT                   Sign-extend upper bits, zero lower bits.
148347eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_PRESERVE               Preserve bits.
148447eb6368SDmitry Preobrazhensky    ======================================== ================================================
148547eb6368SDmitry Preobrazhensky
148647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_src0_sel:
148747eb6368SDmitry Preobrazhensky
148847eb6368SDmitry Preobrazhenskysrc0_sel
148947eb6368SDmitry Preobrazhensky~~~~~~~~
149047eb6368SDmitry Preobrazhensky
149147eb6368SDmitry PreobrazhenskyControls which bits in the src0 are used. By default, all bits are used.
149247eb6368SDmitry Preobrazhensky
149347eb6368SDmitry Preobrazhensky    ======================================== ================================================
149447eb6368SDmitry Preobrazhensky    Syntax                                   Description
149547eb6368SDmitry Preobrazhensky    ======================================== ================================================
149647eb6368SDmitry Preobrazhensky    src0_sel:DWORD                           Use bits 31:0.
149747eb6368SDmitry Preobrazhensky    src0_sel:BYTE_0                          Use bits 7:0.
149847eb6368SDmitry Preobrazhensky    src0_sel:BYTE_1                          Use bits 15:8.
149947eb6368SDmitry Preobrazhensky    src0_sel:BYTE_2                          Use bits 23:16.
150047eb6368SDmitry Preobrazhensky    src0_sel:BYTE_3                          Use bits 31:24.
150147eb6368SDmitry Preobrazhensky    src0_sel:WORD_0                          Use bits 15:0.
150247eb6368SDmitry Preobrazhensky    src0_sel:WORD_1                          Use bits 31:16.
150347eb6368SDmitry Preobrazhensky    ======================================== ================================================
150447eb6368SDmitry Preobrazhensky
150547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_src1_sel:
150647eb6368SDmitry Preobrazhensky
150747eb6368SDmitry Preobrazhenskysrc1_sel
150847eb6368SDmitry Preobrazhensky~~~~~~~~
150947eb6368SDmitry Preobrazhensky
151047eb6368SDmitry PreobrazhenskyControls which bits in the src1 are used. By default, all bits are used.
151147eb6368SDmitry Preobrazhensky
151247eb6368SDmitry Preobrazhensky    ======================================== ================================================
151347eb6368SDmitry Preobrazhensky    Syntax                                   Description
151447eb6368SDmitry Preobrazhensky    ======================================== ================================================
151547eb6368SDmitry Preobrazhensky    src1_sel:DWORD                           Use bits 31:0.
151647eb6368SDmitry Preobrazhensky    src1_sel:BYTE_0                          Use bits 7:0.
151747eb6368SDmitry Preobrazhensky    src1_sel:BYTE_1                          Use bits 15:8.
151847eb6368SDmitry Preobrazhensky    src1_sel:BYTE_2                          Use bits 23:16.
151947eb6368SDmitry Preobrazhensky    src1_sel:BYTE_3                          Use bits 31:24.
152047eb6368SDmitry Preobrazhensky    src1_sel:WORD_0                          Use bits 15:0.
152147eb6368SDmitry Preobrazhensky    src1_sel:WORD_1                          Use bits 31:16.
152247eb6368SDmitry Preobrazhensky    ======================================== ================================================
152347eb6368SDmitry Preobrazhensky
152447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_sdwa_operand_modifiers:
152547eb6368SDmitry Preobrazhensky
1526cef9d421SDmitry PreobrazhenskySDWA Operand Modifiers
1527cef9d421SDmitry Preobrazhensky----------------------
152847eb6368SDmitry Preobrazhensky
152947eb6368SDmitry PreobrazhenskyOperand modifiers are not used separately. They are applied to source operands.
153047eb6368SDmitry Preobrazhensky
153147eb6368SDmitry Preobrazhenskyabs
153247eb6368SDmitry Preobrazhensky~~~
153347eb6368SDmitry Preobrazhensky
153447eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_abs>`.
153547eb6368SDmitry Preobrazhensky
153647eb6368SDmitry Preobrazhenskyneg
153747eb6368SDmitry Preobrazhensky~~~
153847eb6368SDmitry Preobrazhensky
153947eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_neg>`.
154047eb6368SDmitry Preobrazhensky
154147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_sext:
154247eb6368SDmitry Preobrazhensky
154347eb6368SDmitry Preobrazhenskysext
154447eb6368SDmitry Preobrazhensky~~~~
154547eb6368SDmitry Preobrazhensky
1546d9daee5aSDmitry PreobrazhenskySign-extends the value of a (sub-dword) integer operand to fill all 32 bits.
154747eb6368SDmitry Preobrazhensky
154847eb6368SDmitry PreobrazhenskyValid for integer operands only.
154947eb6368SDmitry Preobrazhensky
155047eb6368SDmitry Preobrazhensky    ======================================== ================================================
155147eb6368SDmitry Preobrazhensky    Syntax                                   Description
155247eb6368SDmitry Preobrazhensky    ======================================== ================================================
155347eb6368SDmitry Preobrazhensky    sext(<operand>)                          Sign-extend operand value.
155447eb6368SDmitry Preobrazhensky    ======================================== ================================================
155547eb6368SDmitry Preobrazhensky
155647eb6368SDmitry PreobrazhenskyExamples:
155747eb6368SDmitry Preobrazhensky
15581fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
155947eb6368SDmitry Preobrazhensky
156047eb6368SDmitry Preobrazhensky  sext(v4)
156147eb6368SDmitry Preobrazhensky  sext(v255)
156247eb6368SDmitry Preobrazhensky
156347eb6368SDmitry PreobrazhenskyVOP3 Modifiers
156447eb6368SDmitry Preobrazhensky--------------
156547eb6368SDmitry Preobrazhensky
156647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vop3_op_sel:
156747eb6368SDmitry Preobrazhensky
1568ddac5c9bSDmitry Preobrazhenskyop_sel
1569ddac5c9bSDmitry Preobrazhensky~~~~~~
157047eb6368SDmitry Preobrazhensky
157147eb6368SDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits for source and destination operands.
157247eb6368SDmitry PreobrazhenskyBy default, low bits are used for all operands.
157347eb6368SDmitry Preobrazhensky
157447eb6368SDmitry PreobrazhenskyThe number of values specified with the op_sel modifier must match the number of instruction
1575d9daee5aSDmitry Preobrazhenskyoperands (both source and destination). The first value controls src0, the second value controls src1
157647eb6368SDmitry Preobrazhenskyand so on, except that the last value controls destination.
157747eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
157847eb6368SDmitry Preobrazhensky
1579d9daee5aSDmitry PreobrazhenskyNote: op_sel modifier affects 16-bit operands only. For 32-bit operands, the value specified
158047eb6368SDmitry Preobrazhenskyby op_sel must be 0.
158147eb6368SDmitry Preobrazhensky
158247eb6368SDmitry Preobrazhensky    ======================================== ============================================================
158347eb6368SDmitry Preobrazhensky    Syntax                                   Description
158447eb6368SDmitry Preobrazhensky    ======================================== ============================================================
158547eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]                   Select operand bits for instructions with 1 source operand.
158647eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]            Select operand bits for instructions with 2 source operands.
158747eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1},{0..1}]     Select operand bits for instructions with 3 source operands.
158847eb6368SDmitry Preobrazhensky    ======================================== ============================================================
158947eb6368SDmitry Preobrazhensky
1590b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1591b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1592b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1593b9683d3cSDmitry Preobrazhensky
159447eb6368SDmitry PreobrazhenskyExamples:
159547eb6368SDmitry Preobrazhensky
15961fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
159747eb6368SDmitry Preobrazhensky
159847eb6368SDmitry Preobrazhensky  op_sel:[0,0]
159947eb6368SDmitry Preobrazhensky  op_sel:[0,1]
160047eb6368SDmitry Preobrazhensky
16018ea3e9d9SDmitry Preobrazhensky.. _amdgpu_synid_dpp_op_sel:
16028ea3e9d9SDmitry Preobrazhensky
16038ea3e9d9SDmitry Preobrazhenskydpp_op_sel
16048ea3e9d9SDmitry Preobrazhensky~~~~~~~~~~
16058ea3e9d9SDmitry Preobrazhensky
1606d9daee5aSDmitry PreobrazhenskyThis is a special version of *op_sel* used for *permlane* opcodes to specify
16078ea3e9d9SDmitry Preobrazhenskydpp-like mode bits - :ref:`fi<amdgpu_synid_fi16>` and
16088ea3e9d9SDmitry Preobrazhensky:ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
16098ea3e9d9SDmitry Preobrazhensky
1610d9daee5aSDmitry Preobrazhensky    ======================================== =================================================================
16118ea3e9d9SDmitry Preobrazhensky    Syntax                                   Description
1612d9daee5aSDmitry Preobrazhensky    ======================================== =================================================================
1613d9daee5aSDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]                   The first bit specifies :ref:`fi<amdgpu_synid_fi16>`, the second
16148ea3e9d9SDmitry Preobrazhensky                                             bit specifies :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
1615d9daee5aSDmitry Preobrazhensky    ======================================== =================================================================
16168ea3e9d9SDmitry Preobrazhensky
16178ea3e9d9SDmitry PreobrazhenskyNote: numeric values may be specified as either
16188ea3e9d9SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
16198ea3e9d9SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
16208ea3e9d9SDmitry Preobrazhensky
16218ea3e9d9SDmitry PreobrazhenskyExamples:
16228ea3e9d9SDmitry Preobrazhensky
16238ea3e9d9SDmitry Preobrazhensky.. parsed-literal::
16248ea3e9d9SDmitry Preobrazhensky
16258ea3e9d9SDmitry Preobrazhensky  op_sel:[0,0]
16268ea3e9d9SDmitry Preobrazhensky
162747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_clamp:
162847eb6368SDmitry Preobrazhensky
162947eb6368SDmitry Preobrazhenskyclamp
163047eb6368SDmitry Preobrazhensky~~~~~
163147eb6368SDmitry Preobrazhensky
163247eb6368SDmitry PreobrazhenskyClamp meaning depends on instruction.
163347eb6368SDmitry Preobrazhensky
163447eb6368SDmitry PreobrazhenskyFor *v_cmp* instructions, clamp modifier indicates that the compare signals
1635d9daee5aSDmitry Preobrazhenskyif a floating-point exception occurs. By default, signaling is disabled.
163647eb6368SDmitry Preobrazhensky
163747eb6368SDmitry PreobrazhenskyFor integer operations, clamp modifier indicates that the result must be clamped
163847eb6368SDmitry Preobrazhenskyto the largest and smallest representable value. By default, there is no clamping.
163947eb6368SDmitry Preobrazhensky
1640d9daee5aSDmitry PreobrazhenskyFor floating-point operations, clamp modifier indicates that the result must be clamped
164147eb6368SDmitry Preobrazhenskyto the range [0.0, 1.0]. By default, there is no clamping.
164247eb6368SDmitry Preobrazhensky
1643b9683d3cSDmitry PreobrazhenskyNote: clamp modifier is applied after :ref:`output modifiers<amdgpu_synid_omod>` (if any).
164447eb6368SDmitry Preobrazhensky
164547eb6368SDmitry Preobrazhensky    ======================================== ================================================
164647eb6368SDmitry Preobrazhensky    Syntax                                   Description
164747eb6368SDmitry Preobrazhensky    ======================================== ================================================
164847eb6368SDmitry Preobrazhensky    clamp                                    Enables clamping (or signaling).
164947eb6368SDmitry Preobrazhensky    ======================================== ================================================
165047eb6368SDmitry Preobrazhensky
165147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_omod:
165247eb6368SDmitry Preobrazhensky
165347eb6368SDmitry Preobrazhenskyomod
165447eb6368SDmitry Preobrazhensky~~~~
165547eb6368SDmitry Preobrazhensky
165647eb6368SDmitry PreobrazhenskySpecifies if an output modifier must be applied to the result.
1657d9daee5aSDmitry PreobrazhenskyIt is assumed that the result is a floating-point number.
1658d9daee5aSDmitry Preobrazhensky
165947eb6368SDmitry PreobrazhenskyBy default, no output modifiers are applied.
166047eb6368SDmitry Preobrazhensky
1661b9683d3cSDmitry PreobrazhenskyNote: output modifiers are applied before :ref:`clamping<amdgpu_synid_clamp>` (if any).
166247eb6368SDmitry Preobrazhensky
166347eb6368SDmitry Preobrazhensky    ======================================== ================================================
166447eb6368SDmitry Preobrazhensky    Syntax                                   Description
166547eb6368SDmitry Preobrazhensky    ======================================== ================================================
166647eb6368SDmitry Preobrazhensky    mul:2                                    Multiply the result by 2.
166747eb6368SDmitry Preobrazhensky    mul:4                                    Multiply the result by 4.
166847eb6368SDmitry Preobrazhensky    div:2                                    Multiply the result by 0.5.
166947eb6368SDmitry Preobrazhensky    ======================================== ================================================
167047eb6368SDmitry Preobrazhensky
1671d9daee5aSDmitry PreobrazhenskyNote: numeric values may be specified as either
1672d9daee5aSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1673b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1674b9683d3cSDmitry Preobrazhensky
1675b9683d3cSDmitry PreobrazhenskyExamples:
1676b9683d3cSDmitry Preobrazhensky
1677b9683d3cSDmitry Preobrazhensky.. parsed-literal::
1678b9683d3cSDmitry Preobrazhensky
1679b9683d3cSDmitry Preobrazhensky  mul:2
1680b9683d3cSDmitry Preobrazhensky  mul:x      // x must be equal to 2 or 4
1681b9683d3cSDmitry Preobrazhensky
168247eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vop3_operand_modifiers:
168347eb6368SDmitry Preobrazhensky
168447eb6368SDmitry PreobrazhenskyVOP3 Operand Modifiers
168547eb6368SDmitry Preobrazhensky----------------------
168647eb6368SDmitry Preobrazhensky
168747eb6368SDmitry PreobrazhenskyOperand modifiers are not used separately. They are applied to source operands.
168847eb6368SDmitry Preobrazhensky
168947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_abs:
169047eb6368SDmitry Preobrazhensky
169147eb6368SDmitry Preobrazhenskyabs
169247eb6368SDmitry Preobrazhensky~~~
169347eb6368SDmitry Preobrazhensky
1694b9683d3cSDmitry PreobrazhenskyComputes the absolute value of its operand. Must be applied before :ref:`neg<amdgpu_synid_neg>`
1695d9daee5aSDmitry Preobrazhensky(if any). Valid for floating-point operands only.
169647eb6368SDmitry Preobrazhensky
1697b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
169847eb6368SDmitry Preobrazhensky    Syntax                                   Description
1699b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
1700b9683d3cSDmitry Preobrazhensky    abs(<operand>)                           Get the absolute value of a floating-point operand.
1701b9683d3cSDmitry Preobrazhensky    \|<operand>|                             The same as above (an SP3 syntax).
1702b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
1703b9683d3cSDmitry Preobrazhensky
1704b9683d3cSDmitry PreobrazhenskyNote: avoid using SP3 syntax with operands specified as expressions because the trailing '|'
1705d9daee5aSDmitry Preobrazhenskymay be misinterpreted. Such operands should be enclosed into additional parentheses, as shown
1706b9683d3cSDmitry Preobrazhenskyin examples below.
170747eb6368SDmitry Preobrazhensky
170847eb6368SDmitry PreobrazhenskyExamples:
170947eb6368SDmitry Preobrazhensky
17101fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
171147eb6368SDmitry Preobrazhensky
171247eb6368SDmitry Preobrazhensky  abs(v36)
17131fa7aaf5SDmitry Preobrazhensky  \|v36|
1714b9683d3cSDmitry Preobrazhensky  abs(x|y)     // ok
1715b9683d3cSDmitry Preobrazhensky  \|(x|y)|      // additional parentheses are required
171647eb6368SDmitry Preobrazhensky
171747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg:
171847eb6368SDmitry Preobrazhensky
171947eb6368SDmitry Preobrazhenskyneg
172047eb6368SDmitry Preobrazhensky~~~
172147eb6368SDmitry Preobrazhensky
1722b9683d3cSDmitry PreobrazhenskyComputes the negative value of its operand. Must be applied after :ref:`abs<amdgpu_synid_abs>`
1723d9daee5aSDmitry Preobrazhensky(if any). Valid for floating-point operands only.
172447eb6368SDmitry Preobrazhensky
1725b9683d3cSDmitry Preobrazhensky    ================== ====================================================
172647eb6368SDmitry Preobrazhensky    Syntax             Description
1727b9683d3cSDmitry Preobrazhensky    ================== ====================================================
1728b9683d3cSDmitry Preobrazhensky    neg(<operand>)     Get the negative value of a floating-point operand.
1729d9daee5aSDmitry Preobrazhensky                       An optional :ref:`abs<amdgpu_synid_abs>` modifier
1730d9daee5aSDmitry Preobrazhensky                       may be applied to the operand before negation.
1731b9683d3cSDmitry Preobrazhensky    -<operand>         The same as above (an SP3 syntax).
1732b9683d3cSDmitry Preobrazhensky    ================== ====================================================
1733b9683d3cSDmitry Preobrazhensky
1734b9683d3cSDmitry PreobrazhenskyNote: SP3 syntax is supported with limitations because of a potential ambiguity.
1735d9daee5aSDmitry PreobrazhenskyCurrently, it is allowed in the following cases:
1736b9683d3cSDmitry Preobrazhensky
1737b9683d3cSDmitry Preobrazhensky* Before a register.
1738b9683d3cSDmitry Preobrazhensky* Before an :ref:`abs<amdgpu_synid_abs>` modifier.
1739b9683d3cSDmitry Preobrazhensky* Before an SP3 :ref:`abs<amdgpu_synid_abs>` modifier.
1740b9683d3cSDmitry Preobrazhensky
1741d9daee5aSDmitry PreobrazhenskyIn all other cases, "-" is handled as a part of an expression that follows the sign.
174247eb6368SDmitry Preobrazhensky
174347eb6368SDmitry PreobrazhenskyExamples:
174447eb6368SDmitry Preobrazhensky
17451fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
174647eb6368SDmitry Preobrazhensky
1747b9683d3cSDmitry Preobrazhensky  // Operands with negate modifiers
174847eb6368SDmitry Preobrazhensky  neg(v[0])
1749b9683d3cSDmitry Preobrazhensky  neg(1.0)
1750b9683d3cSDmitry Preobrazhensky  neg(abs(v0))
1751b9683d3cSDmitry Preobrazhensky  -v5
1752b9683d3cSDmitry Preobrazhensky  -abs(v5)
1753b9683d3cSDmitry Preobrazhensky  -\|v5|
1754b9683d3cSDmitry Preobrazhensky
1755d9daee5aSDmitry Preobrazhensky  // Expressions where "-" has a different meaning
1756b9683d3cSDmitry Preobrazhensky  -1
1757b9683d3cSDmitry Preobrazhensky  -x+y
175847eb6368SDmitry Preobrazhensky
175947eb6368SDmitry PreobrazhenskyVOP3P Modifiers
176047eb6368SDmitry Preobrazhensky---------------
176147eb6368SDmitry Preobrazhensky
176247eb6368SDmitry PreobrazhenskyThis section describes modifiers of *regular* VOP3P instructions.
176347eb6368SDmitry Preobrazhensky
176480c45e49SDmitry Preobrazhensky*v_mad_mix\** and *v_fma_mix\**
176547eb6368SDmitry Preobrazhenskyinstructions use these modifiers :ref:`in a special manner<amdgpu_synid_mad_mix>`.
176647eb6368SDmitry Preobrazhensky
176747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_op_sel:
176847eb6368SDmitry Preobrazhensky
176947eb6368SDmitry Preobrazhenskyop_sel
177047eb6368SDmitry Preobrazhensky~~~~~~
177147eb6368SDmitry Preobrazhensky
1772d9daee5aSDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits as input to the operation,
177347eb6368SDmitry Preobrazhenskywhich results in the lower-half of the destination.
1774d9daee5aSDmitry PreobrazhenskyBy default, low 16 bits are used for all operands.
177547eb6368SDmitry Preobrazhensky
177647eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel* modifier must match the number of source
1777d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
177847eb6368SDmitry Preobrazhensky
177947eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
178047eb6368SDmitry Preobrazhensky
178147eb6368SDmitry Preobrazhensky    ================================= =============================================================
178247eb6368SDmitry Preobrazhensky    Syntax                            Description
178347eb6368SDmitry Preobrazhensky    ================================= =============================================================
178447eb6368SDmitry Preobrazhensky    op_sel:[{0..1}]                   Select operand bits for instructions with 1 source operand.
178547eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]            Select operand bits for instructions with 2 source operands.
178647eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]     Select operand bits for instructions with 3 source operands.
178747eb6368SDmitry Preobrazhensky    ================================= =============================================================
178847eb6368SDmitry Preobrazhensky
1789b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1790b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1791b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1792b9683d3cSDmitry Preobrazhensky
179347eb6368SDmitry PreobrazhenskyExamples:
179447eb6368SDmitry Preobrazhensky
17951fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
179647eb6368SDmitry Preobrazhensky
179747eb6368SDmitry Preobrazhensky  op_sel:[0,0]
179847eb6368SDmitry Preobrazhensky  op_sel:[0,1,0]
179947eb6368SDmitry Preobrazhensky
180047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_op_sel_hi:
180147eb6368SDmitry Preobrazhensky
180247eb6368SDmitry Preobrazhenskyop_sel_hi
180347eb6368SDmitry Preobrazhensky~~~~~~~~~
180447eb6368SDmitry Preobrazhensky
1805d9daee5aSDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits as input to the operation,
180647eb6368SDmitry Preobrazhenskywhich results in the upper-half of the destination.
1807d9daee5aSDmitry PreobrazhenskyBy default, high 16 bits are used for all operands.
180847eb6368SDmitry Preobrazhensky
180947eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel_hi* modifier must match the number of source
1810d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
181147eb6368SDmitry Preobrazhensky
181247eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
181347eb6368SDmitry Preobrazhensky
181447eb6368SDmitry Preobrazhensky    =================================== =============================================================
181547eb6368SDmitry Preobrazhensky    Syntax                              Description
181647eb6368SDmitry Preobrazhensky    =================================== =============================================================
181747eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1}]                  Select operand bits for instructions with 1 source operand.
181847eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1}]           Select operand bits for instructions with 2 source operands.
181947eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1},{0..1}]    Select operand bits for instructions with 3 source operands.
182047eb6368SDmitry Preobrazhensky    =================================== =============================================================
182147eb6368SDmitry Preobrazhensky
1822b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1823b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1824b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1825b9683d3cSDmitry Preobrazhensky
182647eb6368SDmitry PreobrazhenskyExamples:
182747eb6368SDmitry Preobrazhensky
18281fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
182947eb6368SDmitry Preobrazhensky
183047eb6368SDmitry Preobrazhensky  op_sel_hi:[0,0]
183147eb6368SDmitry Preobrazhensky  op_sel_hi:[0,0,1]
183247eb6368SDmitry Preobrazhensky
183347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg_lo:
183447eb6368SDmitry Preobrazhensky
183547eb6368SDmitry Preobrazhenskyneg_lo
183647eb6368SDmitry Preobrazhensky~~~~~~
183747eb6368SDmitry Preobrazhensky
1838d9daee5aSDmitry PreobrazhenskySpecifies whether to change the sign of operand values selected by
183947eb6368SDmitry Preobrazhensky:ref:`op_sel<amdgpu_synid_op_sel>`. These values are then used
1840d9daee5aSDmitry Preobrazhenskyas input to the operation, which results in the upper-half of the destination.
184147eb6368SDmitry Preobrazhensky
184247eb6368SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
1843d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
184447eb6368SDmitry Preobrazhensky
184547eb6368SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
1846d9daee5aSDmitry Preobrazhenskythe value 1 indicates that the negative value of the operand must be used.
184747eb6368SDmitry Preobrazhensky
184847eb6368SDmitry PreobrazhenskyBy default, operand values are used unmodified.
184947eb6368SDmitry Preobrazhensky
1850d9daee5aSDmitry PreobrazhenskyThis modifier is valid for floating-point operands only.
185147eb6368SDmitry Preobrazhensky
185247eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185347eb6368SDmitry Preobrazhensky    Syntax                           Description
185447eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185547eb6368SDmitry Preobrazhensky    neg_lo:[{0..1}]                  Select affected operands for instructions with 1 source operand.
185647eb6368SDmitry Preobrazhensky    neg_lo:[{0..1},{0..1}]           Select affected operands for instructions with 2 source operands.
185747eb6368SDmitry Preobrazhensky    neg_lo:[{0..1},{0..1},{0..1}]    Select affected operands for instructions with 3 source operands.
185847eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185947eb6368SDmitry Preobrazhensky
1860b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1861b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1862b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1863b9683d3cSDmitry Preobrazhensky
186447eb6368SDmitry PreobrazhenskyExamples:
186547eb6368SDmitry Preobrazhensky
18661fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
186747eb6368SDmitry Preobrazhensky
186847eb6368SDmitry Preobrazhensky  neg_lo:[0]
186947eb6368SDmitry Preobrazhensky  neg_lo:[0,1]
187047eb6368SDmitry Preobrazhensky
187147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg_hi:
187247eb6368SDmitry Preobrazhensky
187347eb6368SDmitry Preobrazhenskyneg_hi
187447eb6368SDmitry Preobrazhensky~~~~~~
187547eb6368SDmitry Preobrazhensky
187647eb6368SDmitry PreobrazhenskySpecifies whether to change sign of operand values selected by
187747eb6368SDmitry Preobrazhensky:ref:`op_sel_hi<amdgpu_synid_op_sel_hi>`. These values are then used
1878d9daee5aSDmitry Preobrazhenskyas input to the operation, which results in the upper-half of the destination.
187947eb6368SDmitry Preobrazhensky
188047eb6368SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
1881d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
188247eb6368SDmitry Preobrazhensky
188347eb6368SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
1884d9daee5aSDmitry Preobrazhenskythe value 1 indicates that the negative value of the operand must be used.
188547eb6368SDmitry Preobrazhensky
188647eb6368SDmitry PreobrazhenskyBy default, operand values are used unmodified.
188747eb6368SDmitry Preobrazhensky
1888d9daee5aSDmitry PreobrazhenskyThis modifier is valid for floating-point operands only.
188947eb6368SDmitry Preobrazhensky
189047eb6368SDmitry Preobrazhensky    =============================== ==================================================================
189147eb6368SDmitry Preobrazhensky    Syntax                          Description
189247eb6368SDmitry Preobrazhensky    =============================== ==================================================================
189347eb6368SDmitry Preobrazhensky    neg_hi:[{0..1}]                 Select affected operands for instructions with 1 source operand.
189447eb6368SDmitry Preobrazhensky    neg_hi:[{0..1},{0..1}]          Select affected operands for instructions with 2 source operands.
189547eb6368SDmitry Preobrazhensky    neg_hi:[{0..1},{0..1},{0..1}]   Select affected operands for instructions with 3 source operands.
189647eb6368SDmitry Preobrazhensky    =============================== ==================================================================
189747eb6368SDmitry Preobrazhensky
1898b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1899b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1900b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1901b9683d3cSDmitry Preobrazhensky
190247eb6368SDmitry PreobrazhenskyExamples:
190347eb6368SDmitry Preobrazhensky
19041fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
190547eb6368SDmitry Preobrazhensky
190647eb6368SDmitry Preobrazhensky  neg_hi:[1,0]
190747eb6368SDmitry Preobrazhensky  neg_hi:[0,1,1]
190847eb6368SDmitry Preobrazhensky
190947eb6368SDmitry Preobrazhenskyclamp
191047eb6368SDmitry Preobrazhensky~~~~~
191147eb6368SDmitry Preobrazhensky
191247eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_clamp>`.
191347eb6368SDmitry Preobrazhensky
191447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_mad_mix:
191547eb6368SDmitry Preobrazhensky
19163f7985e6SDmitry PreobrazhenskyVOP3P MAD_MIX/FMA_MIX Modifiers
19173f7985e6SDmitry Preobrazhensky-------------------------------
191847eb6368SDmitry Preobrazhensky
191980c45e49SDmitry Preobrazhensky*v_mad_mix\** and *v_fma_mix\**
192080c45e49SDmitry Preobrazhenskyinstructions use *op_sel* and *op_sel_hi* modifiers
192147eb6368SDmitry Preobrazhenskyin a manner different from *regular* VOP3P instructions.
192247eb6368SDmitry Preobrazhensky
192347eb6368SDmitry PreobrazhenskySee a description below.
192447eb6368SDmitry Preobrazhensky
192547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_mad_mix_op_sel:
192647eb6368SDmitry Preobrazhensky
1927ddac5c9bSDmitry Preobrazhenskym_op_sel
1928ddac5c9bSDmitry Preobrazhensky~~~~~~~~
192947eb6368SDmitry Preobrazhensky
1930d9daee5aSDmitry PreobrazhenskyThis operand has meaning only for 16-bit source operands, as indicated by
1931ddac5c9bSDmitry Preobrazhensky:ref:`m_op_sel_hi<amdgpu_synid_mad_mix_op_sel_hi>`.
193247eb6368SDmitry PreobrazhenskyIt specifies to select either the low [15:0] or high [31:16] operand bits
193347eb6368SDmitry Preobrazhenskyas input to the operation.
193447eb6368SDmitry Preobrazhensky
193547eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel* modifier must match the number of source
1936d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
193747eb6368SDmitry Preobrazhensky
193847eb6368SDmitry PreobrazhenskyThe value 0 indicates the low bits, the value 1 indicates the high 16 bits.
193947eb6368SDmitry Preobrazhensky
194047eb6368SDmitry PreobrazhenskyBy default, low bits are used for all operands.
194147eb6368SDmitry Preobrazhensky
1942d9daee5aSDmitry Preobrazhensky    =============================== ===================================================
194347eb6368SDmitry Preobrazhensky    Syntax                          Description
1944d9daee5aSDmitry Preobrazhensky    =============================== ===================================================
1945d9daee5aSDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]   Select the location of each 16-bit source operand.
1946d9daee5aSDmitry Preobrazhensky    =============================== ===================================================
194747eb6368SDmitry Preobrazhensky
1948b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1949b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1950b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1951b9683d3cSDmitry Preobrazhensky
195247eb6368SDmitry PreobrazhenskyExamples:
195347eb6368SDmitry Preobrazhensky
19541fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
195547eb6368SDmitry Preobrazhensky
195647eb6368SDmitry Preobrazhensky  op_sel:[0,1]
195747eb6368SDmitry Preobrazhensky
195847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_mad_mix_op_sel_hi:
195947eb6368SDmitry Preobrazhensky
1960ddac5c9bSDmitry Preobrazhenskym_op_sel_hi
1961ddac5c9bSDmitry Preobrazhensky~~~~~~~~~~~
196247eb6368SDmitry Preobrazhensky
196347eb6368SDmitry PreobrazhenskySelects the size of source operands: either 32 bits or 16 bits.
196447eb6368SDmitry PreobrazhenskyBy default, 32 bits are used for all source operands.
196547eb6368SDmitry Preobrazhensky
196647eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel_hi* modifier must match the number of source
1967d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
196847eb6368SDmitry Preobrazhensky
196947eb6368SDmitry PreobrazhenskyThe value 0 indicates 32 bits, the value 1 indicates 16 bits.
197047eb6368SDmitry Preobrazhensky
197147eb6368SDmitry PreobrazhenskyThe location of 16 bits in the operand may be specified by
1972ddac5c9bSDmitry Preobrazhensky:ref:`m_op_sel<amdgpu_synid_mad_mix_op_sel>`.
197347eb6368SDmitry Preobrazhensky
1974d9daee5aSDmitry Preobrazhensky    ======================================== ========================================
197547eb6368SDmitry Preobrazhensky    Syntax                                   Description
1976d9daee5aSDmitry Preobrazhensky    ======================================== ========================================
1977d9daee5aSDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1},{0..1}]         Select the size of each source operand.
1978d9daee5aSDmitry Preobrazhensky    ======================================== ========================================
197947eb6368SDmitry Preobrazhensky
1980b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1981b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1982b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1983b9683d3cSDmitry Preobrazhensky
198447eb6368SDmitry PreobrazhenskyExamples:
198547eb6368SDmitry Preobrazhensky
19861fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
198747eb6368SDmitry Preobrazhensky
198847eb6368SDmitry Preobrazhensky  op_sel_hi:[1,1,1]
198947eb6368SDmitry Preobrazhensky
199047eb6368SDmitry Preobrazhenskyabs
199147eb6368SDmitry Preobrazhensky~~~
199247eb6368SDmitry Preobrazhensky
199347eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_abs>`.
199447eb6368SDmitry Preobrazhensky
199547eb6368SDmitry Preobrazhenskyneg
199647eb6368SDmitry Preobrazhensky~~~
199747eb6368SDmitry Preobrazhensky
199847eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_neg>`.
199947eb6368SDmitry Preobrazhensky
200047eb6368SDmitry Preobrazhenskyclamp
200147eb6368SDmitry Preobrazhensky~~~~~
200247eb6368SDmitry Preobrazhensky
200347eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_clamp>`.
200480c45e49SDmitry Preobrazhensky
200580c45e49SDmitry PreobrazhenskyVOP3P MFMA Modifiers
200680c45e49SDmitry Preobrazhensky--------------------
200780c45e49SDmitry Preobrazhensky
200880c45e49SDmitry Preobrazhensky.. _amdgpu_synid_cbsz:
200980c45e49SDmitry Preobrazhensky
201080c45e49SDmitry Preobrazhenskycbsz
201180c45e49SDmitry Preobrazhensky~~~~
201280c45e49SDmitry Preobrazhensky
2013434b278cSDmitry PreobrazhenskySpecifies a broadcast mode.
2014434b278cSDmitry Preobrazhensky
201580c45e49SDmitry Preobrazhensky    =============================== ==================================================================
201680c45e49SDmitry Preobrazhensky    Syntax                          Description
201780c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2018434b278cSDmitry Preobrazhensky    cbsz:[{0..7}]                   A broadcast mode.
201980c45e49SDmitry Preobrazhensky    =============================== ==================================================================
202080c45e49SDmitry Preobrazhensky
202180c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
202280c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
202380c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
202480c45e49SDmitry Preobrazhensky
202580c45e49SDmitry Preobrazhensky.. _amdgpu_synid_abid:
202680c45e49SDmitry Preobrazhensky
202780c45e49SDmitry Preobrazhenskyabid
202880c45e49SDmitry Preobrazhensky~~~~
202980c45e49SDmitry Preobrazhensky
2030434b278cSDmitry PreobrazhenskySpecifies matrix A group select.
2031434b278cSDmitry Preobrazhensky
203280c45e49SDmitry Preobrazhensky    =============================== ==================================================================
203380c45e49SDmitry Preobrazhensky    Syntax                          Description
203480c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2035434b278cSDmitry Preobrazhensky    abid:[{0..15}]                  Matrix A group select id.
203680c45e49SDmitry Preobrazhensky    =============================== ==================================================================
203780c45e49SDmitry Preobrazhensky
203880c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
203980c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
204080c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
204180c45e49SDmitry Preobrazhensky
204280c45e49SDmitry Preobrazhensky.. _amdgpu_synid_blgp:
204380c45e49SDmitry Preobrazhensky
204480c45e49SDmitry Preobrazhenskyblgp
204580c45e49SDmitry Preobrazhensky~~~~
204680c45e49SDmitry Preobrazhensky
2047434b278cSDmitry PreobrazhenskySpecifies matrix B lane group pattern.
2048434b278cSDmitry Preobrazhensky
204980c45e49SDmitry Preobrazhensky    =============================== ==================================================================
205080c45e49SDmitry Preobrazhensky    Syntax                          Description
205180c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2052434b278cSDmitry Preobrazhensky    blgp:[{0..7}]                   Matrix B lane group pattern.
205380c45e49SDmitry Preobrazhensky    =============================== ==================================================================
205480c45e49SDmitry Preobrazhensky
205580c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
205680c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
205780c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
205880c45e49SDmitry Preobrazhensky
205962c46093SDmitry Preobrazhensky.. _amdgpu_synid_mfma_neg:
206062c46093SDmitry Preobrazhensky
206162c46093SDmitry Preobrazhenskyneg
206262c46093SDmitry Preobrazhensky~~~
206362c46093SDmitry Preobrazhensky
206462c46093SDmitry PreobrazhenskyIndicates operands that must be negated before the operation.
206562c46093SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
2066d9daee5aSDmitry Preobrazhenskyoperands. The first value controls src0, the second value controls src1 and so on.
206762c46093SDmitry Preobrazhensky
206862c46093SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
206962c46093SDmitry Preobrazhenskythe value 1 indicates that the operand value must be negated before the operation.
207062c46093SDmitry Preobrazhensky
207162c46093SDmitry PreobrazhenskyBy default, operand values are used unmodified.
207262c46093SDmitry Preobrazhensky
207362c46093SDmitry Preobrazhensky    =============================== ==================================================================
207462c46093SDmitry Preobrazhensky    Syntax                          Description
207562c46093SDmitry Preobrazhensky    =============================== ==================================================================
207662c46093SDmitry Preobrazhensky    neg:[{0..1},{0..1},{0..1}]      Select operands which must be negated before the operation.
207762c46093SDmitry Preobrazhensky    =============================== ==================================================================
207862c46093SDmitry Preobrazhensky
207962c46093SDmitry PreobrazhenskyNote: numeric values may be specified as either
208062c46093SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
208162c46093SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
208262c46093SDmitry Preobrazhensky
208362c46093SDmitry PreobrazhenskyExamples:
208462c46093SDmitry Preobrazhensky
208562c46093SDmitry Preobrazhensky.. parsed-literal::
208662c46093SDmitry Preobrazhensky
208762c46093SDmitry Preobrazhensky  neg:[0,1,1]
2088