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