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).
1747eb6368SDmitry Preobrazhensky    <x>                 Syntax and meaning of *x* is 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
338ea3e9d9SDmitry PreobrazhenskySpecifies 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
588ea3e9d9SDmitry PreobrazhenskySpecifies 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
10847eb6368SDmitry PreobrazhenskyThis is a special modifier which 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 PreobrazhenskySee AMD documentation for more information.
11247eb6368SDmitry Preobrazhensky
11347eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
11447eb6368SDmitry Preobrazhensky    Syntax                                                  Description
11547eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
11647eb6368SDmitry Preobrazhensky    offset:{0..0xFFFF}                                      Specifies a 16-bit swizzle pattern.
11747eb6368SDmitry Preobrazhensky    offset:swizzle(QUAD_PERM,{0..3},{0..3},{0..3},{0..3})   Specifies a quad permute mode pattern
11847eb6368SDmitry Preobrazhensky
11947eb6368SDmitry Preobrazhensky                                                            Each number is a lane *id*.
12047eb6368SDmitry Preobrazhensky    offset:swizzle(BITMASK_PERM, "<mask>")                  Specifies a bitmask permute mode pattern.
12147eb6368SDmitry Preobrazhensky
12247eb6368SDmitry Preobrazhensky                                                            The pattern converts a 5-bit lane *id* to another
12347eb6368SDmitry Preobrazhensky                                                            lane *id* with which the lane interacts.
12447eb6368SDmitry Preobrazhensky
12547eb6368SDmitry Preobrazhensky                                                            *mask* is a 5 character sequence which
12647eb6368SDmitry Preobrazhensky                                                            specifies how to transform the bits of the
12747eb6368SDmitry Preobrazhensky                                                            lane *id*.
12847eb6368SDmitry Preobrazhensky
12947eb6368SDmitry Preobrazhensky                                                            The following characters are allowed:
13047eb6368SDmitry Preobrazhensky
13147eb6368SDmitry Preobrazhensky                                                            * "0" - set bit to 0.
13247eb6368SDmitry Preobrazhensky
13347eb6368SDmitry Preobrazhensky                                                            * "1" - set bit to 1.
13447eb6368SDmitry Preobrazhensky
13547eb6368SDmitry Preobrazhensky                                                            * "p" - preserve bit.
13647eb6368SDmitry Preobrazhensky
13747eb6368SDmitry Preobrazhensky                                                            * "i" - inverse bit.
13847eb6368SDmitry Preobrazhensky
13947eb6368SDmitry Preobrazhensky    offset:swizzle(BROADCAST,{2..32},{0..N})                Specifies a broadcast mode.
14047eb6368SDmitry Preobrazhensky
14147eb6368SDmitry Preobrazhensky                                                            Broadcasts the value of any particular lane to
14247eb6368SDmitry Preobrazhensky                                                            all lanes in its group.
14347eb6368SDmitry Preobrazhensky
14447eb6368SDmitry Preobrazhensky                                                            The first numeric parameter is a group
14547eb6368SDmitry Preobrazhensky                                                            size and must be equal to 2, 4, 8, 16 or 32.
14647eb6368SDmitry Preobrazhensky
14747eb6368SDmitry Preobrazhensky                                                            The second numeric parameter is an index of the
14847eb6368SDmitry Preobrazhensky                                                            lane being broadcasted.
14947eb6368SDmitry Preobrazhensky
15047eb6368SDmitry Preobrazhensky                                                            The index must not exceed group size.
15147eb6368SDmitry Preobrazhensky    offset:swizzle(SWAP,{1..16})                            Specifies a swap mode.
15247eb6368SDmitry Preobrazhensky
15347eb6368SDmitry Preobrazhensky                                                            Swaps the neighboring groups of
15447eb6368SDmitry Preobrazhensky                                                            1, 2, 4, 8 or 16 lanes.
15547eb6368SDmitry Preobrazhensky    offset:swizzle(REVERSE,{2..32})                         Specifies a reverse mode.
15647eb6368SDmitry Preobrazhensky
15747eb6368SDmitry Preobrazhensky                                                            Reverses the lanes for groups of 2, 4, 8, 16 or 32 lanes.
15847eb6368SDmitry Preobrazhensky    ======================================================= ===========================================================
15947eb6368SDmitry Preobrazhensky
160b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either :ref:`integer numbers<amdgpu_synid_integer_number>` or
16147eb6368SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
16247eb6368SDmitry Preobrazhensky
16347eb6368SDmitry PreobrazhenskyExamples:
16447eb6368SDmitry Preobrazhensky
1651fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
16647eb6368SDmitry Preobrazhensky
16747eb6368SDmitry Preobrazhensky  offset:255
16847eb6368SDmitry Preobrazhensky  offset:0xffff
16947eb6368SDmitry Preobrazhensky  offset:swizzle(QUAD_PERM, 0, 1, 2, 3)
17047eb6368SDmitry Preobrazhensky  offset:swizzle(BITMASK_PERM, "01pi0")
17147eb6368SDmitry Preobrazhensky  offset:swizzle(BROADCAST, 2, 0)
17247eb6368SDmitry Preobrazhensky  offset:swizzle(SWAP, 8)
17347eb6368SDmitry Preobrazhensky  offset:swizzle(REVERSE, 30 + 2)
17447eb6368SDmitry Preobrazhensky
17547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_gds:
17647eb6368SDmitry Preobrazhensky
17747eb6368SDmitry Preobrazhenskygds
17847eb6368SDmitry Preobrazhensky~~~
17947eb6368SDmitry Preobrazhensky
18047eb6368SDmitry PreobrazhenskySpecifies whether to use GDS or LDS memory (LDS is the default).
18147eb6368SDmitry Preobrazhensky
18247eb6368SDmitry Preobrazhensky    ======================================== ================================================
18347eb6368SDmitry Preobrazhensky    Syntax                                   Description
18447eb6368SDmitry Preobrazhensky    ======================================== ================================================
18547eb6368SDmitry Preobrazhensky    gds                                      Use GDS memory.
18647eb6368SDmitry Preobrazhensky    ======================================== ================================================
18747eb6368SDmitry Preobrazhensky
18847eb6368SDmitry Preobrazhensky
18947eb6368SDmitry PreobrazhenskyEXP Modifiers
19047eb6368SDmitry Preobrazhensky-------------
19147eb6368SDmitry Preobrazhensky
19247eb6368SDmitry Preobrazhensky.. _amdgpu_synid_done:
19347eb6368SDmitry Preobrazhensky
19447eb6368SDmitry Preobrazhenskydone
19547eb6368SDmitry Preobrazhensky~~~~
19647eb6368SDmitry Preobrazhensky
197cef9d421SDmitry PreobrazhenskySpecifies if this is the last export from the shader to the target. By default,
198cef9d421SDmitry Preobrazhensky*exp* instruction does not finish an export sequence.
19947eb6368SDmitry Preobrazhensky
20047eb6368SDmitry Preobrazhensky    ======================================== ================================================
20147eb6368SDmitry Preobrazhensky    Syntax                                   Description
20247eb6368SDmitry Preobrazhensky    ======================================== ================================================
20347eb6368SDmitry Preobrazhensky    done                                     Indicates the last export operation.
20447eb6368SDmitry Preobrazhensky    ======================================== ================================================
20547eb6368SDmitry Preobrazhensky
20647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_compr:
20747eb6368SDmitry Preobrazhensky
20847eb6368SDmitry Preobrazhenskycompr
20947eb6368SDmitry Preobrazhensky~~~~~
21047eb6368SDmitry Preobrazhensky
21147eb6368SDmitry PreobrazhenskyIndicates if the data are compressed (data are not compressed by default).
21247eb6368SDmitry Preobrazhensky
21347eb6368SDmitry Preobrazhensky    ======================================== ================================================
21447eb6368SDmitry Preobrazhensky    Syntax                                   Description
21547eb6368SDmitry Preobrazhensky    ======================================== ================================================
21647eb6368SDmitry Preobrazhensky    compr                                    Data are compressed.
21747eb6368SDmitry Preobrazhensky    ======================================== ================================================
21847eb6368SDmitry Preobrazhensky
21947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vm:
22047eb6368SDmitry Preobrazhensky
22147eb6368SDmitry Preobrazhenskyvm
22247eb6368SDmitry Preobrazhensky~~
22347eb6368SDmitry Preobrazhensky
22447eb6368SDmitry PreobrazhenskySpecifies valid mask flag state (off by default).
22547eb6368SDmitry Preobrazhensky
22647eb6368SDmitry Preobrazhensky    ======================================== ================================================
22747eb6368SDmitry Preobrazhensky    Syntax                                   Description
22847eb6368SDmitry Preobrazhensky    ======================================== ================================================
22947eb6368SDmitry Preobrazhensky    vm                                       Set valid mask flag.
23047eb6368SDmitry Preobrazhensky    ======================================== ================================================
23147eb6368SDmitry Preobrazhensky
23247eb6368SDmitry PreobrazhenskyFLAT Modifiers
23347eb6368SDmitry Preobrazhensky--------------
23447eb6368SDmitry Preobrazhensky
23547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset12:
23647eb6368SDmitry Preobrazhensky
237ddac5c9bSDmitry Preobrazhenskyoffset12
238ddac5c9bSDmitry Preobrazhensky~~~~~~~~
23947eb6368SDmitry Preobrazhensky
24047eb6368SDmitry PreobrazhenskySpecifies an immediate unsigned 12-bit offset, in bytes. The default value is 0.
24147eb6368SDmitry Preobrazhensky
24247eb6368SDmitry PreobrazhenskyCannot be used with *global/scratch* opcodes. GFX9 only.
24347eb6368SDmitry Preobrazhensky
244b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
24547eb6368SDmitry Preobrazhensky    Syntax            Description
246b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
24747eb6368SDmitry Preobrazhensky    offset:{0..4095}  Specifies a 12-bit unsigned offset as a positive
248b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
249b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
250b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
25147eb6368SDmitry Preobrazhensky
25247eb6368SDmitry PreobrazhenskyExamples:
25347eb6368SDmitry Preobrazhensky
2541fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
25547eb6368SDmitry Preobrazhensky
25647eb6368SDmitry Preobrazhensky  offset:4095
257b9683d3cSDmitry Preobrazhensky  offset:x-0xff
25847eb6368SDmitry Preobrazhensky
259ddac5c9bSDmitry Preobrazhensky.. _amdgpu_synid_flat_offset13s:
26047eb6368SDmitry Preobrazhensky
261ddac5c9bSDmitry Preobrazhenskyoffset13s
262ddac5c9bSDmitry Preobrazhensky~~~~~~~~~
26347eb6368SDmitry Preobrazhensky
26447eb6368SDmitry PreobrazhenskySpecifies an immediate signed 13-bit offset, in bytes. The default value is 0.
26547eb6368SDmitry Preobrazhensky
26647eb6368SDmitry PreobrazhenskyCan be used with *global/scratch* opcodes only. GFX9 only.
26747eb6368SDmitry Preobrazhensky
268b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
26947eb6368SDmitry Preobrazhensky    Syntax                Description
270b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
271ddac5c9bSDmitry Preobrazhensky    offset:{-4096..4095}  Specifies a 13-bit signed offset as an
272b9683d3cSDmitry Preobrazhensky                          :ref:`integer number <amdgpu_synid_integer_number>`
273b9683d3cSDmitry Preobrazhensky                          or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
274b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
27547eb6368SDmitry Preobrazhensky
27647eb6368SDmitry PreobrazhenskyExamples:
27747eb6368SDmitry Preobrazhensky
2781fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
27947eb6368SDmitry Preobrazhensky
28047eb6368SDmitry Preobrazhensky  offset:-4000
28147eb6368SDmitry Preobrazhensky  offset:0x10
282b9683d3cSDmitry Preobrazhensky  offset:-x
28347eb6368SDmitry Preobrazhensky
284cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset12s:
285cef9d421SDmitry Preobrazhensky
286cef9d421SDmitry Preobrazhenskyoffset12s
287cef9d421SDmitry Preobrazhensky~~~~~~~~~
288cef9d421SDmitry Preobrazhensky
289cef9d421SDmitry PreobrazhenskySpecifies an immediate signed 12-bit offset, in bytes. The default value is 0.
290cef9d421SDmitry Preobrazhensky
291cef9d421SDmitry PreobrazhenskyCan be used with *global/scratch* opcodes only.
292cef9d421SDmitry Preobrazhensky
293cef9d421SDmitry PreobrazhenskyGFX10 only.
294cef9d421SDmitry Preobrazhensky
295b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
296cef9d421SDmitry Preobrazhensky    Syntax                Description
297b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
298cef9d421SDmitry Preobrazhensky    offset:{-2048..2047}  Specifies a 12-bit signed offset as an
299b9683d3cSDmitry Preobrazhensky                          :ref:`integer number <amdgpu_synid_integer_number>`
300b9683d3cSDmitry Preobrazhensky                          or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
301b9683d3cSDmitry Preobrazhensky    ===================== ====================================================================
302cef9d421SDmitry Preobrazhensky
303cef9d421SDmitry PreobrazhenskyExamples:
304cef9d421SDmitry Preobrazhensky
305cef9d421SDmitry Preobrazhensky.. parsed-literal::
306cef9d421SDmitry Preobrazhensky
307cef9d421SDmitry Preobrazhensky  offset:-2000
308cef9d421SDmitry Preobrazhensky  offset:0x10
309b9683d3cSDmitry Preobrazhensky  offset:-x+y
310cef9d421SDmitry Preobrazhensky
311cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_flat_offset11:
312cef9d421SDmitry Preobrazhensky
313cef9d421SDmitry Preobrazhenskyoffset11
314cef9d421SDmitry Preobrazhensky~~~~~~~~
315cef9d421SDmitry Preobrazhensky
316cef9d421SDmitry PreobrazhenskySpecifies an immediate unsigned 11-bit offset, in bytes. The default value is 0.
317cef9d421SDmitry Preobrazhensky
318cef9d421SDmitry PreobrazhenskyCannot be used with *global/scratch* opcodes.
319cef9d421SDmitry Preobrazhensky
320cef9d421SDmitry PreobrazhenskyGFX10 only.
321cef9d421SDmitry Preobrazhensky
322b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
323cef9d421SDmitry Preobrazhensky    Syntax            Description
324b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
325cef9d421SDmitry Preobrazhensky    offset:{0..2047}  Specifies an 11-bit unsigned offset as a positive
326b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
327b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
328b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
329cef9d421SDmitry Preobrazhensky
330cef9d421SDmitry PreobrazhenskyExamples:
331cef9d421SDmitry Preobrazhensky
332cef9d421SDmitry Preobrazhensky.. parsed-literal::
333cef9d421SDmitry Preobrazhensky
334cef9d421SDmitry Preobrazhensky  offset:2047
335b9683d3cSDmitry Preobrazhensky  offset:x+0xff
336cef9d421SDmitry Preobrazhensky
337cef9d421SDmitry Preobrazhenskydlc
338cef9d421SDmitry Preobrazhensky~~~
339cef9d421SDmitry Preobrazhensky
340cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`. GFX10 only.
341cef9d421SDmitry Preobrazhensky
34247eb6368SDmitry Preobrazhenskyglc
34347eb6368SDmitry Preobrazhensky~~~
34447eb6368SDmitry Preobrazhensky
34547eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
34647eb6368SDmitry Preobrazhensky
347cef9d421SDmitry Preobrazhenskylds
348cef9d421SDmitry Preobrazhensky~~~
349cef9d421SDmitry Preobrazhensky
350cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_lds>`. GFX10 only.
351cef9d421SDmitry Preobrazhensky
35247eb6368SDmitry Preobrazhenskyslc
35347eb6368SDmitry Preobrazhensky~~~
35447eb6368SDmitry Preobrazhensky
35547eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
35647eb6368SDmitry Preobrazhensky
35747eb6368SDmitry Preobrazhenskytfe
35847eb6368SDmitry Preobrazhensky~~~
35947eb6368SDmitry Preobrazhensky
36047eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
36147eb6368SDmitry Preobrazhensky
36247eb6368SDmitry Preobrazhenskynv
36347eb6368SDmitry Preobrazhensky~~
36447eb6368SDmitry Preobrazhensky
36547eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nv>`.
36647eb6368SDmitry Preobrazhensky
36762c46093SDmitry Preobrazhenskysc0
36862c46093SDmitry Preobrazhensky~~~
36962c46093SDmitry Preobrazhensky
37062c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_sc0>`.
37162c46093SDmitry Preobrazhensky
37262c46093SDmitry Preobrazhenskysc1
37362c46093SDmitry Preobrazhensky~~~
37462c46093SDmitry Preobrazhensky
37562c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_sc1>`.
37662c46093SDmitry Preobrazhensky
37762c46093SDmitry Preobrazhenskynt
37862c46093SDmitry Preobrazhensky~~
37962c46093SDmitry Preobrazhensky
38062c46093SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nt>`.
38162c46093SDmitry Preobrazhensky
38247eb6368SDmitry PreobrazhenskyMIMG Modifiers
38347eb6368SDmitry Preobrazhensky--------------
38447eb6368SDmitry Preobrazhensky
38547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dmask:
38647eb6368SDmitry Preobrazhensky
38747eb6368SDmitry Preobrazhenskydmask
38847eb6368SDmitry Preobrazhensky~~~~~
38947eb6368SDmitry Preobrazhensky
39047eb6368SDmitry PreobrazhenskySpecifies which channels (image components) are used by the operation. By default, no channels
39147eb6368SDmitry Preobrazhenskyare used.
39247eb6368SDmitry Preobrazhensky
393b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
39447eb6368SDmitry Preobrazhensky    Syntax          Description
395b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
39647eb6368SDmitry Preobrazhensky    dmask:{0..15}   Specifies image channels as a positive
397b9683d3cSDmitry Preobrazhensky                    :ref:`integer number <amdgpu_synid_integer_number>`
398b9683d3cSDmitry Preobrazhensky                    or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
39947eb6368SDmitry Preobrazhensky
400b9683d3cSDmitry Preobrazhensky                    Each bit corresponds to one of 4 image components (RGBA).
40147eb6368SDmitry Preobrazhensky
402b9683d3cSDmitry Preobrazhensky                    If the specified bit value is 0, the component is not used,
403b9683d3cSDmitry Preobrazhensky                    value 1 means that the component is used.
404b9683d3cSDmitry Preobrazhensky    =============== ====================================================================
40547eb6368SDmitry Preobrazhensky
40647eb6368SDmitry PreobrazhenskyThis modifier has some limitations depending on instruction kind:
40747eb6368SDmitry Preobrazhensky
40847eb6368SDmitry Preobrazhensky    =================================================== ========================
40947eb6368SDmitry Preobrazhensky    Instruction Kind                                    Valid dmask Values
41047eb6368SDmitry Preobrazhensky    =================================================== ========================
41147eb6368SDmitry Preobrazhensky    32-bit atomic *cmpswap*                             0x3
41247eb6368SDmitry Preobrazhensky    32-bit atomic instructions except for *cmpswap*     0x1
41347eb6368SDmitry Preobrazhensky    64-bit atomic *cmpswap*                             0xF
41447eb6368SDmitry Preobrazhensky    64-bit atomic instructions except for *cmpswap*     0x3
41547eb6368SDmitry Preobrazhensky    *gather4*                                           0x1, 0x2, 0x4, 0x8
41647eb6368SDmitry Preobrazhensky    Other instructions                                  any value
41747eb6368SDmitry Preobrazhensky    =================================================== ========================
41847eb6368SDmitry Preobrazhensky
41947eb6368SDmitry PreobrazhenskyExamples:
42047eb6368SDmitry Preobrazhensky
4211fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
42247eb6368SDmitry Preobrazhensky
42347eb6368SDmitry Preobrazhensky  dmask:0xf
42447eb6368SDmitry Preobrazhensky  dmask:0b1111
425b9683d3cSDmitry Preobrazhensky  dmask:x|y|z
42647eb6368SDmitry Preobrazhensky
42747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_unorm:
42847eb6368SDmitry Preobrazhensky
42947eb6368SDmitry Preobrazhenskyunorm
43047eb6368SDmitry Preobrazhensky~~~~~
43147eb6368SDmitry Preobrazhensky
43247eb6368SDmitry PreobrazhenskySpecifies whether the address is normalized or not (the address is normalized by default).
43347eb6368SDmitry Preobrazhensky
43447eb6368SDmitry Preobrazhensky    ======================== ========================================
43547eb6368SDmitry Preobrazhensky    Syntax                   Description
43647eb6368SDmitry Preobrazhensky    ======================== ========================================
43747eb6368SDmitry Preobrazhensky    unorm                    Force the address to be unnormalized.
43847eb6368SDmitry Preobrazhensky    ======================== ========================================
43947eb6368SDmitry Preobrazhensky
44047eb6368SDmitry Preobrazhenskyglc
44147eb6368SDmitry Preobrazhensky~~~
44247eb6368SDmitry Preobrazhensky
44347eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
44447eb6368SDmitry Preobrazhensky
44547eb6368SDmitry Preobrazhenskyslc
44647eb6368SDmitry Preobrazhensky~~~
44747eb6368SDmitry Preobrazhensky
44847eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
44947eb6368SDmitry Preobrazhensky
45047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_r128:
45147eb6368SDmitry Preobrazhensky
45247eb6368SDmitry Preobrazhenskyr128
45347eb6368SDmitry Preobrazhensky~~~~
45447eb6368SDmitry Preobrazhensky
45547eb6368SDmitry PreobrazhenskySpecifies texture resource size. The default size is 256 bits.
45647eb6368SDmitry Preobrazhensky
457cef9d421SDmitry PreobrazhenskyGFX7, GFX8 and GFX10 only.
45847eb6368SDmitry Preobrazhensky
45947eb6368SDmitry Preobrazhensky    =================== ================================================
46047eb6368SDmitry Preobrazhensky    Syntax              Description
46147eb6368SDmitry Preobrazhensky    =================== ================================================
46247eb6368SDmitry Preobrazhensky    r128                Specifies 128 bits texture resource size.
46347eb6368SDmitry Preobrazhensky    =================== ================================================
46447eb6368SDmitry Preobrazhensky
465e8fa9014SKazu Hirata.. WARNING:: Using this modifier should decrease *rsrc* operand size from 8 to 4 dwords, but assembler does not currently support this feature.
46647eb6368SDmitry Preobrazhensky
46747eb6368SDmitry Preobrazhenskytfe
46847eb6368SDmitry Preobrazhensky~~~
46947eb6368SDmitry Preobrazhensky
47047eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
47147eb6368SDmitry Preobrazhensky
47247eb6368SDmitry Preobrazhensky.. _amdgpu_synid_lwe:
47347eb6368SDmitry Preobrazhensky
47447eb6368SDmitry Preobrazhenskylwe
47547eb6368SDmitry Preobrazhensky~~~
47647eb6368SDmitry Preobrazhensky
47747eb6368SDmitry PreobrazhenskySpecifies LOD warning status (LOD warning is disabled by default).
47847eb6368SDmitry Preobrazhensky
47947eb6368SDmitry Preobrazhensky    ======================================== ================================================
48047eb6368SDmitry Preobrazhensky    Syntax                                   Description
48147eb6368SDmitry Preobrazhensky    ======================================== ================================================
48247eb6368SDmitry Preobrazhensky    lwe                                      Enables LOD warning.
48347eb6368SDmitry Preobrazhensky    ======================================== ================================================
48447eb6368SDmitry Preobrazhensky
48547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_da:
48647eb6368SDmitry Preobrazhensky
48747eb6368SDmitry Preobrazhenskyda
48847eb6368SDmitry Preobrazhensky~~
48947eb6368SDmitry Preobrazhensky
49047eb6368SDmitry PreobrazhenskySpecifies if an array index must be sent to TA. By default, array index is not sent.
49147eb6368SDmitry Preobrazhensky
49247eb6368SDmitry Preobrazhensky    ======================================== ================================================
49347eb6368SDmitry Preobrazhensky    Syntax                                   Description
49447eb6368SDmitry Preobrazhensky    ======================================== ================================================
49547eb6368SDmitry Preobrazhensky    da                                       Send an array-index to TA.
49647eb6368SDmitry Preobrazhensky    ======================================== ================================================
49747eb6368SDmitry Preobrazhensky
49847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_d16:
49947eb6368SDmitry Preobrazhensky
50047eb6368SDmitry Preobrazhenskyd16
50147eb6368SDmitry Preobrazhensky~~~
50247eb6368SDmitry Preobrazhensky
50347eb6368SDmitry PreobrazhenskySpecifies data size: 16 or 32 bits (32 bits by default). Not supported by GFX7.
50447eb6368SDmitry Preobrazhensky
50547eb6368SDmitry Preobrazhensky    ======================================== ================================================
50647eb6368SDmitry Preobrazhensky    Syntax                                   Description
50747eb6368SDmitry Preobrazhensky    ======================================== ================================================
50847eb6368SDmitry Preobrazhensky    d16                                      Enables 16-bits data mode.
50947eb6368SDmitry Preobrazhensky
51047eb6368SDmitry Preobrazhensky                                             On loads, convert data in memory to 16-bit
51147eb6368SDmitry Preobrazhensky                                             format before storing it in VGPRs.
51247eb6368SDmitry Preobrazhensky
51347eb6368SDmitry Preobrazhensky                                             For stores, convert 16-bit data in VGPRs to
51447eb6368SDmitry Preobrazhensky                                             32 bits before going to memory.
51547eb6368SDmitry Preobrazhensky
51647eb6368SDmitry Preobrazhensky                                             Note that GFX8.0 does not support data packing.
51747eb6368SDmitry Preobrazhensky                                             Each 16-bit data element occupies 1 VGPR.
51847eb6368SDmitry Preobrazhensky
519cef9d421SDmitry Preobrazhensky                                             GFX8.1, GFX9 and GFX10 support data packing.
52047eb6368SDmitry Preobrazhensky                                             Each pair of 16-bit data elements
52147eb6368SDmitry Preobrazhensky                                             occupies 1 VGPR.
52247eb6368SDmitry Preobrazhensky    ======================================== ================================================
52347eb6368SDmitry Preobrazhensky
52447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_a16:
52547eb6368SDmitry Preobrazhensky
52647eb6368SDmitry Preobrazhenskya16
52747eb6368SDmitry Preobrazhensky~~~
52847eb6368SDmitry Preobrazhensky
529cef9d421SDmitry PreobrazhenskySpecifies size of image address components: 16 or 32 bits (32 bits by default).
530cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
53147eb6368SDmitry Preobrazhensky
53247eb6368SDmitry Preobrazhensky    ======================================== ================================================
53347eb6368SDmitry Preobrazhensky    Syntax                                   Description
53447eb6368SDmitry Preobrazhensky    ======================================== ================================================
53547eb6368SDmitry Preobrazhensky    a16                                      Enables 16-bits image address components.
53647eb6368SDmitry Preobrazhensky    ======================================== ================================================
53747eb6368SDmitry Preobrazhensky
538cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dim:
539cef9d421SDmitry Preobrazhensky
540cef9d421SDmitry Preobrazhenskydim
541cef9d421SDmitry Preobrazhensky~~~
542cef9d421SDmitry Preobrazhensky
543cef9d421SDmitry PreobrazhenskySpecifies surface dimension. This is a mandatory modifier. There is no default value.
544cef9d421SDmitry Preobrazhensky
545cef9d421SDmitry PreobrazhenskyGFX10 only.
546cef9d421SDmitry Preobrazhensky
547cef9d421SDmitry Preobrazhensky    =============================== =========================================================
548cef9d421SDmitry Preobrazhensky    Syntax                          Description
549cef9d421SDmitry Preobrazhensky    =============================== =========================================================
550cef9d421SDmitry Preobrazhensky    dim:1D                          One-dimensional image.
551cef9d421SDmitry Preobrazhensky    dim:2D                          Two-dimensional image.
552cef9d421SDmitry Preobrazhensky    dim:3D                          Three-dimensional image.
553cef9d421SDmitry Preobrazhensky    dim:CUBE                        Cubemap array.
554cef9d421SDmitry Preobrazhensky    dim:1D_ARRAY                    One-dimensional image array.
555cef9d421SDmitry Preobrazhensky    dim:2D_ARRAY                    Two-dimensional image array.
556cef9d421SDmitry Preobrazhensky    dim:2D_MSAA                     Two-dimensional multi-sample auto-aliasing image.
557cef9d421SDmitry Preobrazhensky    dim:2D_MSAA_ARRAY               Two-dimensional multi-sample auto-aliasing image array.
558cef9d421SDmitry Preobrazhensky    =============================== =========================================================
559cef9d421SDmitry Preobrazhensky
560cef9d421SDmitry PreobrazhenskyThe following table defines an alternative syntax which is supported
561cef9d421SDmitry Preobrazhenskyfor compatibility with SP3 assembler:
562cef9d421SDmitry Preobrazhensky
563cef9d421SDmitry Preobrazhensky    =============================== =========================================================
564cef9d421SDmitry Preobrazhensky    Syntax                          Description
565cef9d421SDmitry Preobrazhensky    =============================== =========================================================
566cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_1D              One-dimensional image.
567cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D              Two-dimensional image.
568cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_3D              Three-dimensional image.
569cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_CUBE            Cubemap array.
570cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_1D_ARRAY        One-dimensional image array.
571cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_ARRAY        Two-dimensional image array.
572cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_MSAA         Two-dimensional multi-sample auto-aliasing image.
573cef9d421SDmitry Preobrazhensky    dim:SQ_RSRC_IMG_2D_MSAA_ARRAY   Two-dimensional multi-sample auto-aliasing image array.
574cef9d421SDmitry Preobrazhensky    =============================== =========================================================
575cef9d421SDmitry Preobrazhensky
576cef9d421SDmitry Preobrazhenskydlc
577cef9d421SDmitry Preobrazhensky~~~
578cef9d421SDmitry Preobrazhensky
579cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`. GFX10 only.
580cef9d421SDmitry Preobrazhensky
58147eb6368SDmitry PreobrazhenskyMiscellaneous Modifiers
58247eb6368SDmitry Preobrazhensky-----------------------
58347eb6368SDmitry Preobrazhensky
584cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dlc:
585cef9d421SDmitry Preobrazhensky
586cef9d421SDmitry Preobrazhenskydlc
587cef9d421SDmitry Preobrazhensky~~~
588cef9d421SDmitry Preobrazhensky
589cef9d421SDmitry PreobrazhenskyControls device level cache policy for memory operations. Used for synchronization.
590cef9d421SDmitry PreobrazhenskyWhen specified, forces operation to bypass device level cache making the operation device
591cef9d421SDmitry Preobrazhenskylevel coherent. By default, instructions use device level cache.
592cef9d421SDmitry Preobrazhensky
593cef9d421SDmitry PreobrazhenskyGFX10 only.
594cef9d421SDmitry Preobrazhensky
595cef9d421SDmitry Preobrazhensky    ======================================== ================================================
596cef9d421SDmitry Preobrazhensky    Syntax                                   Description
597cef9d421SDmitry Preobrazhensky    ======================================== ================================================
598cef9d421SDmitry Preobrazhensky    dlc                                      Bypass device level cache.
599cef9d421SDmitry Preobrazhensky    ======================================== ================================================
600cef9d421SDmitry Preobrazhensky
60147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_glc:
60247eb6368SDmitry Preobrazhensky
60347eb6368SDmitry Preobrazhenskyglc
60447eb6368SDmitry Preobrazhensky~~~
60547eb6368SDmitry Preobrazhensky
60647eb6368SDmitry PreobrazhenskyThis modifier has different meaning for loads, stores, and atomic operations.
60747eb6368SDmitry PreobrazhenskyThe default value is off (0).
60847eb6368SDmitry Preobrazhensky
60947eb6368SDmitry PreobrazhenskySee AMD documentation for details.
61047eb6368SDmitry Preobrazhensky
61147eb6368SDmitry Preobrazhensky    ======================================== ================================================
61247eb6368SDmitry Preobrazhensky    Syntax                                   Description
61347eb6368SDmitry Preobrazhensky    ======================================== ================================================
61447eb6368SDmitry Preobrazhensky    glc                                      Set glc bit to 1.
61547eb6368SDmitry Preobrazhensky    ======================================== ================================================
61647eb6368SDmitry Preobrazhensky
617cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_lds:
618cef9d421SDmitry Preobrazhensky
619cef9d421SDmitry Preobrazhenskylds
620cef9d421SDmitry Preobrazhensky~~~
621cef9d421SDmitry Preobrazhensky
622cef9d421SDmitry PreobrazhenskySpecifies where to store the result: VGPRs or LDS (VGPRs by default).
623cef9d421SDmitry Preobrazhensky
624cef9d421SDmitry Preobrazhensky    ======================================== ===========================
625cef9d421SDmitry Preobrazhensky    Syntax                                   Description
626cef9d421SDmitry Preobrazhensky    ======================================== ===========================
627cef9d421SDmitry Preobrazhensky    lds                                      Store result in LDS.
628cef9d421SDmitry Preobrazhensky    ======================================== ===========================
629cef9d421SDmitry Preobrazhensky
630cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_nv:
631cef9d421SDmitry Preobrazhensky
632cef9d421SDmitry Preobrazhenskynv
633cef9d421SDmitry Preobrazhensky~~
634cef9d421SDmitry Preobrazhensky
635cef9d421SDmitry PreobrazhenskySpecifies if instruction is operating on non-volatile memory. By default, memory is volatile.
636cef9d421SDmitry Preobrazhensky
637cef9d421SDmitry PreobrazhenskyGFX9 only.
638cef9d421SDmitry Preobrazhensky
639cef9d421SDmitry Preobrazhensky    ======================================== ================================================
640cef9d421SDmitry Preobrazhensky    Syntax                                   Description
641cef9d421SDmitry Preobrazhensky    ======================================== ================================================
642cef9d421SDmitry Preobrazhensky    nv                                       Indicates that instruction operates on
643cef9d421SDmitry Preobrazhensky                                             non-volatile memory.
644cef9d421SDmitry Preobrazhensky    ======================================== ================================================
645cef9d421SDmitry Preobrazhensky
64647eb6368SDmitry Preobrazhensky.. _amdgpu_synid_slc:
64747eb6368SDmitry Preobrazhensky
64847eb6368SDmitry Preobrazhenskyslc
64947eb6368SDmitry Preobrazhensky~~~
65047eb6368SDmitry Preobrazhensky
65147eb6368SDmitry PreobrazhenskySpecifies cache policy. The default value is off (0).
65247eb6368SDmitry Preobrazhensky
65347eb6368SDmitry PreobrazhenskySee AMD documentation for details.
65447eb6368SDmitry Preobrazhensky
65547eb6368SDmitry Preobrazhensky    ======================================== ================================================
65647eb6368SDmitry Preobrazhensky    Syntax                                   Description
65747eb6368SDmitry Preobrazhensky    ======================================== ================================================
65847eb6368SDmitry Preobrazhensky    slc                                      Set slc bit to 1.
65947eb6368SDmitry Preobrazhensky    ======================================== ================================================
66047eb6368SDmitry Preobrazhensky
66147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_tfe:
66247eb6368SDmitry Preobrazhensky
66347eb6368SDmitry Preobrazhenskytfe
66447eb6368SDmitry Preobrazhensky~~~
66547eb6368SDmitry Preobrazhensky
66647eb6368SDmitry PreobrazhenskyControls access to partially resident textures. The default value is off (0).
66747eb6368SDmitry Preobrazhensky
66847eb6368SDmitry PreobrazhenskySee AMD documentation for details.
66947eb6368SDmitry Preobrazhensky
67047eb6368SDmitry Preobrazhensky    ======================================== ================================================
67147eb6368SDmitry Preobrazhensky    Syntax                                   Description
67247eb6368SDmitry Preobrazhensky    ======================================== ================================================
67347eb6368SDmitry Preobrazhensky    tfe                                      Set tfe bit to 1.
67447eb6368SDmitry Preobrazhensky    ======================================== ================================================
67547eb6368SDmitry Preobrazhensky
67662c46093SDmitry Preobrazhensky.. _amdgpu_synid_sc0:
67762c46093SDmitry Preobrazhensky
67862c46093SDmitry Preobrazhenskysc0
67962c46093SDmitry Preobrazhensky~~~
68062c46093SDmitry Preobrazhensky
68162c46093SDmitry PreobrazhenskyFor atomics, sc0 indicates that the atomic operation returns a value.
68262c46093SDmitry PreobrazhenskyFor other opcodes is is used together with :ref:`sc1<amdgpu_synid_sc1>` to specify cache
68362c46093SDmitry Preobrazhenskypolicy. See AMD documentation for details.
68462c46093SDmitry Preobrazhensky
68562c46093SDmitry Preobrazhensky    ======================================== ================================================
68662c46093SDmitry Preobrazhensky    Syntax                                   Description
68762c46093SDmitry Preobrazhensky    ======================================== ================================================
68862c46093SDmitry Preobrazhensky    sc0                                      Set sc0 bit to 1.
68962c46093SDmitry Preobrazhensky    ======================================== ================================================
69062c46093SDmitry Preobrazhensky
69162c46093SDmitry Preobrazhensky.. _amdgpu_synid_sc1:
69262c46093SDmitry Preobrazhensky
69362c46093SDmitry Preobrazhenskysc1
69462c46093SDmitry Preobrazhensky~~~
69562c46093SDmitry Preobrazhensky
69662c46093SDmitry PreobrazhenskyThis modifier is used together with :ref:`sc0<amdgpu_synid_sc0>` to specify cache
69762c46093SDmitry Preobrazhenskypolicy.
69862c46093SDmitry Preobrazhensky
69962c46093SDmitry Preobrazhensky    ======================================== ================================================
70062c46093SDmitry Preobrazhensky    Syntax                                   Description
70162c46093SDmitry Preobrazhensky    ======================================== ================================================
70262c46093SDmitry Preobrazhensky    sc1                                      Set sc1 bit to 1.
70362c46093SDmitry Preobrazhensky    ======================================== ================================================
70462c46093SDmitry Preobrazhensky
70562c46093SDmitry Preobrazhensky.. _amdgpu_synid_nt:
70662c46093SDmitry Preobrazhensky
70762c46093SDmitry Preobrazhenskynt
70862c46093SDmitry Preobrazhensky~~
70962c46093SDmitry Preobrazhensky
71062c46093SDmitry PreobrazhenskyIndicates an operation with non-temporal data.
71162c46093SDmitry Preobrazhensky
71262c46093SDmitry Preobrazhensky    ======================================== ================================================
71362c46093SDmitry Preobrazhensky    Syntax                                   Description
71462c46093SDmitry Preobrazhensky    ======================================== ================================================
71562c46093SDmitry Preobrazhensky    nt                                       Set nt bit to 1.
71662c46093SDmitry Preobrazhensky    ======================================== ================================================
71762c46093SDmitry Preobrazhensky
71847eb6368SDmitry PreobrazhenskyMUBUF/MTBUF Modifiers
71947eb6368SDmitry Preobrazhensky---------------------
72047eb6368SDmitry Preobrazhensky
72147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_idxen:
72247eb6368SDmitry Preobrazhensky
72347eb6368SDmitry Preobrazhenskyidxen
72447eb6368SDmitry Preobrazhensky~~~~~
72547eb6368SDmitry Preobrazhensky
72647eb6368SDmitry PreobrazhenskySpecifies whether address components include an index. By default, no components are used.
72747eb6368SDmitry Preobrazhensky
72847eb6368SDmitry PreobrazhenskyCan be used together with :ref:`offen<amdgpu_synid_offen>`.
72947eb6368SDmitry Preobrazhensky
73047eb6368SDmitry PreobrazhenskyCannot be used with :ref:`addr64<amdgpu_synid_addr64>`.
73147eb6368SDmitry Preobrazhensky
73247eb6368SDmitry Preobrazhensky    ======================================== ================================================
73347eb6368SDmitry Preobrazhensky    Syntax                                   Description
73447eb6368SDmitry Preobrazhensky    ======================================== ================================================
73547eb6368SDmitry Preobrazhensky    idxen                                    Address components include an index.
73647eb6368SDmitry Preobrazhensky    ======================================== ================================================
73747eb6368SDmitry Preobrazhensky
73847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_offen:
73947eb6368SDmitry Preobrazhensky
74047eb6368SDmitry Preobrazhenskyoffen
74147eb6368SDmitry Preobrazhensky~~~~~
74247eb6368SDmitry Preobrazhensky
74347eb6368SDmitry PreobrazhenskySpecifies whether address components include an offset. By default, no components are used.
74447eb6368SDmitry Preobrazhensky
74547eb6368SDmitry PreobrazhenskyCan be used together with :ref:`idxen<amdgpu_synid_idxen>`.
74647eb6368SDmitry Preobrazhensky
74747eb6368SDmitry PreobrazhenskyCannot be used with :ref:`addr64<amdgpu_synid_addr64>`.
74847eb6368SDmitry Preobrazhensky
74947eb6368SDmitry Preobrazhensky    ======================================== ================================================
75047eb6368SDmitry Preobrazhensky    Syntax                                   Description
75147eb6368SDmitry Preobrazhensky    ======================================== ================================================
75247eb6368SDmitry Preobrazhensky    offen                                    Address components include an offset.
75347eb6368SDmitry Preobrazhensky    ======================================== ================================================
75447eb6368SDmitry Preobrazhensky
75547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_addr64:
75647eb6368SDmitry Preobrazhensky
75747eb6368SDmitry Preobrazhenskyaddr64
75847eb6368SDmitry Preobrazhensky~~~~~~
75947eb6368SDmitry Preobrazhensky
76047eb6368SDmitry PreobrazhenskySpecifies whether a 64-bit address is used. By default, no address is used.
76147eb6368SDmitry Preobrazhensky
76247eb6368SDmitry PreobrazhenskyGFX7 only. Cannot be used with :ref:`offen<amdgpu_synid_offen>` and
76347eb6368SDmitry Preobrazhensky:ref:`idxen<amdgpu_synid_idxen>` modifiers.
76447eb6368SDmitry Preobrazhensky
76547eb6368SDmitry Preobrazhensky    ======================================== ================================================
76647eb6368SDmitry Preobrazhensky    Syntax                                   Description
76747eb6368SDmitry Preobrazhensky    ======================================== ================================================
76847eb6368SDmitry Preobrazhensky    addr64                                   A 64-bit address is used.
76947eb6368SDmitry Preobrazhensky    ======================================== ================================================
77047eb6368SDmitry Preobrazhensky
77147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_buf_offset12:
77247eb6368SDmitry Preobrazhensky
773ddac5c9bSDmitry Preobrazhenskyoffset12
774ddac5c9bSDmitry Preobrazhensky~~~~~~~~
77547eb6368SDmitry Preobrazhensky
77647eb6368SDmitry PreobrazhenskySpecifies an immediate unsigned 12-bit offset, in bytes. The default value is 0.
77747eb6368SDmitry Preobrazhensky
778b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
77947eb6368SDmitry Preobrazhensky    Syntax             Description
780b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
78147eb6368SDmitry Preobrazhensky    offset:{0..0xFFF}  Specifies a 12-bit unsigned offset as a positive
782b9683d3cSDmitry Preobrazhensky                       :ref:`integer number <amdgpu_synid_integer_number>`
783b9683d3cSDmitry Preobrazhensky                       or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
784b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
78547eb6368SDmitry Preobrazhensky
78647eb6368SDmitry PreobrazhenskyExamples:
78747eb6368SDmitry Preobrazhensky
7881fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
78947eb6368SDmitry Preobrazhensky
790b9683d3cSDmitry Preobrazhensky  offset:x+y
79147eb6368SDmitry Preobrazhensky  offset:0x10
79247eb6368SDmitry Preobrazhensky
79347eb6368SDmitry Preobrazhenskyglc
79447eb6368SDmitry Preobrazhensky~~~
79547eb6368SDmitry Preobrazhensky
79647eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
79747eb6368SDmitry Preobrazhensky
79847eb6368SDmitry Preobrazhenskyslc
79947eb6368SDmitry Preobrazhensky~~~
80047eb6368SDmitry Preobrazhensky
80147eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_slc>`.
80247eb6368SDmitry Preobrazhensky
80347eb6368SDmitry Preobrazhenskylds
80447eb6368SDmitry Preobrazhensky~~~
80547eb6368SDmitry Preobrazhensky
806cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_lds>`.
80747eb6368SDmitry Preobrazhensky
808cef9d421SDmitry Preobrazhenskydlc
809cef9d421SDmitry Preobrazhensky~~~
810cef9d421SDmitry Preobrazhensky
811cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`. GFX10 only.
81247eb6368SDmitry Preobrazhensky
81347eb6368SDmitry Preobrazhenskytfe
81447eb6368SDmitry Preobrazhensky~~~
81547eb6368SDmitry Preobrazhensky
81647eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_tfe>`.
81747eb6368SDmitry Preobrazhensky
8183f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_fmt:
81947eb6368SDmitry Preobrazhensky
8203f7985e6SDmitry Preobrazhenskyfmt
8213f7985e6SDmitry Preobrazhensky~~~
8223f7985e6SDmitry Preobrazhensky
8233f7985e6SDmitry PreobrazhenskySpecifies data and numeric formats used by the operation.
8243f7985e6SDmitry PreobrazhenskyThe default numeric format is BUF_NUM_FORMAT_UNORM.
8253f7985e6SDmitry PreobrazhenskyThe default data format is BUF_DATA_FORMAT_8.
8263f7985e6SDmitry Preobrazhensky
8273f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8283f7985e6SDmitry Preobrazhensky    Syntax                                    Description
8293f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8303f7985e6SDmitry Preobrazhensky    format:{0..127}                           Use format specified as either an
8313f7985e6SDmitry Preobrazhensky                                              :ref:`integer number<amdgpu_synid_integer_number>` or an
8323f7985e6SDmitry Preobrazhensky                                              :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
8333f7985e6SDmitry Preobrazhensky    format:[<data format>]                    Use the specified data format and
8343f7985e6SDmitry Preobrazhensky                                              default numeric format.
8353f7985e6SDmitry Preobrazhensky    format:[<numeric format>]                 Use the specified numeric format and
8363f7985e6SDmitry Preobrazhensky                                              default data format.
8373f7985e6SDmitry Preobrazhensky    format:[<data format>, <numeric format>]  Use the specified data and numeric formats.
8383f7985e6SDmitry Preobrazhensky    format:[<numeric format>, <data format>]  Use the specified data and numeric formats.
8393f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
8403f7985e6SDmitry Preobrazhensky
8413f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_format_data:
8423f7985e6SDmitry Preobrazhensky
8433f7985e6SDmitry PreobrazhenskySupported data formats are defined in the following table:
8443f7985e6SDmitry Preobrazhensky
8453f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8463f7985e6SDmitry Preobrazhensky    Syntax                                    Note
8473f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8483f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_INVALID
8493f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_8                         Default value.
8503f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16
8513f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_8_8
8523f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32
8533f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16_16
8543f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_10_11_11
8553f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_11_11_10
8563f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_10_10_10_2
8573f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_2_10_10_10
8583f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_8_8_8_8
8593f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32
8603f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_16_16_16_16
8613f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32_32
8623f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_32_32_32_32
8633f7985e6SDmitry Preobrazhensky    BUF_DATA_FORMAT_RESERVED_15
8643f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8653f7985e6SDmitry Preobrazhensky
8663f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_format_num:
8673f7985e6SDmitry Preobrazhensky
8683f7985e6SDmitry PreobrazhenskySupported numeric formats are defined below:
8693f7985e6SDmitry Preobrazhensky
8703f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8713f7985e6SDmitry Preobrazhensky    Syntax                                    Note
8723f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8733f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_UNORM                      Default value.
8743f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SNORM
8753f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_USCALED
8763f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SSCALED
8773f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_UINT
8783f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SINT
8793f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_SNORM_OGL                  GFX7 only.
8803f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_RESERVED_6                 GFX8 and GFX9 only.
8813f7985e6SDmitry Preobrazhensky    BUF_NUM_FORMAT_FLOAT
8823f7985e6SDmitry Preobrazhensky    ========================================= ===============================
8833f7985e6SDmitry Preobrazhensky
8843f7985e6SDmitry PreobrazhenskyExamples:
8853f7985e6SDmitry Preobrazhensky
8863f7985e6SDmitry Preobrazhensky.. parsed-literal::
8873f7985e6SDmitry Preobrazhensky
8883f7985e6SDmitry Preobrazhensky  format:0
8893f7985e6SDmitry Preobrazhensky  format:127
8903f7985e6SDmitry Preobrazhensky  format:[BUF_DATA_FORMAT_16]
8913f7985e6SDmitry Preobrazhensky  format:[BUF_DATA_FORMAT_16,BUF_NUM_FORMAT_SSCALED]
8923f7985e6SDmitry Preobrazhensky  format:[BUF_NUM_FORMAT_FLOAT]
8933f7985e6SDmitry Preobrazhensky
8943f7985e6SDmitry Preobrazhensky.. _amdgpu_synid_ufmt:
8953f7985e6SDmitry Preobrazhensky
8963f7985e6SDmitry Preobrazhenskyufmt
89747eb6368SDmitry Preobrazhensky~~~~
89847eb6368SDmitry Preobrazhensky
8993f7985e6SDmitry PreobrazhenskySpecifies a unified format used by the operation.
9003f7985e6SDmitry PreobrazhenskyThe default format is BUF_FMT_8_UNORM.
9013f7985e6SDmitry PreobrazhenskyGFX10 only.
90247eb6368SDmitry Preobrazhensky
9033f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
9043f7985e6SDmitry Preobrazhensky    Syntax                                    Description
9053f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
9063f7985e6SDmitry Preobrazhensky    format:{0..127}                           Use unified format specified as either an
9073f7985e6SDmitry Preobrazhensky                                              :ref:`integer number<amdgpu_synid_integer_number>` or an
9083f7985e6SDmitry Preobrazhensky                                              :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
9093f7985e6SDmitry Preobrazhensky                                              Note that unified format numbers are not compatible with
9103f7985e6SDmitry Preobrazhensky                                              format numbers used for pre-GFX10 ISA.
9113f7985e6SDmitry Preobrazhensky    format:[<unified format>]                 Use the specified unified format.
9123f7985e6SDmitry Preobrazhensky    ========================================= ===============================================================
91347eb6368SDmitry Preobrazhensky
9143f7985e6SDmitry PreobrazhenskyUnified format is a replacement for :ref:`data<amdgpu_synid_format_data>`
9153f7985e6SDmitry Preobrazhenskyand :ref:`numeric<amdgpu_synid_format_num>` formats. For compatibility with older ISA,
916e8fa9014SKazu Hirata:ref:`syntax with data and numeric formats<amdgpu_synid_fmt>` is still accepted
9173f7985e6SDmitry Preobrazhenskyprovided that the combination of formats can be mapped to a unified format.
91847eb6368SDmitry Preobrazhensky
9193f7985e6SDmitry PreobrazhenskySupported unified formats and equivalent combinations of data and numeric formats
9203f7985e6SDmitry Preobrazhenskyare defined below:
9213f7985e6SDmitry Preobrazhensky
9223f7985e6SDmitry Preobrazhensky    ============================== ============================== =============================
9233f7985e6SDmitry Preobrazhensky    Syntax                         Equivalent Data Format         Equivalent Numeric Format
9243f7985e6SDmitry Preobrazhensky    ============================== ============================== =============================
9253f7985e6SDmitry Preobrazhensky    BUF_FMT_INVALID                BUF_DATA_FORMAT_INVALID        BUF_NUM_FORMAT_UNORM
9263f7985e6SDmitry Preobrazhensky
9273f7985e6SDmitry Preobrazhensky    BUF_FMT_8_UNORM                BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_UNORM
9283f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SNORM                BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SNORM
9293f7985e6SDmitry Preobrazhensky    BUF_FMT_8_USCALED              BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_USCALED
9303f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SSCALED              BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SSCALED
9313f7985e6SDmitry Preobrazhensky    BUF_FMT_8_UINT                 BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_UINT
9323f7985e6SDmitry Preobrazhensky    BUF_FMT_8_SINT                 BUF_DATA_FORMAT_8              BUF_NUM_FORMAT_SINT
9333f7985e6SDmitry Preobrazhensky
9343f7985e6SDmitry Preobrazhensky    BUF_FMT_16_UNORM               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_UNORM
9353f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SNORM               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SNORM
9363f7985e6SDmitry Preobrazhensky    BUF_FMT_16_USCALED             BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_USCALED
9373f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SSCALED             BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SSCALED
9383f7985e6SDmitry Preobrazhensky    BUF_FMT_16_UINT                BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_UINT
9393f7985e6SDmitry Preobrazhensky    BUF_FMT_16_SINT                BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_SINT
9403f7985e6SDmitry Preobrazhensky    BUF_FMT_16_FLOAT               BUF_DATA_FORMAT_16             BUF_NUM_FORMAT_FLOAT
9413f7985e6SDmitry Preobrazhensky
9423f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_UNORM              BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_UNORM
9433f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SNORM              BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SNORM
9443f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_USCALED            BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_USCALED
9453f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SSCALED            BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SSCALED
9463f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_UINT               BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_UINT
9473f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_SINT               BUF_DATA_FORMAT_8_8            BUF_NUM_FORMAT_SINT
9483f7985e6SDmitry Preobrazhensky
9493f7985e6SDmitry Preobrazhensky    BUF_FMT_32_UINT                BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_UINT
9503f7985e6SDmitry Preobrazhensky    BUF_FMT_32_SINT                BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_SINT
9513f7985e6SDmitry Preobrazhensky    BUF_FMT_32_FLOAT               BUF_DATA_FORMAT_32             BUF_NUM_FORMAT_FLOAT
9523f7985e6SDmitry Preobrazhensky
9533f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_UNORM            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_UNORM
9543f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SNORM            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SNORM
9553f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_USCALED          BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_USCALED
9563f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SSCALED          BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SSCALED
9573f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_UINT             BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_UINT
9583f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_SINT             BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_SINT
9593f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_FLOAT            BUF_DATA_FORMAT_16_16          BUF_NUM_FORMAT_FLOAT
9603f7985e6SDmitry Preobrazhensky
9613f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_UNORM         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_UNORM
9623f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_SNORM         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SNORM
9633f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_USCALED       BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_USCALED
9643f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_SSCALED       BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SSCALED
9653f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_UINT          BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_UINT
9663f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_SINT          BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_SINT
9673f7985e6SDmitry Preobrazhensky    BUF_FMT_10_11_11_FLOAT         BUF_DATA_FORMAT_10_11_11       BUF_NUM_FORMAT_FLOAT
9683f7985e6SDmitry Preobrazhensky
9693f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_UNORM         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_UNORM
9703f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_SNORM         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SNORM
9713f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_USCALED       BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_USCALED
9723f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_SSCALED       BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SSCALED
9733f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_UINT          BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_UINT
9743f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_SINT          BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_SINT
9753f7985e6SDmitry Preobrazhensky    BUF_FMT_11_11_10_FLOAT         BUF_DATA_FORMAT_11_11_10       BUF_NUM_FORMAT_FLOAT
9763f7985e6SDmitry Preobrazhensky
9773f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_UNORM       BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_UNORM
9783f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SNORM       BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SNORM
9793f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_USCALED     BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_USCALED
9803f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SSCALED     BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SSCALED
9813f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_UINT        BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_UINT
9823f7985e6SDmitry Preobrazhensky    BUF_FMT_10_10_10_2_SINT        BUF_DATA_FORMAT_10_10_10_2     BUF_NUM_FORMAT_SINT
9833f7985e6SDmitry Preobrazhensky
9843f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_UNORM       BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_UNORM
9853f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SNORM       BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SNORM
9863f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_USCALED     BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_USCALED
9873f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SSCALED     BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SSCALED
9883f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_UINT        BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_UINT
9893f7985e6SDmitry Preobrazhensky    BUF_FMT_2_10_10_10_SINT        BUF_DATA_FORMAT_2_10_10_10     BUF_NUM_FORMAT_SINT
9903f7985e6SDmitry Preobrazhensky
9913f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_UNORM          BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_UNORM
9923f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SNORM          BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SNORM
9933f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_USCALED        BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_USCALED
9943f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SSCALED        BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SSCALED
9953f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_UINT           BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_UINT
9963f7985e6SDmitry Preobrazhensky    BUF_FMT_8_8_8_8_SINT           BUF_DATA_FORMAT_8_8_8_8        BUF_NUM_FORMAT_SINT
9973f7985e6SDmitry Preobrazhensky
9983f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_UINT             BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_UINT
9993f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_SINT             BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_SINT
10003f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_FLOAT            BUF_DATA_FORMAT_32_32          BUF_NUM_FORMAT_FLOAT
10013f7985e6SDmitry Preobrazhensky
10023f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_UNORM      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_UNORM
10033f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SNORM      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SNORM
10043f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_USCALED    BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_USCALED
10053f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SSCALED    BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SSCALED
10063f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_UINT       BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_UINT
10073f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_SINT       BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_SINT
10083f7985e6SDmitry Preobrazhensky    BUF_FMT_16_16_16_16_FLOAT      BUF_DATA_FORMAT_16_16_16_16    BUF_NUM_FORMAT_FLOAT
10093f7985e6SDmitry Preobrazhensky
10103f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_UINT          BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_UINT
10113f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_SINT          BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_SINT
10123f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_FLOAT         BUF_DATA_FORMAT_32_32_32       BUF_NUM_FORMAT_FLOAT
10133f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_UINT       BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_UINT
10143f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_SINT       BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_SINT
10153f7985e6SDmitry Preobrazhensky    BUF_FMT_32_32_32_32_FLOAT      BUF_DATA_FORMAT_32_32_32_32    BUF_NUM_FORMAT_FLOAT
10163f7985e6SDmitry Preobrazhensky    ============================== ============================== =============================
10173f7985e6SDmitry Preobrazhensky
10183f7985e6SDmitry PreobrazhenskyExamples:
10193f7985e6SDmitry Preobrazhensky
10203f7985e6SDmitry Preobrazhensky.. parsed-literal::
10213f7985e6SDmitry Preobrazhensky
10223f7985e6SDmitry Preobrazhensky  format:0
10233f7985e6SDmitry Preobrazhensky  format:[BUF_FMT_32_UINT]
102447eb6368SDmitry Preobrazhensky
102547eb6368SDmitry PreobrazhenskySMRD/SMEM Modifiers
102647eb6368SDmitry Preobrazhensky-------------------
102747eb6368SDmitry Preobrazhensky
102847eb6368SDmitry Preobrazhenskyglc
102947eb6368SDmitry Preobrazhensky~~~
103047eb6368SDmitry Preobrazhensky
103147eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_glc>`.
103247eb6368SDmitry Preobrazhensky
103347eb6368SDmitry Preobrazhenskynv
103447eb6368SDmitry Preobrazhensky~~
103547eb6368SDmitry Preobrazhensky
1036cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_nv>`. GFX9 only.
1037cef9d421SDmitry Preobrazhensky
1038cef9d421SDmitry Preobrazhenskydlc
1039cef9d421SDmitry Preobrazhensky~~~
1040cef9d421SDmitry Preobrazhensky
1041cef9d421SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_dlc>`. GFX10 only.
104247eb6368SDmitry Preobrazhensky
1043*480f3e02SDmitry Preobrazhensky.. _amdgpu_synid_smem_offset20u:
1044*480f3e02SDmitry Preobrazhensky
1045*480f3e02SDmitry Preobrazhenskyoffset20u
1046*480f3e02SDmitry Preobrazhensky~~~~~~~~~
1047*480f3e02SDmitry Preobrazhensky
1048*480f3e02SDmitry PreobrazhenskySpecifies an unsigned 20-bit offset, in bytes. The default value is 0.
1049*480f3e02SDmitry Preobrazhensky
1050*480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1051*480f3e02SDmitry Preobrazhensky    Syntax               Description
1052*480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1053*480f3e02SDmitry Preobrazhensky    offset:{0..0xFFFFF}  Specifies an offset as a positive
1054*480f3e02SDmitry Preobrazhensky                         :ref:`integer number <amdgpu_synid_integer_number>`
1055*480f3e02SDmitry Preobrazhensky                         or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1056*480f3e02SDmitry Preobrazhensky    ==================== ====================================================================
1057*480f3e02SDmitry Preobrazhensky
1058*480f3e02SDmitry PreobrazhenskyExamples:
1059*480f3e02SDmitry Preobrazhensky
1060*480f3e02SDmitry Preobrazhensky.. parsed-literal::
1061*480f3e02SDmitry Preobrazhensky
1062*480f3e02SDmitry Preobrazhensky  offset:1
1063*480f3e02SDmitry Preobrazhensky  offset:0xfffff
1064*480f3e02SDmitry Preobrazhensky  offset:x-y
1065*480f3e02SDmitry Preobrazhensky
1066*480f3e02SDmitry Preobrazhensky.. _amdgpu_synid_smem_offset21s:
1067*480f3e02SDmitry Preobrazhensky
1068*480f3e02SDmitry Preobrazhenskyoffset21s
1069*480f3e02SDmitry Preobrazhensky~~~~~~~~~
1070*480f3e02SDmitry Preobrazhensky
1071*480f3e02SDmitry PreobrazhenskySpecifies a signed 21-bit offset, in bytes. The default value is 0.
1072*480f3e02SDmitry Preobrazhensky
1073*480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1074*480f3e02SDmitry Preobrazhensky    Syntax                        Description
1075*480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1076*480f3e02SDmitry Preobrazhensky    offset:{-0x100000..0xFFFFF}   Specifies an offset as an
1077*480f3e02SDmitry Preobrazhensky                                  :ref:`integer number <amdgpu_synid_integer_number>`
1078*480f3e02SDmitry Preobrazhensky                                  or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1079*480f3e02SDmitry Preobrazhensky    ============================= ====================================================================
1080*480f3e02SDmitry Preobrazhensky
1081*480f3e02SDmitry PreobrazhenskyExamples:
1082*480f3e02SDmitry Preobrazhensky
1083*480f3e02SDmitry Preobrazhensky.. parsed-literal::
1084*480f3e02SDmitry Preobrazhensky
1085*480f3e02SDmitry Preobrazhensky  offset:-1
1086*480f3e02SDmitry Preobrazhensky  offset:0xfffff
1087*480f3e02SDmitry Preobrazhensky  offset:-x
1088*480f3e02SDmitry Preobrazhensky
108947eb6368SDmitry PreobrazhenskyVINTRP Modifiers
109047eb6368SDmitry Preobrazhensky----------------
109147eb6368SDmitry Preobrazhensky
109247eb6368SDmitry Preobrazhensky.. _amdgpu_synid_high:
109347eb6368SDmitry Preobrazhensky
109447eb6368SDmitry Preobrazhenskyhigh
109547eb6368SDmitry Preobrazhensky~~~~
109647eb6368SDmitry Preobrazhensky
109747eb6368SDmitry PreobrazhenskySpecifies which half of the LDS word to use. Low half of LDS word is used by default.
1098cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
109947eb6368SDmitry Preobrazhensky
110047eb6368SDmitry Preobrazhensky    ======================================== ================================
110147eb6368SDmitry Preobrazhensky    Syntax                                   Description
110247eb6368SDmitry Preobrazhensky    ======================================== ================================
110347eb6368SDmitry Preobrazhensky    high                                     Use high half of LDS word.
110447eb6368SDmitry Preobrazhensky    ======================================== ================================
110547eb6368SDmitry Preobrazhensky
1106cef9d421SDmitry PreobrazhenskyDPP8 Modifiers
1107cef9d421SDmitry Preobrazhensky--------------
110847eb6368SDmitry Preobrazhensky
1109cef9d421SDmitry PreobrazhenskyGFX10 only.
1110cef9d421SDmitry Preobrazhensky
1111cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dpp8_sel:
1112cef9d421SDmitry Preobrazhensky
1113cef9d421SDmitry Preobrazhenskydpp8_sel
1114cef9d421SDmitry Preobrazhensky~~~~~~~~
1115cef9d421SDmitry Preobrazhensky
1116b9683d3cSDmitry PreobrazhenskySelects which lanes to pull data from, within a group of 8 lanes. This is a mandatory modifier.
1117cef9d421SDmitry PreobrazhenskyThere is no default value.
1118cef9d421SDmitry Preobrazhensky
1119cef9d421SDmitry PreobrazhenskyGFX10 only.
1120cef9d421SDmitry Preobrazhensky
1121b9683d3cSDmitry PreobrazhenskyThe *dpp8_sel* modifier must specify exactly 8 values.
1122cef9d421SDmitry PreobrazhenskyFirst value selects which lane to read from to supply data into lane 0.
1123b9683d3cSDmitry PreobrazhenskySecond value controls lane 1 and so on.
1124b9683d3cSDmitry Preobrazhensky
1125b9683d3cSDmitry PreobrazhenskyEach value may be specified as either
1126b9683d3cSDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
1127b9683d3cSDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
1128cef9d421SDmitry Preobrazhensky
1129cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1130cef9d421SDmitry Preobrazhensky    Syntax                                                          Description
1131cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1132cef9d421SDmitry Preobrazhensky    dpp8:[{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7}]  Select lanes to read from.
1133cef9d421SDmitry Preobrazhensky    =============================================================== ===========================
1134cef9d421SDmitry Preobrazhensky
1135cef9d421SDmitry PreobrazhenskyExamples:
1136cef9d421SDmitry Preobrazhensky
1137cef9d421SDmitry Preobrazhensky.. parsed-literal::
1138cef9d421SDmitry Preobrazhensky
1139cef9d421SDmitry Preobrazhensky  dpp8:[7,6,5,4,3,2,1,0]
1140cef9d421SDmitry Preobrazhensky  dpp8:[0,1,0,1,0,1,0,1]
1141cef9d421SDmitry Preobrazhensky
1142cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_fi8:
1143cef9d421SDmitry Preobrazhensky
1144cef9d421SDmitry Preobrazhenskyfi
1145cef9d421SDmitry Preobrazhensky~~
1146cef9d421SDmitry Preobrazhensky
1147cef9d421SDmitry PreobrazhenskyControls interaction with inactive lanes for *dpp8* instructions. The default value is zero.
1148cef9d421SDmitry Preobrazhensky
1149b9683d3cSDmitry PreobrazhenskyNote: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero.
1150cef9d421SDmitry Preobrazhensky
1151cef9d421SDmitry PreobrazhenskyGFX10 only.
1152cef9d421SDmitry Preobrazhensky
1153cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1154cef9d421SDmitry Preobrazhensky    Syntax                               Description
1155cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1156cef9d421SDmitry Preobrazhensky    fi:0                                 Fetch zero when accessing data from inactive lanes.
1157cef9d421SDmitry Preobrazhensky    fi:1                                 Fetch pre-exist values from inactive lanes.
1158cef9d421SDmitry Preobrazhensky    ==================================== =====================================================
1159cef9d421SDmitry Preobrazhensky
1160b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either :ref:`integer numbers<amdgpu_synid_integer_number>` or
1161b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1162b9683d3cSDmitry Preobrazhensky
1163434b278cSDmitry PreobrazhenskyDPP Modifiers
1164434b278cSDmitry Preobrazhensky-------------
1165cef9d421SDmitry Preobrazhensky
1166cef9d421SDmitry PreobrazhenskyGFX8, GFX9 and GFX10 only.
116747eb6368SDmitry Preobrazhensky
116847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dpp_ctrl:
116947eb6368SDmitry Preobrazhensky
117047eb6368SDmitry Preobrazhenskydpp_ctrl
117147eb6368SDmitry Preobrazhensky~~~~~~~~
117247eb6368SDmitry Preobrazhensky
117347eb6368SDmitry PreobrazhenskySpecifies how data are shared between threads. This is a mandatory modifier.
117447eb6368SDmitry PreobrazhenskyThere is no default value.
117547eb6368SDmitry Preobrazhensky
1176cef9d421SDmitry PreobrazhenskyGFX8 and GFX9 only. Use :ref:`dpp16_ctrl<amdgpu_synid_dpp16_ctrl>` for GFX10.
1177cef9d421SDmitry Preobrazhensky
1178b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
117947eb6368SDmitry Preobrazhensky
118047eb6368SDmitry Preobrazhensky    ======================================== ================================================
118147eb6368SDmitry Preobrazhensky    Syntax                                   Description
118247eb6368SDmitry Preobrazhensky    ======================================== ================================================
118347eb6368SDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
118447eb6368SDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
118547eb6368SDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
118647eb6368SDmitry Preobrazhensky    row_bcast:15                             Broadcast 15th thread of each row to next row.
118747eb6368SDmitry Preobrazhensky    row_bcast:31                             Broadcast thread 31 to rows 2 and 3.
118847eb6368SDmitry Preobrazhensky    wave_shl:1                               Wavefront left shift by 1 thread.
118947eb6368SDmitry Preobrazhensky    wave_rol:1                               Wavefront left rotate by 1 thread.
119047eb6368SDmitry Preobrazhensky    wave_shr:1                               Wavefront right shift by 1 thread.
119147eb6368SDmitry Preobrazhensky    wave_ror:1                               Wavefront right rotate by 1 thread.
119247eb6368SDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
119347eb6368SDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
119447eb6368SDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
119547eb6368SDmitry Preobrazhensky    ======================================== ================================================
119647eb6368SDmitry Preobrazhensky
1197b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
119847eb6368SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
119947eb6368SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
120047eb6368SDmitry Preobrazhensky
120147eb6368SDmitry PreobrazhenskyExamples:
120247eb6368SDmitry Preobrazhensky
12031fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
120447eb6368SDmitry Preobrazhensky
120547eb6368SDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
120647eb6368SDmitry Preobrazhensky  row_shl:3
120747eb6368SDmitry Preobrazhensky
1208cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_dpp16_ctrl:
1209cef9d421SDmitry Preobrazhensky
1210cef9d421SDmitry Preobrazhenskydpp16_ctrl
1211cef9d421SDmitry Preobrazhensky~~~~~~~~~~
1212cef9d421SDmitry Preobrazhensky
1213cef9d421SDmitry PreobrazhenskySpecifies how data are shared between threads. This is a mandatory modifier.
1214cef9d421SDmitry PreobrazhenskyThere is no default value.
1215cef9d421SDmitry Preobrazhensky
1216cef9d421SDmitry PreobrazhenskyGFX10 only. Use :ref:`dpp_ctrl<amdgpu_synid_dpp_ctrl>` for GFX8 and GFX9.
1217cef9d421SDmitry Preobrazhensky
1218b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1219cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
1220cef9d421SDmitry Preobrazhensky
1221cef9d421SDmitry Preobrazhensky    ======================================== ====================================================
1222cef9d421SDmitry Preobrazhensky    Syntax                                   Description
1223cef9d421SDmitry Preobrazhensky    ======================================== ====================================================
1224cef9d421SDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
1225cef9d421SDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
1226cef9d421SDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
1227cef9d421SDmitry Preobrazhensky    row_share:{0..15}                        Share the value from the specified lane with other
1228cef9d421SDmitry Preobrazhensky                                             lanes in the row.
1229cef9d421SDmitry Preobrazhensky    row_xmask:{0..15}                        Fetch from XOR(current lane id, specified lane id).
1230cef9d421SDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
1231cef9d421SDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
1232cef9d421SDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
1233cef9d421SDmitry Preobrazhensky    ======================================== ====================================================
1234cef9d421SDmitry Preobrazhensky
1235b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1236cef9d421SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1237cef9d421SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1238cef9d421SDmitry Preobrazhensky
1239cef9d421SDmitry PreobrazhenskyExamples:
1240cef9d421SDmitry Preobrazhensky
1241cef9d421SDmitry Preobrazhensky.. parsed-literal::
1242cef9d421SDmitry Preobrazhensky
1243cef9d421SDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
1244cef9d421SDmitry Preobrazhensky  row_shl:3
1245cef9d421SDmitry Preobrazhensky
1246434b278cSDmitry Preobrazhensky.. _amdgpu_synid_dpp32_ctrl:
1247434b278cSDmitry Preobrazhensky
1248434b278cSDmitry Preobrazhenskydpp32_ctrl
1249434b278cSDmitry Preobrazhensky~~~~~~~~~~
1250434b278cSDmitry Preobrazhensky
1251434b278cSDmitry PreobrazhenskySpecifies how data are shared between threads. This is a mandatory modifier.
1252434b278cSDmitry PreobrazhenskyThere is no default value.
1253434b278cSDmitry Preobrazhensky
1254434b278cSDmitry PreobrazhenskyMay be used only with GFX90A 32-bit instructions.
1255434b278cSDmitry Preobrazhensky
1256434b278cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1257434b278cSDmitry Preobrazhensky
1258434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1259434b278cSDmitry Preobrazhensky    Syntax                                   Description
1260434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1261434b278cSDmitry Preobrazhensky    quad_perm:[{0..3},{0..3},{0..3},{0..3}]  Full permute of 4 threads.
1262434b278cSDmitry Preobrazhensky    row_mirror                               Mirror threads within row.
1263434b278cSDmitry Preobrazhensky    row_half_mirror                          Mirror threads within 1/2 row (8 threads).
1264434b278cSDmitry Preobrazhensky    row_bcast:15                             Broadcast 15th thread of each row to next row.
1265434b278cSDmitry Preobrazhensky    row_bcast:31                             Broadcast thread 31 to rows 2 and 3.
1266434b278cSDmitry Preobrazhensky    wave_shl:1                               Wavefront left shift by 1 thread.
1267434b278cSDmitry Preobrazhensky    wave_rol:1                               Wavefront left rotate by 1 thread.
1268434b278cSDmitry Preobrazhensky    wave_shr:1                               Wavefront right shift by 1 thread.
1269434b278cSDmitry Preobrazhensky    wave_ror:1                               Wavefront right rotate by 1 thread.
1270434b278cSDmitry Preobrazhensky    row_shl:{1..15}                          Row shift left by 1-15 threads.
1271434b278cSDmitry Preobrazhensky    row_shr:{1..15}                          Row shift right by 1-15 threads.
1272434b278cSDmitry Preobrazhensky    row_ror:{1..15}                          Row rotate right by 1-15 threads.
1273434b278cSDmitry Preobrazhensky    row_newbcast:{1..15}                     Broadcast a thread within a row to the whole row.
1274434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1275434b278cSDmitry Preobrazhensky
1276434b278cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1277434b278cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1278434b278cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1279434b278cSDmitry Preobrazhensky
1280434b278cSDmitry PreobrazhenskyExamples:
1281434b278cSDmitry Preobrazhensky
1282434b278cSDmitry Preobrazhensky.. parsed-literal::
1283434b278cSDmitry Preobrazhensky
1284434b278cSDmitry Preobrazhensky  quad_perm:[0, 1, 2, 3]
1285434b278cSDmitry Preobrazhensky  row_shl:3
1286434b278cSDmitry Preobrazhensky
1287434b278cSDmitry Preobrazhensky
1288434b278cSDmitry Preobrazhensky.. _amdgpu_synid_dpp64_ctrl:
1289434b278cSDmitry Preobrazhensky
1290434b278cSDmitry Preobrazhenskydpp64_ctrl
1291434b278cSDmitry Preobrazhensky~~~~~~~~~~
1292434b278cSDmitry Preobrazhensky
1293434b278cSDmitry PreobrazhenskySpecifies how data are shared between threads. This is a mandatory modifier.
1294434b278cSDmitry PreobrazhenskyThere is no default value.
1295434b278cSDmitry Preobrazhensky
1296434b278cSDmitry PreobrazhenskyMay be used only with GFX90A 64-bit instructions.
1297434b278cSDmitry Preobrazhensky
1298434b278cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1299434b278cSDmitry Preobrazhensky
1300434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1301434b278cSDmitry Preobrazhensky    Syntax                                   Description
1302434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1303434b278cSDmitry Preobrazhensky    row_newbcast:{1..15}                     Broadcast a thread within a row to the whole row.
1304434b278cSDmitry Preobrazhensky    ======================================== ==================================================
1305434b278cSDmitry Preobrazhensky
1306434b278cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1307434b278cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1308434b278cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1309434b278cSDmitry Preobrazhensky
1310434b278cSDmitry PreobrazhenskyExamples:
1311434b278cSDmitry Preobrazhensky
1312434b278cSDmitry Preobrazhensky.. parsed-literal::
1313434b278cSDmitry Preobrazhensky
1314434b278cSDmitry Preobrazhensky  row_newbcast:3
1315434b278cSDmitry Preobrazhensky
1316434b278cSDmitry Preobrazhensky
131747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_row_mask:
131847eb6368SDmitry Preobrazhensky
131947eb6368SDmitry Preobrazhenskyrow_mask
132047eb6368SDmitry Preobrazhensky~~~~~~~~
132147eb6368SDmitry Preobrazhensky
132247eb6368SDmitry PreobrazhenskyControls which rows are enabled for data sharing. By default, all rows are enabled.
132347eb6368SDmitry Preobrazhensky
1324b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1325cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
132647eb6368SDmitry Preobrazhensky
1327b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
132847eb6368SDmitry Preobrazhensky    Syntax            Description
1329b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
133047eb6368SDmitry Preobrazhensky    row_mask:{0..15}  Specifies a *row mask* as a positive
1331b9683d3cSDmitry Preobrazhensky                      :ref:`integer number <amdgpu_synid_integer_number>`
1332b9683d3cSDmitry Preobrazhensky                      or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
133347eb6368SDmitry Preobrazhensky
1334b9683d3cSDmitry Preobrazhensky                      Each of 4 bits in the mask controls one row
1335b9683d3cSDmitry Preobrazhensky                      (0 - disabled, 1 - enabled).
1336cef9d421SDmitry Preobrazhensky
1337b9683d3cSDmitry Preobrazhensky                      In *wave32* mode the values should be limited to 0..7.
1338b9683d3cSDmitry Preobrazhensky    ================= ====================================================================
133947eb6368SDmitry Preobrazhensky
134047eb6368SDmitry PreobrazhenskyExamples:
134147eb6368SDmitry Preobrazhensky
13421fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
134347eb6368SDmitry Preobrazhensky
134447eb6368SDmitry Preobrazhensky  row_mask:0xf
134547eb6368SDmitry Preobrazhensky  row_mask:0b1010
1346b9683d3cSDmitry Preobrazhensky  row_mask:x|y
134747eb6368SDmitry Preobrazhensky
134847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_bank_mask:
134947eb6368SDmitry Preobrazhensky
135047eb6368SDmitry Preobrazhenskybank_mask
135147eb6368SDmitry Preobrazhensky~~~~~~~~~
135247eb6368SDmitry Preobrazhensky
135347eb6368SDmitry PreobrazhenskyControls which banks are enabled for data sharing. By default, all banks are enabled.
135447eb6368SDmitry Preobrazhensky
1355b9683d3cSDmitry PreobrazhenskyNote: the lanes of a wavefront are organized in four *rows* and four *banks*.
1356cef9d421SDmitry Preobrazhensky(There are only two rows in *wave32* mode.)
135747eb6368SDmitry Preobrazhensky
1358b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
135947eb6368SDmitry Preobrazhensky    Syntax             Description
1360b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
136147eb6368SDmitry Preobrazhensky    bank_mask:{0..15}  Specifies a *bank mask* as a positive
1362b9683d3cSDmitry Preobrazhensky                       :ref:`integer number <amdgpu_synid_integer_number>`
1363b9683d3cSDmitry Preobrazhensky                       or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
136447eb6368SDmitry Preobrazhensky
1365b9683d3cSDmitry Preobrazhensky                       Each of 4 bits in the mask controls one bank
1366b9683d3cSDmitry Preobrazhensky                       (0 - disabled, 1 - enabled).
1367b9683d3cSDmitry Preobrazhensky    ================== ====================================================================
136847eb6368SDmitry Preobrazhensky
136947eb6368SDmitry PreobrazhenskyExamples:
137047eb6368SDmitry Preobrazhensky
13711fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
137247eb6368SDmitry Preobrazhensky
137347eb6368SDmitry Preobrazhensky  bank_mask:0x3
137447eb6368SDmitry Preobrazhensky  bank_mask:0b0011
1375b9683d3cSDmitry Preobrazhensky  bank_mask:x&y
137647eb6368SDmitry Preobrazhensky
137747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_bound_ctrl:
137847eb6368SDmitry Preobrazhensky
137947eb6368SDmitry Preobrazhenskybound_ctrl
138047eb6368SDmitry Preobrazhensky~~~~~~~~~~
138147eb6368SDmitry Preobrazhensky
138247eb6368SDmitry PreobrazhenskyControls data sharing when accessing an invalid lane. By default, data sharing with
138347eb6368SDmitry Preobrazhenskyinvalid lanes is disabled.
138447eb6368SDmitry Preobrazhensky
138547eb6368SDmitry Preobrazhensky    ======================================== ================================================
138647eb6368SDmitry Preobrazhensky    Syntax                                   Description
138747eb6368SDmitry Preobrazhensky    ======================================== ================================================
138848135180SDmitry Preobrazhensky    bound_ctrl:1                             Enables data sharing with invalid lanes.
138947eb6368SDmitry Preobrazhensky
139047eb6368SDmitry Preobrazhensky                                             Accessing data from an invalid lane will
139147eb6368SDmitry Preobrazhensky                                             return zero.
139247eb6368SDmitry Preobrazhensky    ======================================== ================================================
139347eb6368SDmitry Preobrazhensky
1394cef9d421SDmitry Preobrazhensky.. _amdgpu_synid_fi16:
139547eb6368SDmitry Preobrazhensky
1396cef9d421SDmitry Preobrazhenskyfi
1397cef9d421SDmitry Preobrazhensky~~
1398cef9d421SDmitry Preobrazhensky
1399cef9d421SDmitry PreobrazhenskyControls interaction with *inactive* lanes for *dpp16* instructions. The default value is zero.
1400cef9d421SDmitry Preobrazhensky
1401b9683d3cSDmitry PreobrazhenskyNote: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero.
1402cef9d421SDmitry Preobrazhensky
1403cef9d421SDmitry PreobrazhenskyGFX10 only.
1404cef9d421SDmitry Preobrazhensky
1405cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1406cef9d421SDmitry Preobrazhensky    Syntax                                   Description
1407cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1408cef9d421SDmitry Preobrazhensky    fi:0                                     Interaction with inactive lanes is controlled by
1409cef9d421SDmitry Preobrazhensky                                             :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
1410cef9d421SDmitry Preobrazhensky
1411cef9d421SDmitry Preobrazhensky    fi:1                                     Fetch pre-exist values from inactive lanes.
1412cef9d421SDmitry Preobrazhensky    ======================================== ==================================================
1413cef9d421SDmitry Preobrazhensky
1414b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either :ref:`integer numbers<amdgpu_synid_integer_number>` or
1415b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1416b9683d3cSDmitry Preobrazhensky
1417cef9d421SDmitry PreobrazhenskySDWA Modifiers
1418cef9d421SDmitry Preobrazhensky--------------
1419cef9d421SDmitry Preobrazhensky
1420cef9d421SDmitry PreobrazhenskyGFX8, GFX9 and GFX10 only.
142147eb6368SDmitry Preobrazhensky
142247eb6368SDmitry Preobrazhenskyclamp
142347eb6368SDmitry Preobrazhensky~~~~~
142447eb6368SDmitry Preobrazhensky
142547eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_clamp>`.
142647eb6368SDmitry Preobrazhensky
142747eb6368SDmitry Preobrazhenskyomod
142847eb6368SDmitry Preobrazhensky~~~~
142947eb6368SDmitry Preobrazhensky
143047eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_omod>`.
143147eb6368SDmitry Preobrazhensky
1432cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
143347eb6368SDmitry Preobrazhensky
143447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dst_sel:
143547eb6368SDmitry Preobrazhensky
143647eb6368SDmitry Preobrazhenskydst_sel
143747eb6368SDmitry Preobrazhensky~~~~~~~
143847eb6368SDmitry Preobrazhensky
143947eb6368SDmitry PreobrazhenskySelects which bits in the destination are affected. By default, all bits are affected.
144047eb6368SDmitry Preobrazhensky
144147eb6368SDmitry Preobrazhensky    ======================================== ================================================
144247eb6368SDmitry Preobrazhensky    Syntax                                   Description
144347eb6368SDmitry Preobrazhensky    ======================================== ================================================
144447eb6368SDmitry Preobrazhensky    dst_sel:DWORD                            Use bits 31:0.
144547eb6368SDmitry Preobrazhensky    dst_sel:BYTE_0                           Use bits 7:0.
144647eb6368SDmitry Preobrazhensky    dst_sel:BYTE_1                           Use bits 15:8.
144747eb6368SDmitry Preobrazhensky    dst_sel:BYTE_2                           Use bits 23:16.
144847eb6368SDmitry Preobrazhensky    dst_sel:BYTE_3                           Use bits 31:24.
144947eb6368SDmitry Preobrazhensky    dst_sel:WORD_0                           Use bits 15:0.
145047eb6368SDmitry Preobrazhensky    dst_sel:WORD_1                           Use bits 31:16.
145147eb6368SDmitry Preobrazhensky    ======================================== ================================================
145247eb6368SDmitry Preobrazhensky
145347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_dst_unused:
145447eb6368SDmitry Preobrazhensky
145547eb6368SDmitry Preobrazhenskydst_unused
145647eb6368SDmitry Preobrazhensky~~~~~~~~~~
145747eb6368SDmitry Preobrazhensky
145847eb6368SDmitry PreobrazhenskyControls what to do with the bits in the destination which are not selected
145947eb6368SDmitry Preobrazhenskyby :ref:`dst_sel<amdgpu_synid_dst_sel>`.
146047eb6368SDmitry PreobrazhenskyBy default, unused bits are preserved.
146147eb6368SDmitry Preobrazhensky
146247eb6368SDmitry Preobrazhensky    ======================================== ================================================
146347eb6368SDmitry Preobrazhensky    Syntax                                   Description
146447eb6368SDmitry Preobrazhensky    ======================================== ================================================
146547eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_PAD                    Pad with zeros.
146647eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_SEXT                   Sign-extend upper bits, zero lower bits.
146747eb6368SDmitry Preobrazhensky    dst_unused:UNUSED_PRESERVE               Preserve bits.
146847eb6368SDmitry Preobrazhensky    ======================================== ================================================
146947eb6368SDmitry Preobrazhensky
147047eb6368SDmitry Preobrazhensky.. _amdgpu_synid_src0_sel:
147147eb6368SDmitry Preobrazhensky
147247eb6368SDmitry Preobrazhenskysrc0_sel
147347eb6368SDmitry Preobrazhensky~~~~~~~~
147447eb6368SDmitry Preobrazhensky
147547eb6368SDmitry PreobrazhenskyControls which bits in the src0 are used. By default, all bits are used.
147647eb6368SDmitry Preobrazhensky
147747eb6368SDmitry Preobrazhensky    ======================================== ================================================
147847eb6368SDmitry Preobrazhensky    Syntax                                   Description
147947eb6368SDmitry Preobrazhensky    ======================================== ================================================
148047eb6368SDmitry Preobrazhensky    src0_sel:DWORD                           Use bits 31:0.
148147eb6368SDmitry Preobrazhensky    src0_sel:BYTE_0                          Use bits 7:0.
148247eb6368SDmitry Preobrazhensky    src0_sel:BYTE_1                          Use bits 15:8.
148347eb6368SDmitry Preobrazhensky    src0_sel:BYTE_2                          Use bits 23:16.
148447eb6368SDmitry Preobrazhensky    src0_sel:BYTE_3                          Use bits 31:24.
148547eb6368SDmitry Preobrazhensky    src0_sel:WORD_0                          Use bits 15:0.
148647eb6368SDmitry Preobrazhensky    src0_sel:WORD_1                          Use bits 31:16.
148747eb6368SDmitry Preobrazhensky    ======================================== ================================================
148847eb6368SDmitry Preobrazhensky
148947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_src1_sel:
149047eb6368SDmitry Preobrazhensky
149147eb6368SDmitry Preobrazhenskysrc1_sel
149247eb6368SDmitry Preobrazhensky~~~~~~~~
149347eb6368SDmitry Preobrazhensky
149447eb6368SDmitry PreobrazhenskyControls which bits in the src1 are used. By default, all bits are used.
149547eb6368SDmitry Preobrazhensky
149647eb6368SDmitry Preobrazhensky    ======================================== ================================================
149747eb6368SDmitry Preobrazhensky    Syntax                                   Description
149847eb6368SDmitry Preobrazhensky    ======================================== ================================================
149947eb6368SDmitry Preobrazhensky    src1_sel:DWORD                           Use bits 31:0.
150047eb6368SDmitry Preobrazhensky    src1_sel:BYTE_0                          Use bits 7:0.
150147eb6368SDmitry Preobrazhensky    src1_sel:BYTE_1                          Use bits 15:8.
150247eb6368SDmitry Preobrazhensky    src1_sel:BYTE_2                          Use bits 23:16.
150347eb6368SDmitry Preobrazhensky    src1_sel:BYTE_3                          Use bits 31:24.
150447eb6368SDmitry Preobrazhensky    src1_sel:WORD_0                          Use bits 15:0.
150547eb6368SDmitry Preobrazhensky    src1_sel:WORD_1                          Use bits 31:16.
150647eb6368SDmitry Preobrazhensky    ======================================== ================================================
150747eb6368SDmitry Preobrazhensky
150847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_sdwa_operand_modifiers:
150947eb6368SDmitry Preobrazhensky
1510cef9d421SDmitry PreobrazhenskySDWA Operand Modifiers
1511cef9d421SDmitry Preobrazhensky----------------------
151247eb6368SDmitry Preobrazhensky
151347eb6368SDmitry PreobrazhenskyOperand modifiers are not used separately. They are applied to source operands.
151447eb6368SDmitry Preobrazhensky
1515cef9d421SDmitry PreobrazhenskyGFX8, GFX9 and GFX10 only.
151647eb6368SDmitry Preobrazhensky
151747eb6368SDmitry Preobrazhenskyabs
151847eb6368SDmitry Preobrazhensky~~~
151947eb6368SDmitry Preobrazhensky
152047eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_abs>`.
152147eb6368SDmitry Preobrazhensky
152247eb6368SDmitry Preobrazhenskyneg
152347eb6368SDmitry Preobrazhensky~~~
152447eb6368SDmitry Preobrazhensky
152547eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_neg>`.
152647eb6368SDmitry Preobrazhensky
152747eb6368SDmitry Preobrazhensky.. _amdgpu_synid_sext:
152847eb6368SDmitry Preobrazhensky
152947eb6368SDmitry Preobrazhenskysext
153047eb6368SDmitry Preobrazhensky~~~~
153147eb6368SDmitry Preobrazhensky
153247eb6368SDmitry PreobrazhenskySign-extends value of a (sub-dword) operand to fill all 32 bits.
153347eb6368SDmitry PreobrazhenskyHas no effect for 32-bit operands.
153447eb6368SDmitry Preobrazhensky
153547eb6368SDmitry PreobrazhenskyValid for integer operands only.
153647eb6368SDmitry Preobrazhensky
153747eb6368SDmitry Preobrazhensky    ======================================== ================================================
153847eb6368SDmitry Preobrazhensky    Syntax                                   Description
153947eb6368SDmitry Preobrazhensky    ======================================== ================================================
154047eb6368SDmitry Preobrazhensky    sext(<operand>)                          Sign-extend operand value.
154147eb6368SDmitry Preobrazhensky    ======================================== ================================================
154247eb6368SDmitry Preobrazhensky
154347eb6368SDmitry PreobrazhenskyExamples:
154447eb6368SDmitry Preobrazhensky
15451fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
154647eb6368SDmitry Preobrazhensky
154747eb6368SDmitry Preobrazhensky  sext(v4)
154847eb6368SDmitry Preobrazhensky  sext(v255)
154947eb6368SDmitry Preobrazhensky
155047eb6368SDmitry PreobrazhenskyVOP3 Modifiers
155147eb6368SDmitry Preobrazhensky--------------
155247eb6368SDmitry Preobrazhensky
155347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vop3_op_sel:
155447eb6368SDmitry Preobrazhensky
1555ddac5c9bSDmitry Preobrazhenskyop_sel
1556ddac5c9bSDmitry Preobrazhensky~~~~~~
155747eb6368SDmitry Preobrazhensky
155847eb6368SDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits for source and destination operands.
155947eb6368SDmitry PreobrazhenskyBy default, low bits are used for all operands.
156047eb6368SDmitry Preobrazhensky
156147eb6368SDmitry PreobrazhenskyThe number of values specified with the op_sel modifier must match the number of instruction
156247eb6368SDmitry Preobrazhenskyoperands (both source and destination). First value controls src0, second value controls src1
156347eb6368SDmitry Preobrazhenskyand so on, except that the last value controls destination.
156447eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
156547eb6368SDmitry Preobrazhensky
1566b9683d3cSDmitry PreobrazhenskyNote: op_sel modifier affects 16-bit operands only. For 32-bit operands the value specified
156747eb6368SDmitry Preobrazhenskyby op_sel must be 0.
156847eb6368SDmitry Preobrazhensky
1569cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
157047eb6368SDmitry Preobrazhensky
157147eb6368SDmitry Preobrazhensky    ======================================== ============================================================
157247eb6368SDmitry Preobrazhensky    Syntax                                   Description
157347eb6368SDmitry Preobrazhensky    ======================================== ============================================================
157447eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]                   Select operand bits for instructions with 1 source operand.
157547eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]            Select operand bits for instructions with 2 source operands.
157647eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1},{0..1}]     Select operand bits for instructions with 3 source operands.
157747eb6368SDmitry Preobrazhensky    ======================================== ============================================================
157847eb6368SDmitry Preobrazhensky
1579b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1580b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1581b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1582b9683d3cSDmitry Preobrazhensky
158347eb6368SDmitry PreobrazhenskyExamples:
158447eb6368SDmitry Preobrazhensky
15851fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
158647eb6368SDmitry Preobrazhensky
158747eb6368SDmitry Preobrazhensky  op_sel:[0,0]
158847eb6368SDmitry Preobrazhensky  op_sel:[0,1]
158947eb6368SDmitry Preobrazhensky
15908ea3e9d9SDmitry Preobrazhensky.. _amdgpu_synid_dpp_op_sel:
15918ea3e9d9SDmitry Preobrazhensky
15928ea3e9d9SDmitry Preobrazhenskydpp_op_sel
15938ea3e9d9SDmitry Preobrazhensky~~~~~~~~~~
15948ea3e9d9SDmitry Preobrazhensky
15958ea3e9d9SDmitry PreobrazhenskySpecial version of *op_sel* used for *permlane* opcodes to specify
15968ea3e9d9SDmitry Preobrazhenskydpp-like mode bits - :ref:`fi<amdgpu_synid_fi16>` and
15978ea3e9d9SDmitry Preobrazhensky:ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
15988ea3e9d9SDmitry Preobrazhensky
15998ea3e9d9SDmitry PreobrazhenskyGFX10 only.
16008ea3e9d9SDmitry Preobrazhensky
16018ea3e9d9SDmitry Preobrazhensky    ======================================== ============================================================
16028ea3e9d9SDmitry Preobrazhensky    Syntax                                   Description
16038ea3e9d9SDmitry Preobrazhensky    ======================================== ============================================================
16048ea3e9d9SDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]                   First bit specifies :ref:`fi<amdgpu_synid_fi16>`, second
16058ea3e9d9SDmitry Preobrazhensky                                             bit specifies :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`.
16068ea3e9d9SDmitry Preobrazhensky    ======================================== ============================================================
16078ea3e9d9SDmitry Preobrazhensky
16088ea3e9d9SDmitry PreobrazhenskyNote: numeric values may be specified as either
16098ea3e9d9SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
16108ea3e9d9SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
16118ea3e9d9SDmitry Preobrazhensky
16128ea3e9d9SDmitry PreobrazhenskyExamples:
16138ea3e9d9SDmitry Preobrazhensky
16148ea3e9d9SDmitry Preobrazhensky.. parsed-literal::
16158ea3e9d9SDmitry Preobrazhensky
16168ea3e9d9SDmitry Preobrazhensky  op_sel:[0,0]
16178ea3e9d9SDmitry Preobrazhensky
161847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_clamp:
161947eb6368SDmitry Preobrazhensky
162047eb6368SDmitry Preobrazhenskyclamp
162147eb6368SDmitry Preobrazhensky~~~~~
162247eb6368SDmitry Preobrazhensky
162347eb6368SDmitry PreobrazhenskyClamp meaning depends on instruction.
162447eb6368SDmitry Preobrazhensky
162547eb6368SDmitry PreobrazhenskyFor *v_cmp* instructions, clamp modifier indicates that the compare signals
162647eb6368SDmitry Preobrazhenskyif a floating point exception occurs. By default, signaling is disabled.
162747eb6368SDmitry PreobrazhenskyNot supported by GFX7.
162847eb6368SDmitry Preobrazhensky
162947eb6368SDmitry PreobrazhenskyFor integer operations, clamp modifier indicates that the result must be clamped
163047eb6368SDmitry Preobrazhenskyto the largest and smallest representable value. By default, there is no clamping.
163147eb6368SDmitry PreobrazhenskyInteger clamping is not supported by GFX7.
163247eb6368SDmitry Preobrazhensky
163347eb6368SDmitry PreobrazhenskyFor floating point operations, clamp modifier indicates that the result must be clamped
163447eb6368SDmitry Preobrazhenskyto the range [0.0, 1.0]. By default, there is no clamping.
163547eb6368SDmitry Preobrazhensky
1636b9683d3cSDmitry PreobrazhenskyNote: clamp modifier is applied after :ref:`output modifiers<amdgpu_synid_omod>` (if any).
163747eb6368SDmitry Preobrazhensky
163847eb6368SDmitry Preobrazhensky    ======================================== ================================================
163947eb6368SDmitry Preobrazhensky    Syntax                                   Description
164047eb6368SDmitry Preobrazhensky    ======================================== ================================================
164147eb6368SDmitry Preobrazhensky    clamp                                    Enables clamping (or signaling).
164247eb6368SDmitry Preobrazhensky    ======================================== ================================================
164347eb6368SDmitry Preobrazhensky
164447eb6368SDmitry Preobrazhensky.. _amdgpu_synid_omod:
164547eb6368SDmitry Preobrazhensky
164647eb6368SDmitry Preobrazhenskyomod
164747eb6368SDmitry Preobrazhensky~~~~
164847eb6368SDmitry Preobrazhensky
164947eb6368SDmitry PreobrazhenskySpecifies if an output modifier must be applied to the result.
165047eb6368SDmitry PreobrazhenskyBy default, no output modifiers are applied.
165147eb6368SDmitry Preobrazhensky
1652b9683d3cSDmitry PreobrazhenskyNote: output modifiers are applied before :ref:`clamping<amdgpu_synid_clamp>` (if any).
165347eb6368SDmitry Preobrazhensky
165447eb6368SDmitry PreobrazhenskyOutput modifiers are valid for f32 and f64 floating point results only.
165547eb6368SDmitry PreobrazhenskyThey must not be used with f16.
165647eb6368SDmitry Preobrazhensky
1657b9683d3cSDmitry PreobrazhenskyNote: *v_cvt_f16_f32* is an exception. This instruction produces f16 result
165847eb6368SDmitry Preobrazhenskybut accepts output modifiers.
165947eb6368SDmitry Preobrazhensky
166047eb6368SDmitry Preobrazhensky    ======================================== ================================================
166147eb6368SDmitry Preobrazhensky    Syntax                                   Description
166247eb6368SDmitry Preobrazhensky    ======================================== ================================================
166347eb6368SDmitry Preobrazhensky    mul:2                                    Multiply the result by 2.
166447eb6368SDmitry Preobrazhensky    mul:4                                    Multiply the result by 4.
166547eb6368SDmitry Preobrazhensky    div:2                                    Multiply the result by 0.5.
166647eb6368SDmitry Preobrazhensky    ======================================== ================================================
166747eb6368SDmitry Preobrazhensky
1668b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either :ref:`integer numbers<amdgpu_synid_integer_number>` or
1669b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1670b9683d3cSDmitry Preobrazhensky
1671b9683d3cSDmitry PreobrazhenskyExamples:
1672b9683d3cSDmitry Preobrazhensky
1673b9683d3cSDmitry Preobrazhensky.. parsed-literal::
1674b9683d3cSDmitry Preobrazhensky
1675b9683d3cSDmitry Preobrazhensky  mul:2
1676b9683d3cSDmitry Preobrazhensky  mul:x      // x must be equal to 2 or 4
1677b9683d3cSDmitry Preobrazhensky
167847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_vop3_operand_modifiers:
167947eb6368SDmitry Preobrazhensky
168047eb6368SDmitry PreobrazhenskyVOP3 Operand Modifiers
168147eb6368SDmitry Preobrazhensky----------------------
168247eb6368SDmitry Preobrazhensky
168347eb6368SDmitry PreobrazhenskyOperand modifiers are not used separately. They are applied to source operands.
168447eb6368SDmitry Preobrazhensky
168547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_abs:
168647eb6368SDmitry Preobrazhensky
168747eb6368SDmitry Preobrazhenskyabs
168847eb6368SDmitry Preobrazhensky~~~
168947eb6368SDmitry Preobrazhensky
1690b9683d3cSDmitry PreobrazhenskyComputes the absolute value of its operand. Must be applied before :ref:`neg<amdgpu_synid_neg>`
1691b9683d3cSDmitry Preobrazhensky(if any). Valid for floating point operands only.
169247eb6368SDmitry Preobrazhensky
1693b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
169447eb6368SDmitry Preobrazhensky    Syntax                                   Description
1695b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
1696b9683d3cSDmitry Preobrazhensky    abs(<operand>)                           Get the absolute value of a floating-point operand.
1697b9683d3cSDmitry Preobrazhensky    \|<operand>|                             The same as above (an SP3 syntax).
1698b9683d3cSDmitry Preobrazhensky    ======================================== ====================================================
1699b9683d3cSDmitry Preobrazhensky
1700b9683d3cSDmitry PreobrazhenskyNote: avoid using SP3 syntax with operands specified as expressions because the trailing '|'
1701b9683d3cSDmitry Preobrazhenskymay be misinterpreted. Such operands should be enclosed into additional parentheses as shown
1702b9683d3cSDmitry Preobrazhenskyin examples below.
170347eb6368SDmitry Preobrazhensky
170447eb6368SDmitry PreobrazhenskyExamples:
170547eb6368SDmitry Preobrazhensky
17061fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
170747eb6368SDmitry Preobrazhensky
170847eb6368SDmitry Preobrazhensky  abs(v36)
17091fa7aaf5SDmitry Preobrazhensky  \|v36|
1710b9683d3cSDmitry Preobrazhensky  abs(x|y)     // ok
1711b9683d3cSDmitry Preobrazhensky  \|(x|y)|      // additional parentheses are required
171247eb6368SDmitry Preobrazhensky
171347eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg:
171447eb6368SDmitry Preobrazhensky
171547eb6368SDmitry Preobrazhenskyneg
171647eb6368SDmitry Preobrazhensky~~~
171747eb6368SDmitry Preobrazhensky
1718b9683d3cSDmitry PreobrazhenskyComputes the negative value of its operand. Must be applied after :ref:`abs<amdgpu_synid_abs>`
1719b9683d3cSDmitry Preobrazhensky(if any). Valid for floating point operands only.
172047eb6368SDmitry Preobrazhensky
1721b9683d3cSDmitry Preobrazhensky    ================== ====================================================
172247eb6368SDmitry Preobrazhensky    Syntax             Description
1723b9683d3cSDmitry Preobrazhensky    ================== ====================================================
1724b9683d3cSDmitry Preobrazhensky    neg(<operand>)     Get the negative value of a floating-point operand.
1725b9683d3cSDmitry Preobrazhensky                       The operand may include an optional
1726b9683d3cSDmitry Preobrazhensky                       :ref:`abs<amdgpu_synid_abs>` modifier.
1727b9683d3cSDmitry Preobrazhensky    -<operand>         The same as above (an SP3 syntax).
1728b9683d3cSDmitry Preobrazhensky    ================== ====================================================
1729b9683d3cSDmitry Preobrazhensky
1730b9683d3cSDmitry PreobrazhenskyNote: SP3 syntax is supported with limitations because of a potential ambiguity.
1731b9683d3cSDmitry PreobrazhenskyCurrently it is allowed in the following cases:
1732b9683d3cSDmitry Preobrazhensky
1733b9683d3cSDmitry Preobrazhensky* Before a register.
1734b9683d3cSDmitry Preobrazhensky* Before an :ref:`abs<amdgpu_synid_abs>` modifier.
1735b9683d3cSDmitry Preobrazhensky* Before an SP3 :ref:`abs<amdgpu_synid_abs>` modifier.
1736b9683d3cSDmitry Preobrazhensky
1737b9683d3cSDmitry PreobrazhenskyIn all other cases "-" is handled as a part of an expression that follows the sign.
173847eb6368SDmitry Preobrazhensky
173947eb6368SDmitry PreobrazhenskyExamples:
174047eb6368SDmitry Preobrazhensky
17411fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
174247eb6368SDmitry Preobrazhensky
1743b9683d3cSDmitry Preobrazhensky  // Operands with negate modifiers
174447eb6368SDmitry Preobrazhensky  neg(v[0])
1745b9683d3cSDmitry Preobrazhensky  neg(1.0)
1746b9683d3cSDmitry Preobrazhensky  neg(abs(v0))
1747b9683d3cSDmitry Preobrazhensky  -v5
1748b9683d3cSDmitry Preobrazhensky  -abs(v5)
1749b9683d3cSDmitry Preobrazhensky  -\|v5|
1750b9683d3cSDmitry Preobrazhensky
1751b9683d3cSDmitry Preobrazhensky  // Operands without negate modifiers
1752b9683d3cSDmitry Preobrazhensky  -1
1753b9683d3cSDmitry Preobrazhensky  -x+y
175447eb6368SDmitry Preobrazhensky
175547eb6368SDmitry PreobrazhenskyVOP3P Modifiers
175647eb6368SDmitry Preobrazhensky---------------
175747eb6368SDmitry Preobrazhensky
175847eb6368SDmitry PreobrazhenskyThis section describes modifiers of *regular* VOP3P instructions.
175947eb6368SDmitry Preobrazhensky
176080c45e49SDmitry Preobrazhensky*v_mad_mix\** and *v_fma_mix\**
176147eb6368SDmitry Preobrazhenskyinstructions use these modifiers :ref:`in a special manner<amdgpu_synid_mad_mix>`.
176247eb6368SDmitry Preobrazhensky
1763cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
176447eb6368SDmitry Preobrazhensky
176547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_op_sel:
176647eb6368SDmitry Preobrazhensky
176747eb6368SDmitry Preobrazhenskyop_sel
176847eb6368SDmitry Preobrazhensky~~~~~~
176947eb6368SDmitry Preobrazhensky
177047eb6368SDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits as input to the operation
177147eb6368SDmitry Preobrazhenskywhich results in the lower-half of the destination.
177247eb6368SDmitry PreobrazhenskyBy default, low bits are used for all operands.
177347eb6368SDmitry Preobrazhensky
177447eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel* modifier must match the number of source
177547eb6368SDmitry Preobrazhenskyoperands. First value controls src0, second value controls src1 and so on.
177647eb6368SDmitry Preobrazhensky
177747eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
177847eb6368SDmitry Preobrazhensky
177947eb6368SDmitry Preobrazhensky    ================================= =============================================================
178047eb6368SDmitry Preobrazhensky    Syntax                            Description
178147eb6368SDmitry Preobrazhensky    ================================= =============================================================
178247eb6368SDmitry Preobrazhensky    op_sel:[{0..1}]                   Select operand bits for instructions with 1 source operand.
178347eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1}]            Select operand bits for instructions with 2 source operands.
178447eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]     Select operand bits for instructions with 3 source operands.
178547eb6368SDmitry Preobrazhensky    ================================= =============================================================
178647eb6368SDmitry Preobrazhensky
1787b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1788b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1789b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1790b9683d3cSDmitry Preobrazhensky
179147eb6368SDmitry PreobrazhenskyExamples:
179247eb6368SDmitry Preobrazhensky
17931fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
179447eb6368SDmitry Preobrazhensky
179547eb6368SDmitry Preobrazhensky  op_sel:[0,0]
179647eb6368SDmitry Preobrazhensky  op_sel:[0,1,0]
179747eb6368SDmitry Preobrazhensky
179847eb6368SDmitry Preobrazhensky.. _amdgpu_synid_op_sel_hi:
179947eb6368SDmitry Preobrazhensky
180047eb6368SDmitry Preobrazhenskyop_sel_hi
180147eb6368SDmitry Preobrazhensky~~~~~~~~~
180247eb6368SDmitry Preobrazhensky
180347eb6368SDmitry PreobrazhenskySelects the low [15:0] or high [31:16] operand bits as input to the operation
180447eb6368SDmitry Preobrazhenskywhich results in the upper-half of the destination.
180547eb6368SDmitry PreobrazhenskyBy default, high bits are used for all operands.
180647eb6368SDmitry Preobrazhensky
180747eb6368SDmitry PreobrazhenskyThe number of values specified by the *op_sel_hi* modifier must match the number of source
180847eb6368SDmitry Preobrazhenskyoperands. First value controls src0, second value controls src1 and so on.
180947eb6368SDmitry Preobrazhensky
181047eb6368SDmitry PreobrazhenskyThe value 0 selects the low bits, while 1 selects the high bits.
181147eb6368SDmitry Preobrazhensky
181247eb6368SDmitry Preobrazhensky    =================================== =============================================================
181347eb6368SDmitry Preobrazhensky    Syntax                              Description
181447eb6368SDmitry Preobrazhensky    =================================== =============================================================
181547eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1}]                  Select operand bits for instructions with 1 source operand.
181647eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1}]           Select operand bits for instructions with 2 source operands.
181747eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1},{0..1}]    Select operand bits for instructions with 3 source operands.
181847eb6368SDmitry Preobrazhensky    =================================== =============================================================
181947eb6368SDmitry Preobrazhensky
1820b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1821b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1822b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1823b9683d3cSDmitry Preobrazhensky
182447eb6368SDmitry PreobrazhenskyExamples:
182547eb6368SDmitry Preobrazhensky
18261fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
182747eb6368SDmitry Preobrazhensky
182847eb6368SDmitry Preobrazhensky  op_sel_hi:[0,0]
182947eb6368SDmitry Preobrazhensky  op_sel_hi:[0,0,1]
183047eb6368SDmitry Preobrazhensky
183147eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg_lo:
183247eb6368SDmitry Preobrazhensky
183347eb6368SDmitry Preobrazhenskyneg_lo
183447eb6368SDmitry Preobrazhensky~~~~~~
183547eb6368SDmitry Preobrazhensky
183647eb6368SDmitry PreobrazhenskySpecifies whether to change sign of operand values selected by
183747eb6368SDmitry Preobrazhensky:ref:`op_sel<amdgpu_synid_op_sel>`. These values are then used
183847eb6368SDmitry Preobrazhenskyas input to the operation which results in the upper-half of the destination.
183947eb6368SDmitry Preobrazhensky
184047eb6368SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
184147eb6368SDmitry Preobrazhenskyoperands. First value controls src0, second value controls src1 and so on.
184247eb6368SDmitry Preobrazhensky
184347eb6368SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
184447eb6368SDmitry Preobrazhenskythe value 1 indicates that negative value of the operand must be used.
184547eb6368SDmitry Preobrazhensky
184647eb6368SDmitry PreobrazhenskyBy default, operand values are used unmodified.
184747eb6368SDmitry Preobrazhensky
184847eb6368SDmitry PreobrazhenskyThis modifier is valid for floating point operands only.
184947eb6368SDmitry Preobrazhensky
185047eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185147eb6368SDmitry Preobrazhensky    Syntax                           Description
185247eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185347eb6368SDmitry Preobrazhensky    neg_lo:[{0..1}]                  Select affected operands for instructions with 1 source operand.
185447eb6368SDmitry Preobrazhensky    neg_lo:[{0..1},{0..1}]           Select affected operands for instructions with 2 source operands.
185547eb6368SDmitry Preobrazhensky    neg_lo:[{0..1},{0..1},{0..1}]    Select affected operands for instructions with 3 source operands.
185647eb6368SDmitry Preobrazhensky    ================================ ==================================================================
185747eb6368SDmitry Preobrazhensky
1858b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1859b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1860b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1861b9683d3cSDmitry Preobrazhensky
186247eb6368SDmitry PreobrazhenskyExamples:
186347eb6368SDmitry Preobrazhensky
18641fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
186547eb6368SDmitry Preobrazhensky
186647eb6368SDmitry Preobrazhensky  neg_lo:[0]
186747eb6368SDmitry Preobrazhensky  neg_lo:[0,1]
186847eb6368SDmitry Preobrazhensky
186947eb6368SDmitry Preobrazhensky.. _amdgpu_synid_neg_hi:
187047eb6368SDmitry Preobrazhensky
187147eb6368SDmitry Preobrazhenskyneg_hi
187247eb6368SDmitry Preobrazhensky~~~~~~
187347eb6368SDmitry Preobrazhensky
187447eb6368SDmitry PreobrazhenskySpecifies whether to change sign of operand values selected by
187547eb6368SDmitry Preobrazhensky:ref:`op_sel_hi<amdgpu_synid_op_sel_hi>`. These values are then used
187647eb6368SDmitry Preobrazhenskyas input to the operation which results in the upper-half of the destination.
187747eb6368SDmitry Preobrazhensky
187847eb6368SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
187947eb6368SDmitry Preobrazhenskyoperands. First value controls src0, second value controls src1 and so on.
188047eb6368SDmitry Preobrazhensky
188147eb6368SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
188247eb6368SDmitry Preobrazhenskythe value 1 indicates that negative value of the operand must be used.
188347eb6368SDmitry Preobrazhensky
188447eb6368SDmitry PreobrazhenskyBy default, operand values are used unmodified.
188547eb6368SDmitry Preobrazhensky
188647eb6368SDmitry PreobrazhenskyThis modifier is valid for floating point operands only.
188747eb6368SDmitry Preobrazhensky
188847eb6368SDmitry Preobrazhensky    =============================== ==================================================================
188947eb6368SDmitry Preobrazhensky    Syntax                          Description
189047eb6368SDmitry Preobrazhensky    =============================== ==================================================================
189147eb6368SDmitry Preobrazhensky    neg_hi:[{0..1}]                 Select affected operands for instructions with 1 source operand.
189247eb6368SDmitry Preobrazhensky    neg_hi:[{0..1},{0..1}]          Select affected operands for instructions with 2 source operands.
189347eb6368SDmitry Preobrazhensky    neg_hi:[{0..1},{0..1},{0..1}]   Select affected operands for instructions with 3 source operands.
189447eb6368SDmitry Preobrazhensky    =============================== ==================================================================
189547eb6368SDmitry Preobrazhensky
1896b9683d3cSDmitry PreobrazhenskyNote: numeric values may be specified as either
1897b9683d3cSDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
1898b9683d3cSDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
1899b9683d3cSDmitry Preobrazhensky
190047eb6368SDmitry PreobrazhenskyExamples:
190147eb6368SDmitry Preobrazhensky
19021fa7aaf5SDmitry Preobrazhensky.. parsed-literal::
190347eb6368SDmitry Preobrazhensky
190447eb6368SDmitry Preobrazhensky  neg_hi:[1,0]
190547eb6368SDmitry Preobrazhensky  neg_hi:[0,1,1]
190647eb6368SDmitry Preobrazhensky
190747eb6368SDmitry Preobrazhenskyclamp
190847eb6368SDmitry Preobrazhensky~~~~~
190947eb6368SDmitry Preobrazhensky
191047eb6368SDmitry PreobrazhenskySee a description :ref:`here<amdgpu_synid_clamp>`.
191147eb6368SDmitry Preobrazhensky
191247eb6368SDmitry Preobrazhensky.. _amdgpu_synid_mad_mix:
191347eb6368SDmitry Preobrazhensky
19143f7985e6SDmitry PreobrazhenskyVOP3P MAD_MIX/FMA_MIX Modifiers
19153f7985e6SDmitry Preobrazhensky-------------------------------
191647eb6368SDmitry Preobrazhensky
191780c45e49SDmitry Preobrazhensky*v_mad_mix\** and *v_fma_mix\**
191880c45e49SDmitry Preobrazhenskyinstructions use *op_sel* and *op_sel_hi* modifiers
191947eb6368SDmitry Preobrazhenskyin a manner different from *regular* VOP3P instructions.
192047eb6368SDmitry Preobrazhensky
192147eb6368SDmitry PreobrazhenskySee a description below.
192247eb6368SDmitry Preobrazhensky
1923cef9d421SDmitry PreobrazhenskyGFX9 and GFX10 only.
192447eb6368SDmitry Preobrazhensky
192547eb6368SDmitry Preobrazhensky.. _amdgpu_synid_mad_mix_op_sel:
192647eb6368SDmitry Preobrazhensky
1927ddac5c9bSDmitry Preobrazhenskym_op_sel
1928ddac5c9bSDmitry Preobrazhensky~~~~~~~~
192947eb6368SDmitry Preobrazhensky
193047eb6368SDmitry 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
193647eb6368SDmitry Preobrazhenskyoperands. First value controls src0, 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
194247eb6368SDmitry Preobrazhensky    =============================== ================================================
194347eb6368SDmitry Preobrazhensky    Syntax                          Description
194447eb6368SDmitry Preobrazhensky    =============================== ================================================
194547eb6368SDmitry Preobrazhensky    op_sel:[{0..1},{0..1},{0..1}]   Select location of each 16-bit source operand.
194647eb6368SDmitry 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
196747eb6368SDmitry Preobrazhenskyoperands. First value controls src0, 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
197447eb6368SDmitry Preobrazhensky    ======================================== ====================================
197547eb6368SDmitry Preobrazhensky    Syntax                                   Description
197647eb6368SDmitry Preobrazhensky    ======================================== ====================================
197747eb6368SDmitry Preobrazhensky    op_sel_hi:[{0..1},{0..1},{0..1}]         Select size of each source operand.
197847eb6368SDmitry 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
2008434b278cSDmitry PreobrazhenskyThese modifiers may only be used with GFX908 and GFX90A.
2009434b278cSDmitry Preobrazhensky
201080c45e49SDmitry Preobrazhensky.. _amdgpu_synid_cbsz:
201180c45e49SDmitry Preobrazhensky
201280c45e49SDmitry Preobrazhenskycbsz
201380c45e49SDmitry Preobrazhensky~~~~
201480c45e49SDmitry Preobrazhensky
2015434b278cSDmitry PreobrazhenskySpecifies a broadcast mode.
2016434b278cSDmitry Preobrazhensky
201780c45e49SDmitry Preobrazhensky    =============================== ==================================================================
201880c45e49SDmitry Preobrazhensky    Syntax                          Description
201980c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2020434b278cSDmitry Preobrazhensky    cbsz:[{0..7}]                   A broadcast mode.
202180c45e49SDmitry Preobrazhensky    =============================== ==================================================================
202280c45e49SDmitry Preobrazhensky
202380c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
202480c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
202580c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
202680c45e49SDmitry Preobrazhensky
202780c45e49SDmitry Preobrazhensky.. _amdgpu_synid_abid:
202880c45e49SDmitry Preobrazhensky
202980c45e49SDmitry Preobrazhenskyabid
203080c45e49SDmitry Preobrazhensky~~~~
203180c45e49SDmitry Preobrazhensky
2032434b278cSDmitry PreobrazhenskySpecifies matrix A group select.
2033434b278cSDmitry Preobrazhensky
203480c45e49SDmitry Preobrazhensky    =============================== ==================================================================
203580c45e49SDmitry Preobrazhensky    Syntax                          Description
203680c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2037434b278cSDmitry Preobrazhensky    abid:[{0..15}]                  Matrix A group select id.
203880c45e49SDmitry Preobrazhensky    =============================== ==================================================================
203980c45e49SDmitry Preobrazhensky
204080c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
204180c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
204280c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
204380c45e49SDmitry Preobrazhensky
204480c45e49SDmitry Preobrazhensky.. _amdgpu_synid_blgp:
204580c45e49SDmitry Preobrazhensky
204680c45e49SDmitry Preobrazhenskyblgp
204780c45e49SDmitry Preobrazhensky~~~~
204880c45e49SDmitry Preobrazhensky
2049434b278cSDmitry PreobrazhenskySpecifies matrix B lane group pattern.
2050434b278cSDmitry Preobrazhensky
205180c45e49SDmitry Preobrazhensky    =============================== ==================================================================
205280c45e49SDmitry Preobrazhensky    Syntax                          Description
205380c45e49SDmitry Preobrazhensky    =============================== ==================================================================
2054434b278cSDmitry Preobrazhensky    blgp:[{0..7}]                   Matrix B lane group pattern.
205580c45e49SDmitry Preobrazhensky    =============================== ==================================================================
205680c45e49SDmitry Preobrazhensky
205780c45e49SDmitry PreobrazhenskyNote: numeric value may be specified as either
205880c45e49SDmitry Preobrazhenskyan :ref:`integer number<amdgpu_synid_integer_number>` or
205980c45e49SDmitry Preobrazhenskyan :ref:`absolute expression<amdgpu_synid_absolute_expression>`.
206080c45e49SDmitry Preobrazhensky
206162c46093SDmitry Preobrazhensky.. _amdgpu_synid_mfma_neg:
206262c46093SDmitry Preobrazhensky
206362c46093SDmitry Preobrazhenskyneg
206462c46093SDmitry Preobrazhensky~~~
206562c46093SDmitry Preobrazhensky
206662c46093SDmitry PreobrazhenskyIndicates operands that must be negated before the operation.
206762c46093SDmitry PreobrazhenskyThe number of values specified by this modifier must match the number of source
206862c46093SDmitry Preobrazhenskyoperands. First value controls src0, second value controls src1 and so on.
206962c46093SDmitry Preobrazhensky
207062c46093SDmitry PreobrazhenskyThe value 0 indicates that the corresponding operand value is used unmodified,
207162c46093SDmitry Preobrazhenskythe value 1 indicates that the operand value must be negated before the operation.
207262c46093SDmitry Preobrazhensky
207362c46093SDmitry PreobrazhenskyBy default, operand values are used unmodified.
207462c46093SDmitry Preobrazhensky
207562c46093SDmitry PreobrazhenskyThis modifier is valid for floating point operands only.
207662c46093SDmitry Preobrazhensky
207762c46093SDmitry Preobrazhensky    =============================== ==================================================================
207862c46093SDmitry Preobrazhensky    Syntax                          Description
207962c46093SDmitry Preobrazhensky    =============================== ==================================================================
208062c46093SDmitry Preobrazhensky    neg:[{0..1},{0..1},{0..1}]      Select operands which must be negated before the operation.
208162c46093SDmitry Preobrazhensky    =============================== ==================================================================
208262c46093SDmitry Preobrazhensky
208362c46093SDmitry PreobrazhenskyNote: numeric values may be specified as either
208462c46093SDmitry Preobrazhensky:ref:`integer numbers<amdgpu_synid_integer_number>` or
208562c46093SDmitry Preobrazhensky:ref:`absolute expressions<amdgpu_synid_absolute_expression>`.
208662c46093SDmitry Preobrazhensky
208762c46093SDmitry PreobrazhenskyExamples:
208862c46093SDmitry Preobrazhensky
208962c46093SDmitry Preobrazhensky.. parsed-literal::
209062c46093SDmitry Preobrazhensky
209162c46093SDmitry Preobrazhensky  neg:[0,1,1]
2092