1====================================== 2Syntax of AMDGPU Instruction Modifiers 3====================================== 4 5.. contents:: 6 :local: 7 8Conventions 9=========== 10 11The following notation is used throughout this document: 12 13 =================== ============================================================= 14 Notation Description 15 =================== ============================================================= 16 {0..N} Any integer value in the range from 0 to N (inclusive). 17 <x> Syntax and meaning of *x* are explained elsewhere. 18 =================== ============================================================= 19 20.. _amdgpu_syn_modifiers: 21 22Modifiers 23========= 24 25DS Modifiers 26------------ 27 28.. _amdgpu_synid_ds_offset80: 29 30offset0 31~~~~~~~ 32 33Specifies the first 8-bit offset, in bytes. The default value is 0. 34 35Used with DS instructions that expect two addresses. 36 37 =================== ==================================================================== 38 Syntax Description 39 =================== ==================================================================== 40 offset0:{0..0xFF} Specifies an unsigned 8-bit offset as a positive 41 :ref:`integer number <amdgpu_synid_integer_number>` 42 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 43 =================== ==================================================================== 44 45Examples: 46 47.. parsed-literal:: 48 49 offset0:0xff 50 offset0:2-x 51 offset0:-x-y 52 53.. _amdgpu_synid_ds_offset81: 54 55offset1 56~~~~~~~ 57 58Specifies the second 8-bit offset, in bytes. The default value is 0. 59 60Used with DS instructions that expect two addresses. 61 62 =================== ==================================================================== 63 Syntax Description 64 =================== ==================================================================== 65 offset1:{0..0xFF} Specifies an unsigned 8-bit offset as a positive 66 :ref:`integer number <amdgpu_synid_integer_number>` 67 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 68 =================== ==================================================================== 69 70Examples: 71 72.. parsed-literal:: 73 74 offset1:0xff 75 offset1:2-x 76 offset1:-x-y 77 78.. _amdgpu_synid_ds_offset16: 79 80offset 81~~~~~~ 82 83Specifies a 16-bit offset, in bytes. The default value is 0. 84 85Used with DS instructions that expect a single address. 86 87 ==================== ==================================================================== 88 Syntax Description 89 ==================== ==================================================================== 90 offset:{0..0xFFFF} Specifies an unsigned 16-bit offset as a positive 91 :ref:`integer number <amdgpu_synid_integer_number>` 92 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 93 ==================== ==================================================================== 94 95Examples: 96 97.. parsed-literal:: 98 99 offset:65535 100 offset:0xffff 101 offset:-x-y 102 103.. _amdgpu_synid_sw_offset16: 104 105swizzle pattern 106~~~~~~~~~~~~~~~ 107 108This is a special modifier that may be used with *ds_swizzle_b32* instruction only. 109It specifies a swizzle pattern in numeric or symbolic form. The default value is 0. 110 111 ======================================================= =========================================================== 112 Syntax Description 113 ======================================================= =========================================================== 114 offset:{0..0xFFFF} Specifies a 16-bit swizzle pattern. 115 offset:swizzle(QUAD_PERM,{0..3},{0..3},{0..3},{0..3}) Specifies a quad permute mode pattern 116 117 Each number is a lane *id*. 118 offset:swizzle(BITMASK_PERM, "<mask>") Specifies a bitmask permute mode pattern. 119 120 The pattern converts a 5-bit lane *id* to another 121 lane *id* with which the lane interacts. 122 123 The *mask* is a 5-character sequence which 124 specifies how to transform the bits of the 125 lane *id*. 126 127 The following characters are allowed: 128 129 * "0" - set bit to 0. 130 131 * "1" - set bit to 1. 132 133 * "p" - preserve bit. 134 135 * "i" - inverse bit. 136 137 offset:swizzle(BROADCAST,{2..32},{0..N}) Specifies a broadcast mode. 138 139 Broadcasts the value of any particular lane to 140 all lanes in its group. 141 142 The first numeric parameter is a group 143 size and must be equal to 2, 4, 8, 16 or 32. 144 145 The second numeric parameter is an index of the 146 lane being broadcast. 147 148 The index must not exceed group size. 149 offset:swizzle(SWAP,{1..16}) Specifies a swap mode. 150 151 Swaps the neighboring groups of 152 1, 2, 4, 8 or 16 lanes. 153 offset:swizzle(REVERSE,{2..32}) Specifies a reverse mode. 154 155 Reverses the lanes for groups of 2, 4, 8, 16 or 32 lanes. 156 ======================================================= =========================================================== 157 158Note: numeric values may be specified as either 159:ref:`integer numbers<amdgpu_synid_integer_number>` or 160:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 161 162Examples: 163 164.. parsed-literal:: 165 166 offset:255 167 offset:0xffff 168 offset:swizzle(QUAD_PERM, 0, 1, 2, 3) 169 offset:swizzle(BITMASK_PERM, "01pi0") 170 offset:swizzle(BROADCAST, 2, 0) 171 offset:swizzle(SWAP, 8) 172 offset:swizzle(REVERSE, 30 + 2) 173 174.. _amdgpu_synid_gds: 175 176gds 177~~~ 178 179Specifies whether to use GDS or LDS memory (LDS is the default). 180 181 ======================================== ================================================ 182 Syntax Description 183 ======================================== ================================================ 184 gds Use GDS memory. 185 ======================================== ================================================ 186 187 188EXP Modifiers 189------------- 190 191.. _amdgpu_synid_done: 192 193done 194~~~~ 195 196Specifies if this is the last export from the shader to the target. By default, 197an *export* instruction does not finish an export sequence. 198 199 ======================================== ================================================ 200 Syntax Description 201 ======================================== ================================================ 202 done Indicates the last export operation. 203 ======================================== ================================================ 204 205.. _amdgpu_synid_compr: 206 207compr 208~~~~~ 209 210Indicates if the data is compressed (data is not compressed by default). 211 212 ======================================== ================================================ 213 Syntax Description 214 ======================================== ================================================ 215 compr Data is compressed. 216 ======================================== ================================================ 217 218.. _amdgpu_synid_vm: 219 220vm 221~~ 222 223Specifies if the :ref:`exec<amdgpu_synid_exec>` mask is valid for this *export* instruction 224(the mask is not valid by default). 225 226 ======================================== ================================================ 227 Syntax Description 228 ======================================== ================================================ 229 vm Set the flag indicating a valid 230 :ref:`exec<amdgpu_synid_exec>` mask. 231 ======================================== ================================================ 232 233.. _amdgpu_synid_row_en: 234 235row_en 236~~~~~~ 237 238Specifies whether to export one row or multiple rows of data. 239 240 ======================================== ================================================ 241 Syntax Description 242 ======================================== ================================================ 243 row_en Export multiple rows using row index from M0. 244 ======================================== ================================================ 245 246FLAT Modifiers 247-------------- 248 249.. _amdgpu_synid_flat_offset12: 250 251offset12 252~~~~~~~~ 253 254Specifies an immediate unsigned 12-bit offset, in bytes. The default value is 0. 255 256 ================= ==================================================================== 257 Syntax Description 258 ================= ==================================================================== 259 offset:{0..4095} Specifies a 12-bit unsigned offset as a positive 260 :ref:`integer number <amdgpu_synid_integer_number>` 261 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 262 ================= ==================================================================== 263 264Examples: 265 266.. parsed-literal:: 267 268 offset:4095 269 offset:x-0xff 270 271.. _amdgpu_synid_flat_offset13s: 272 273offset13s 274~~~~~~~~~ 275 276Specifies an immediate signed 13-bit offset, in bytes. The default value is 0. 277 278 ===================== ==================================================================== 279 Syntax Description 280 ===================== ==================================================================== 281 offset:{-4096..4095} Specifies a 13-bit signed offset as an 282 :ref:`integer number <amdgpu_synid_integer_number>` 283 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 284 ===================== ==================================================================== 285 286Examples: 287 288.. parsed-literal:: 289 290 offset:-4000 291 offset:0x10 292 offset:-x 293 294.. _amdgpu_synid_flat_offset12s: 295 296offset12s 297~~~~~~~~~ 298 299Specifies an immediate signed 12-bit offset, in bytes. The default value is 0. 300 301 ===================== ==================================================================== 302 Syntax Description 303 ===================== ==================================================================== 304 offset:{-2048..2047} Specifies a 12-bit signed offset as an 305 :ref:`integer number <amdgpu_synid_integer_number>` 306 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 307 ===================== ==================================================================== 308 309Examples: 310 311.. parsed-literal:: 312 313 offset:-2000 314 offset:0x10 315 offset:-x+y 316 317.. _amdgpu_synid_flat_offset11: 318 319offset11 320~~~~~~~~ 321 322Specifies an immediate unsigned 11-bit offset, in bytes. The default value is 0. 323 324 ================= ==================================================================== 325 Syntax Description 326 ================= ==================================================================== 327 offset:{0..2047} Specifies an 11-bit unsigned offset as a positive 328 :ref:`integer number <amdgpu_synid_integer_number>` 329 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 330 ================= ==================================================================== 331 332Examples: 333 334.. parsed-literal:: 335 336 offset:2047 337 offset:x+0xff 338 339dlc 340~~~ 341 342See a description :ref:`here<amdgpu_synid_dlc>`. 343 344glc 345~~~ 346 347See a description :ref:`here<amdgpu_synid_glc>`. 348 349lds 350~~~ 351 352See a description :ref:`here<amdgpu_synid_lds>`. 353 354slc 355~~~ 356 357See a description :ref:`here<amdgpu_synid_slc>`. 358 359tfe 360~~~ 361 362See a description :ref:`here<amdgpu_synid_tfe>`. 363 364nv 365~~ 366 367See a description :ref:`here<amdgpu_synid_nv>`. 368 369sc0 370~~~ 371 372See a description :ref:`here<amdgpu_synid_sc0>`. 373 374sc1 375~~~ 376 377See a description :ref:`here<amdgpu_synid_sc1>`. 378 379nt 380~~ 381 382See a description :ref:`here<amdgpu_synid_nt>`. 383 384MIMG Modifiers 385-------------- 386 387.. _amdgpu_synid_dmask: 388 389dmask 390~~~~~ 391 392Specifies which channels (image components) are used by the operation. 393By default, no channels are used. 394 395 =============== ==================================================================== 396 Syntax Description 397 =============== ==================================================================== 398 dmask:{0..15} Specifies image channels as a positive 399 :ref:`integer number <amdgpu_synid_integer_number>` 400 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 401 402 Each bit corresponds to one of 4 image components (RGBA). 403 404 If the specified bit value is 0, the image component is not used, 405 while value 1 means that the component is used. 406 =============== ==================================================================== 407 408This modifier has some limitations depending on the instruction kind: 409 410 =================================================== ======================== 411 Instruction Kind Valid dmask Values 412 =================================================== ======================== 413 32-bit atomic *cmpswap* 0x3 414 32-bit atomic instructions except for *cmpswap* 0x1 415 64-bit atomic *cmpswap* 0xF 416 64-bit atomic instructions except for *cmpswap* 0x3 417 *gather4* 0x1, 0x2, 0x4, 0x8 418 GFX11+ *msaa_load* 0x1, 0x2, 0x4, 0x8 419 Other instructions any value 420 =================================================== ======================== 421 422Examples: 423 424.. parsed-literal:: 425 426 dmask:0xf 427 dmask:0b1111 428 dmask:x|y|z 429 430.. _amdgpu_synid_unorm: 431 432unorm 433~~~~~ 434 435Specifies whether the address is normalized or not (the address is normalized by default). 436 437 ======================== ======================================== 438 Syntax Description 439 ======================== ======================================== 440 unorm Force the address to be not normalized. 441 ======================== ======================================== 442 443glc 444~~~ 445 446See a description :ref:`here<amdgpu_synid_glc>`. 447 448slc 449~~~ 450 451See a description :ref:`here<amdgpu_synid_slc>`. 452 453.. _amdgpu_synid_r128: 454 455r128 456~~~~ 457 458Specifies texture resource size. The default size is 256 bits. 459 460 =================== ================================================ 461 Syntax Description 462 =================== ================================================ 463 r128 Specifies 128 bits texture resource size. 464 =================== ================================================ 465 466.. WARNING:: Using this modifier shall decrease *rsrc* operand size from 8 to 4 dwords, \ 467 but assembler does not currently support this feature. 468 469tfe 470~~~ 471 472See a description :ref:`here<amdgpu_synid_tfe>`. 473 474.. _amdgpu_synid_lwe: 475 476lwe 477~~~ 478 479Specifies LOD warning status (LOD warning is disabled by default). 480 481 ======================================== ================================================ 482 Syntax Description 483 ======================================== ================================================ 484 lwe Enables LOD warning. 485 ======================================== ================================================ 486 487.. _amdgpu_synid_da: 488 489da 490~~ 491 492Specifies if an array index must be sent to TA. By default, the array index is not sent. 493 494 ======================================== ================================================ 495 Syntax Description 496 ======================================== ================================================ 497 da Send an array index to TA. 498 ======================================== ================================================ 499 500.. _amdgpu_synid_d16: 501 502d16 503~~~ 504 505Specifies data size: 16 or 32 bits (32 bits by default). 506 507 ======================================== ================================================ 508 Syntax Description 509 ======================================== ================================================ 510 d16 Enables 16-bits data mode. 511 512 On loads, convert data in memory to 16-bit 513 format before storing it in VGPRs. 514 515 For stores, convert 16-bit data in VGPRs to 516 32 bits before writing the values to memory. 517 518 Note that GFX8.0 does not support data packing. 519 Each 16-bit data element occupies 1 VGPR. 520 521 GFX8.1 and GFX9+ support data packing. 522 Each pair of 16-bit data elements 523 occupies 1 VGPR. 524 ======================================== ================================================ 525 526.. _amdgpu_synid_a16: 527 528a16 529~~~ 530 531Specifies the size of image address components: 16 or 32 bits (32 bits by default). 532 533 ======================================== ================================================ 534 Syntax Description 535 ======================================== ================================================ 536 a16 Enables 16-bits image address components. 537 ======================================== ================================================ 538 539.. _amdgpu_synid_dim: 540 541dim 542~~~ 543 544Specifies surface dimension. This is a mandatory modifier. There is no default value. 545 546 =============================== ========================================================= 547 Syntax Description 548 =============================== ========================================================= 549 dim:1D One-dimensional image. 550 dim:2D Two-dimensional image. 551 dim:3D Three-dimensional image. 552 dim:CUBE Cubemap array. 553 dim:1D_ARRAY One-dimensional image array. 554 dim:2D_ARRAY Two-dimensional image array. 555 dim:2D_MSAA Two-dimensional multi-sample auto-aliasing image. 556 dim:2D_MSAA_ARRAY Two-dimensional multi-sample auto-aliasing image array. 557 =============================== ========================================================= 558 559The following table defines an alternative syntax which is supported 560for compatibility with SP3 assembler: 561 562 =============================== ========================================================= 563 Syntax Description 564 =============================== ========================================================= 565 dim:SQ_RSRC_IMG_1D One-dimensional image. 566 dim:SQ_RSRC_IMG_2D Two-dimensional image. 567 dim:SQ_RSRC_IMG_3D Three-dimensional image. 568 dim:SQ_RSRC_IMG_CUBE Cubemap array. 569 dim:SQ_RSRC_IMG_1D_ARRAY One-dimensional image array. 570 dim:SQ_RSRC_IMG_2D_ARRAY Two-dimensional image array. 571 dim:SQ_RSRC_IMG_2D_MSAA Two-dimensional multi-sample auto-aliasing image. 572 dim:SQ_RSRC_IMG_2D_MSAA_ARRAY Two-dimensional multi-sample auto-aliasing image array. 573 =============================== ========================================================= 574 575dlc 576~~~ 577 578See a description :ref:`here<amdgpu_synid_dlc>`. 579 580Miscellaneous Modifiers 581----------------------- 582 583.. _amdgpu_synid_dlc: 584 585dlc 586~~~ 587 588Controls device level cache policy for memory operations. Used for synchronization. 589When specified, forces operation to bypass device level cache, making the operation device 590level coherent. By default, instructions use device level cache. 591 592 ======================================== ================================================ 593 Syntax Description 594 ======================================== ================================================ 595 dlc Bypass device level cache. 596 ======================================== ================================================ 597 598.. _amdgpu_synid_glc: 599 600glc 601~~~ 602 603For atomic opcodes, this modifier indicates that the instruction returns the value from memory 604before the operation. For other opcodes, it is used together with :ref:`slc<amdgpu_synid_slc>` 605to specify cache policy. 606 607The default value is off (0). 608 609 ======================================== ================================================ 610 Syntax Description 611 ======================================== ================================================ 612 glc Set glc bit to 1. 613 ======================================== ================================================ 614 615.. _amdgpu_synid_lds: 616 617lds 618~~~ 619 620Specifies where to store the result: VGPRs or LDS (VGPRs by default). 621 622 ======================================== =========================== 623 Syntax Description 624 ======================================== =========================== 625 lds Store the result in LDS. 626 ======================================== =========================== 627 628.. _amdgpu_synid_nv: 629 630nv 631~~ 632 633Specifies if the instruction is operating on non-volatile memory. 634By default, memory is volatile. 635 636 ======================================== ================================================ 637 Syntax Description 638 ======================================== ================================================ 639 nv Indicates that the instruction operates on 640 non-volatile memory. 641 ======================================== ================================================ 642 643.. _amdgpu_synid_slc: 644 645slc 646~~~ 647 648Controls behavior of L2 cache. The default value is off (0). 649 650 ======================================== ================================================ 651 Syntax Description 652 ======================================== ================================================ 653 slc Set slc bit to 1. 654 ======================================== ================================================ 655 656.. _amdgpu_synid_tfe: 657 658tfe 659~~~ 660 661Controls access to partially resident textures. The default value is off (0). 662 663 ======================================== ================================================ 664 Syntax Description 665 ======================================== ================================================ 666 tfe Set tfe bit to 1. 667 ======================================== ================================================ 668 669.. _amdgpu_synid_sc0: 670 671sc0 672~~~ 673 674For atomic opcodes, this modifier indicates that the instruction returns the value from memory 675before the operation. For other opcodes, it is used together with :ref:`sc1<amdgpu_synid_sc1>` 676to specify cache policy. 677 678 ======================================== ================================================ 679 Syntax Description 680 ======================================== ================================================ 681 sc0 Set sc0 bit to 1. 682 ======================================== ================================================ 683 684.. _amdgpu_synid_sc1: 685 686sc1 687~~~ 688 689This modifier is used together with :ref:`sc0<amdgpu_synid_sc0>` to specify cache 690policy. 691 692 ======================================== ================================================ 693 Syntax Description 694 ======================================== ================================================ 695 sc1 Set sc1 bit to 1. 696 ======================================== ================================================ 697 698.. _amdgpu_synid_nt: 699 700nt 701~~ 702 703Indicates an operation with non-temporal data. 704 705 ======================================== ================================================ 706 Syntax Description 707 ======================================== ================================================ 708 nt Set nt bit to 1. 709 ======================================== ================================================ 710 711MUBUF/MTBUF Modifiers 712--------------------- 713 714.. _amdgpu_synid_idxen: 715 716idxen 717~~~~~ 718 719Specifies whether address components include an index. By default, the index is not used. 720 721May be used together with :ref:`offen<amdgpu_synid_offen>`. 722 723Cannot be used with :ref:`addr64<amdgpu_synid_addr64>`. 724 725 ======================================== ================================================ 726 Syntax Description 727 ======================================== ================================================ 728 idxen Address components include an index. 729 ======================================== ================================================ 730 731.. _amdgpu_synid_offen: 732 733offen 734~~~~~ 735 736Specifies whether address components include an offset. By default, the offset is not used. 737 738May be used together with :ref:`idxen<amdgpu_synid_idxen>`. 739 740Cannot be used with :ref:`addr64<amdgpu_synid_addr64>`. 741 742 ======================================== ================================================ 743 Syntax Description 744 ======================================== ================================================ 745 offen Address components include an offset. 746 ======================================== ================================================ 747 748.. _amdgpu_synid_addr64: 749 750addr64 751~~~~~~ 752 753Specifies whether a 64-bit address is used. By default, no address is used. 754 755Cannot be used with :ref:`offen<amdgpu_synid_offen>` and 756:ref:`idxen<amdgpu_synid_idxen>` modifiers. 757 758 ======================================== ================================================ 759 Syntax Description 760 ======================================== ================================================ 761 addr64 A 64-bit address is used. 762 ======================================== ================================================ 763 764.. _amdgpu_synid_buf_offset12: 765 766offset12 767~~~~~~~~ 768 769Specifies an immediate unsigned 12-bit offset, in bytes. The default value is 0. 770 771 ================== ==================================================================== 772 Syntax Description 773 ================== ==================================================================== 774 offset:{0..0xFFF} Specifies a 12-bit unsigned offset as a positive 775 :ref:`integer number <amdgpu_synid_integer_number>` 776 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 777 ================== ==================================================================== 778 779Examples: 780 781.. parsed-literal:: 782 783 offset:x+y 784 offset:0x10 785 786glc 787~~~ 788 789See a description :ref:`here<amdgpu_synid_glc>`. 790 791slc 792~~~ 793 794See a description :ref:`here<amdgpu_synid_slc>`. 795 796lds 797~~~ 798 799See a description :ref:`here<amdgpu_synid_lds>`. 800 801dlc 802~~~ 803 804See a description :ref:`here<amdgpu_synid_dlc>`. 805 806tfe 807~~~ 808 809See a description :ref:`here<amdgpu_synid_tfe>`. 810 811.. _amdgpu_synid_fmt: 812 813fmt 814~~~ 815 816Specifies data and numeric formats used by the operation. 817The default numeric format is BUF_NUM_FORMAT_UNORM. 818The default data format is BUF_DATA_FORMAT_8. 819 820 ========================================= =============================================================== 821 Syntax Description 822 ========================================= =============================================================== 823 format:{0..127} Use a format specified as either an 824 :ref:`integer number<amdgpu_synid_integer_number>` or an 825 :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 826 format:[<data format>] Use the specified data format and 827 default numeric format. 828 format:[<numeric format>] Use the specified numeric format and 829 default data format. 830 format:[<data format>,<numeric format>] Use the specified data and numeric formats. 831 format:[<numeric format>,<data format>] Use the specified data and numeric formats. 832 ========================================= =============================================================== 833 834.. _amdgpu_synid_format_data: 835 836Supported data formats are defined in the following table: 837 838 ========================================= =============================== 839 Syntax Note 840 ========================================= =============================== 841 BUF_DATA_FORMAT_INVALID 842 BUF_DATA_FORMAT_8 The default value. 843 BUF_DATA_FORMAT_16 844 BUF_DATA_FORMAT_8_8 845 BUF_DATA_FORMAT_32 846 BUF_DATA_FORMAT_16_16 847 BUF_DATA_FORMAT_10_11_11 848 BUF_DATA_FORMAT_11_11_10 849 BUF_DATA_FORMAT_10_10_10_2 850 BUF_DATA_FORMAT_2_10_10_10 851 BUF_DATA_FORMAT_8_8_8_8 852 BUF_DATA_FORMAT_32_32 853 BUF_DATA_FORMAT_16_16_16_16 854 BUF_DATA_FORMAT_32_32_32 855 BUF_DATA_FORMAT_32_32_32_32 856 BUF_DATA_FORMAT_RESERVED_15 857 ========================================= =============================== 858 859.. _amdgpu_synid_format_num: 860 861Supported numeric formats are defined below: 862 863 ========================================= =============================== 864 Syntax Note 865 ========================================= =============================== 866 BUF_NUM_FORMAT_UNORM The default value. 867 BUF_NUM_FORMAT_SNORM 868 BUF_NUM_FORMAT_USCALED 869 BUF_NUM_FORMAT_SSCALED 870 BUF_NUM_FORMAT_UINT 871 BUF_NUM_FORMAT_SINT 872 BUF_NUM_FORMAT_SNORM_OGL GFX7 only. 873 BUF_NUM_FORMAT_RESERVED_6 GFX8 and GFX9 only. 874 BUF_NUM_FORMAT_FLOAT 875 ========================================= =============================== 876 877Examples: 878 879.. parsed-literal:: 880 881 format:0 882 format:127 883 format:[BUF_DATA_FORMAT_16] 884 format:[BUF_DATA_FORMAT_16,BUF_NUM_FORMAT_SSCALED] 885 format:[BUF_NUM_FORMAT_FLOAT] 886 887.. _amdgpu_synid_ufmt: 888 889ufmt 890~~~~ 891 892Specifies a unified format used by the operation. 893The default format is BUF_FMT_8_UNORM. 894 895 ========================================= =============================================================== 896 Syntax Description 897 ========================================= =============================================================== 898 format:{0..127} Use a unified format specified as either an 899 :ref:`integer number<amdgpu_synid_integer_number>` or an 900 :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 901 Note that unified format numbers are incompatible with 902 format numbers used for pre-GFX10 ISA. 903 format:[<unified format>] Use the specified unified format. 904 ========================================= =============================================================== 905 906Unified format is a replacement for :ref:`data<amdgpu_synid_format_data>` 907and :ref:`numeric<amdgpu_synid_format_num>` formats. For compatibility with older ISA, 908:ref:`the syntax with data and numeric formats<amdgpu_synid_fmt>` is still accepted 909provided that the combination of formats can be mapped to a unified format. 910 911Supported unified formats and equivalent combinations of data and numeric formats 912are defined below: 913 914 ============================== ============================== ============================= ============ 915 Unified Format Syntax Equivalent Data Format Equivalent Numeric Format Note 916 ============================== ============================== ============================= ============ 917 BUF_FMT_INVALID BUF_DATA_FORMAT_INVALID BUF_NUM_FORMAT_UNORM 918 919 BUF_FMT_8_UNORM BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_UNORM 920 BUF_FMT_8_SNORM BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_SNORM 921 BUF_FMT_8_USCALED BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_USCALED 922 BUF_FMT_8_SSCALED BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_SSCALED 923 BUF_FMT_8_UINT BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_UINT 924 BUF_FMT_8_SINT BUF_DATA_FORMAT_8 BUF_NUM_FORMAT_SINT 925 926 BUF_FMT_16_UNORM BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_UNORM 927 BUF_FMT_16_SNORM BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_SNORM 928 BUF_FMT_16_USCALED BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_USCALED 929 BUF_FMT_16_SSCALED BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_SSCALED 930 BUF_FMT_16_UINT BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_UINT 931 BUF_FMT_16_SINT BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_SINT 932 BUF_FMT_16_FLOAT BUF_DATA_FORMAT_16 BUF_NUM_FORMAT_FLOAT 933 934 BUF_FMT_8_8_UNORM BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_UNORM 935 BUF_FMT_8_8_SNORM BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_SNORM 936 BUF_FMT_8_8_USCALED BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_USCALED 937 BUF_FMT_8_8_SSCALED BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_SSCALED 938 BUF_FMT_8_8_UINT BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_UINT 939 BUF_FMT_8_8_SINT BUF_DATA_FORMAT_8_8 BUF_NUM_FORMAT_SINT 940 941 BUF_FMT_32_UINT BUF_DATA_FORMAT_32 BUF_NUM_FORMAT_UINT 942 BUF_FMT_32_SINT BUF_DATA_FORMAT_32 BUF_NUM_FORMAT_SINT 943 BUF_FMT_32_FLOAT BUF_DATA_FORMAT_32 BUF_NUM_FORMAT_FLOAT 944 945 BUF_FMT_16_16_UNORM BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_UNORM 946 BUF_FMT_16_16_SNORM BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_SNORM 947 BUF_FMT_16_16_USCALED BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_USCALED 948 BUF_FMT_16_16_SSCALED BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_SSCALED 949 BUF_FMT_16_16_UINT BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_UINT 950 BUF_FMT_16_16_SINT BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_SINT 951 BUF_FMT_16_16_FLOAT BUF_DATA_FORMAT_16_16 BUF_NUM_FORMAT_FLOAT 952 953 BUF_FMT_10_11_11_UNORM BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_UNORM GFX10 only 954 BUF_FMT_10_11_11_SNORM BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_SNORM GFX10 only 955 BUF_FMT_10_11_11_USCALED BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_USCALED GFX10 only 956 BUF_FMT_10_11_11_SSCALED BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_SSCALED GFX10 only 957 BUF_FMT_10_11_11_UINT BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_UINT GFX10 only 958 BUF_FMT_10_11_11_SINT BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_SINT GFX10 only 959 BUF_FMT_10_11_11_FLOAT BUF_DATA_FORMAT_10_11_11 BUF_NUM_FORMAT_FLOAT 960 961 BUF_FMT_11_11_10_UNORM BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_UNORM GFX10 only 962 BUF_FMT_11_11_10_SNORM BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_SNORM GFX10 only 963 BUF_FMT_11_11_10_USCALED BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_USCALED GFX10 only 964 BUF_FMT_11_11_10_SSCALED BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_SSCALED GFX10 only 965 BUF_FMT_11_11_10_UINT BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_UINT GFX10 only 966 BUF_FMT_11_11_10_SINT BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_SINT GFX10 only 967 BUF_FMT_11_11_10_FLOAT BUF_DATA_FORMAT_11_11_10 BUF_NUM_FORMAT_FLOAT 968 969 BUF_FMT_10_10_10_2_UNORM BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_UNORM 970 BUF_FMT_10_10_10_2_SNORM BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_SNORM 971 BUF_FMT_10_10_10_2_USCALED BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_USCALED GFX10 only 972 BUF_FMT_10_10_10_2_SSCALED BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_SSCALED GFX10 only 973 BUF_FMT_10_10_10_2_UINT BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_UINT 974 BUF_FMT_10_10_10_2_SINT BUF_DATA_FORMAT_10_10_10_2 BUF_NUM_FORMAT_SINT 975 976 BUF_FMT_2_10_10_10_UNORM BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_UNORM 977 BUF_FMT_2_10_10_10_SNORM BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_SNORM 978 BUF_FMT_2_10_10_10_USCALED BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_USCALED 979 BUF_FMT_2_10_10_10_SSCALED BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_SSCALED 980 BUF_FMT_2_10_10_10_UINT BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_UINT 981 BUF_FMT_2_10_10_10_SINT BUF_DATA_FORMAT_2_10_10_10 BUF_NUM_FORMAT_SINT 982 983 BUF_FMT_8_8_8_8_UNORM BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_UNORM 984 BUF_FMT_8_8_8_8_SNORM BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_SNORM 985 BUF_FMT_8_8_8_8_USCALED BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_USCALED 986 BUF_FMT_8_8_8_8_SSCALED BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_SSCALED 987 BUF_FMT_8_8_8_8_UINT BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_UINT 988 BUF_FMT_8_8_8_8_SINT BUF_DATA_FORMAT_8_8_8_8 BUF_NUM_FORMAT_SINT 989 990 BUF_FMT_32_32_UINT BUF_DATA_FORMAT_32_32 BUF_NUM_FORMAT_UINT 991 BUF_FMT_32_32_SINT BUF_DATA_FORMAT_32_32 BUF_NUM_FORMAT_SINT 992 BUF_FMT_32_32_FLOAT BUF_DATA_FORMAT_32_32 BUF_NUM_FORMAT_FLOAT 993 994 BUF_FMT_16_16_16_16_UNORM BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_UNORM 995 BUF_FMT_16_16_16_16_SNORM BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_SNORM 996 BUF_FMT_16_16_16_16_USCALED BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_USCALED 997 BUF_FMT_16_16_16_16_SSCALED BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_SSCALED 998 BUF_FMT_16_16_16_16_UINT BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_UINT 999 BUF_FMT_16_16_16_16_SINT BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_SINT 1000 BUF_FMT_16_16_16_16_FLOAT BUF_DATA_FORMAT_16_16_16_16 BUF_NUM_FORMAT_FLOAT 1001 1002 BUF_FMT_32_32_32_UINT BUF_DATA_FORMAT_32_32_32 BUF_NUM_FORMAT_UINT 1003 BUF_FMT_32_32_32_SINT BUF_DATA_FORMAT_32_32_32 BUF_NUM_FORMAT_SINT 1004 BUF_FMT_32_32_32_FLOAT BUF_DATA_FORMAT_32_32_32 BUF_NUM_FORMAT_FLOAT 1005 BUF_FMT_32_32_32_32_UINT BUF_DATA_FORMAT_32_32_32_32 BUF_NUM_FORMAT_UINT 1006 BUF_FMT_32_32_32_32_SINT BUF_DATA_FORMAT_32_32_32_32 BUF_NUM_FORMAT_SINT 1007 BUF_FMT_32_32_32_32_FLOAT BUF_DATA_FORMAT_32_32_32_32 BUF_NUM_FORMAT_FLOAT 1008 ============================== ============================== ============================= ============ 1009 1010Examples: 1011 1012.. parsed-literal:: 1013 1014 format:0 1015 format:[BUF_FMT_32_UINT] 1016 1017SMRD/SMEM Modifiers 1018------------------- 1019 1020glc 1021~~~ 1022 1023See a description :ref:`here<amdgpu_synid_glc>`. 1024 1025nv 1026~~ 1027 1028See a description :ref:`here<amdgpu_synid_nv>`. 1029 1030dlc 1031~~~ 1032 1033See a description :ref:`here<amdgpu_synid_dlc>`. 1034 1035.. _amdgpu_synid_smem_offset20u: 1036 1037offset20u 1038~~~~~~~~~ 1039 1040Specifies an unsigned 20-bit offset, in bytes. The default value is 0. 1041 1042 ==================== ==================================================================== 1043 Syntax Description 1044 ==================== ==================================================================== 1045 offset:{0..0xFFFFF} Specifies an offset as a positive 1046 :ref:`integer number <amdgpu_synid_integer_number>` 1047 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 1048 ==================== ==================================================================== 1049 1050Examples: 1051 1052.. parsed-literal:: 1053 1054 offset:1 1055 offset:0xfffff 1056 offset:x-y 1057 1058.. _amdgpu_synid_smem_offset21s: 1059 1060offset21s 1061~~~~~~~~~ 1062 1063Specifies a signed 21-bit offset, in bytes. The default value is 0. 1064 1065 ============================= ==================================================================== 1066 Syntax Description 1067 ============================= ==================================================================== 1068 offset:{-0x100000..0xFFFFF} Specifies an offset as an 1069 :ref:`integer number <amdgpu_synid_integer_number>` 1070 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 1071 ============================= ==================================================================== 1072 1073Examples: 1074 1075.. parsed-literal:: 1076 1077 offset:-1 1078 offset:0xfffff 1079 offset:-x 1080 1081VINTRP/VINTERP/LDSDIR Modifiers 1082------------------------------- 1083 1084.. _amdgpu_synid_high: 1085 1086high 1087~~~~ 1088 1089Specifies which half of the LDS word to use. Low half of LDS word is used by default. 1090 1091 ======================================== ================================ 1092 Syntax Description 1093 ======================================== ================================ 1094 high Use the high half of LDS word. 1095 ======================================== ================================ 1096 1097neg 1098~~~ 1099 1100See a description :ref:`here<amdgpu_synid_neg>`. 1101 1102.. _amdgpu_synid_wait_exp: 1103 1104wait_exp 1105~~~~~~~~ 1106 1107Specifies a wait on the EXP counter before issuing the current instruction. 1108The counter must be less than or equal to this value before the instruction is issued. 1109If set to 7, no wait is performed. 1110 1111The default value is zero. This is a safe value, but it may be suboptimal. 1112 1113 ================ ====================================================== 1114 Syntax Description 1115 ================ ====================================================== 1116 wait_exp:{0..7} An additional wait on the EXP counter before 1117 issuing this instruction. 1118 ================ ====================================================== 1119 1120.. _amdgpu_synid_wait_vdst: 1121 1122wait_vdst 1123~~~~~~~~~ 1124 1125Specifies a wait on the VA_VDST counter before issuing the current instruction. 1126The counter must be less than or equal to this value before the instruction is issued. 1127If set to 15, no wait is performed. 1128 1129The default value is zero. This is a safe value, but it may be suboptimal. 1130 1131 ================== ====================================================== 1132 Syntax Description 1133 ================== ====================================================== 1134 wait_vdst:{0..15} An additional wait on the VA_VDST counter before 1135 issuing this instruction. 1136 ================== ====================================================== 1137 1138DPP8 Modifiers 1139-------------- 1140 1141.. _amdgpu_synid_dpp8_sel: 1142 1143dpp8_sel 1144~~~~~~~~ 1145 1146Selects which lanes to pull data from, within a group of 8 lanes. This is a mandatory modifier. 1147There is no default value. 1148 1149The *dpp8_sel* modifier must specify exactly 8 values. 1150The first value selects which lane to read from to supply data into lane 0. 1151The second value controls lane 1 and so on. 1152 1153Each value may be specified as either 1154an :ref:`integer number<amdgpu_synid_integer_number>` or 1155an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 1156 1157 =============================================================== =========================== 1158 Syntax Description 1159 =============================================================== =========================== 1160 dpp8:[{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7},{0..7}] Select lanes to read from. 1161 =============================================================== =========================== 1162 1163Examples: 1164 1165.. parsed-literal:: 1166 1167 dpp8:[7,6,5,4,3,2,1,0] 1168 dpp8:[0,1,0,1,0,1,0,1] 1169 1170.. _amdgpu_synid_fi8: 1171 1172fi 1173~~ 1174 1175Controls interaction with inactive lanes for *dpp8* instructions. The default value is zero. 1176 1177Note: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero. 1178 1179 ==================================== ===================================================== 1180 Syntax Description 1181 ==================================== ===================================================== 1182 fi:0 Fetch zero when accessing data from inactive lanes. 1183 fi:1 Fetch pre-existing values from inactive lanes. 1184 ==================================== ===================================================== 1185 1186Note: numeric values may be specified as either 1187:ref:`integer numbers<amdgpu_synid_integer_number>` or 1188:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1189 1190DPP Modifiers 1191------------- 1192 1193.. _amdgpu_synid_dpp_ctrl: 1194 1195dpp_ctrl 1196~~~~~~~~ 1197 1198Specifies how data is shared between threads. This is a mandatory modifier. 1199There is no default value. 1200 1201Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1202 1203 ======================================== ======================================================== 1204 Syntax Description 1205 ======================================== ======================================================== 1206 quad_perm:[{0..3},{0..3},{0..3},{0..3}] Full permute of 4 threads. 1207 row_mirror Mirror threads within row. 1208 row_half_mirror Mirror threads within 1/2 row (8 threads). 1209 row_bcast:15 Broadcast the 15th thread of each row to the next row. 1210 row_bcast:31 Broadcast thread 31 to rows 2 and 3. 1211 wave_shl:1 Wavefront left shift by 1 thread. 1212 wave_rol:1 Wavefront left rotate by 1 thread. 1213 wave_shr:1 Wavefront right shift by 1 thread. 1214 wave_ror:1 Wavefront right rotate by 1 thread. 1215 row_shl:{1..15} Row shift left by 1-15 threads. 1216 row_shr:{1..15} Row shift right by 1-15 threads. 1217 row_ror:{1..15} Row rotate right by 1-15 threads. 1218 ======================================== ======================================================== 1219 1220Note: numeric values may be specified as either 1221:ref:`integer numbers<amdgpu_synid_integer_number>` or 1222:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1223 1224Examples: 1225 1226.. parsed-literal:: 1227 1228 quad_perm:[0, 1, 2, 3] 1229 row_shl:3 1230 1231.. _amdgpu_synid_dpp16_ctrl: 1232 1233dpp16_ctrl 1234~~~~~~~~~~ 1235 1236Specifies how data is shared between threads. This is a mandatory modifier. 1237There is no default value. 1238 1239Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1240(There are only two rows in *wave32* mode.) 1241 1242 ======================================== ======================================================= 1243 Syntax Description 1244 ======================================== ======================================================= 1245 quad_perm:[{0..3},{0..3},{0..3},{0..3}] Full permute of 4 threads. 1246 row_mirror Mirror threads within row. 1247 row_half_mirror Mirror threads within 1/2 row (8 threads). 1248 row_share:{0..15} Share the value from the specified lane with other 1249 lanes in the row. 1250 row_xmask:{0..15} Fetch from XOR(<current lane id>,<specified lane id>). 1251 row_shl:{1..15} Row shift left by 1-15 threads. 1252 row_shr:{1..15} Row shift right by 1-15 threads. 1253 row_ror:{1..15} Row rotate right by 1-15 threads. 1254 ======================================== ======================================================= 1255 1256Note: numeric values may be specified as either 1257:ref:`integer numbers<amdgpu_synid_integer_number>` or 1258:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1259 1260Examples: 1261 1262.. parsed-literal:: 1263 1264 quad_perm:[0, 1, 2, 3] 1265 row_shl:3 1266 1267.. _amdgpu_synid_dpp32_ctrl: 1268 1269dpp32_ctrl 1270~~~~~~~~~~ 1271 1272Specifies how data is shared between threads. This is a mandatory modifier. 1273There is no default value. 1274 1275Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1276 1277 ======================================== ========================================================= 1278 Syntax Description 1279 ======================================== ========================================================= 1280 quad_perm:[{0..3},{0..3},{0..3},{0..3}] Full permute of 4 threads. 1281 row_mirror Mirror threads within row. 1282 row_half_mirror Mirror threads within 1/2 row (8 threads). 1283 row_bcast:15 Broadcast the 15th thread of each row to the next row. 1284 row_bcast:31 Broadcast thread 31 to rows 2 and 3. 1285 wave_shl:1 Wavefront left shift by 1 thread. 1286 wave_rol:1 Wavefront left rotate by 1 thread. 1287 wave_shr:1 Wavefront right shift by 1 thread. 1288 wave_ror:1 Wavefront right rotate by 1 thread. 1289 row_shl:{1..15} Row shift left by 1-15 threads. 1290 row_shr:{1..15} Row shift right by 1-15 threads. 1291 row_ror:{1..15} Row rotate right by 1-15 threads. 1292 row_newbcast:{1..15} Broadcast a thread within a row to the whole row. 1293 ======================================== ========================================================= 1294 1295Note: numeric values may be specified as either 1296:ref:`integer numbers<amdgpu_synid_integer_number>` or 1297:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1298 1299Examples: 1300 1301.. parsed-literal:: 1302 1303 quad_perm:[0, 1, 2, 3] 1304 row_shl:3 1305 1306 1307.. _amdgpu_synid_dpp64_ctrl: 1308 1309dpp64_ctrl 1310~~~~~~~~~~ 1311 1312Specifies how data is shared between threads. This is a mandatory modifier. 1313There is no default value. 1314 1315Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1316 1317 ======================================== ================================================== 1318 Syntax Description 1319 ======================================== ================================================== 1320 row_newbcast:{1..15} Broadcast a thread within a row to the whole row. 1321 ======================================== ================================================== 1322 1323Note: numeric values may be specified as either 1324:ref:`integer numbers<amdgpu_synid_integer_number>` or 1325:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1326 1327Examples: 1328 1329.. parsed-literal:: 1330 1331 row_newbcast:3 1332 1333 1334.. _amdgpu_synid_row_mask: 1335 1336row_mask 1337~~~~~~~~ 1338 1339Controls which rows are enabled for data sharing. By default, all rows are enabled. 1340 1341Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1342(There are only two rows in *wave32* mode.) 1343 1344 ================= ==================================================================== 1345 Syntax Description 1346 ================= ==================================================================== 1347 row_mask:{0..15} Specifies a *row mask* as a positive 1348 :ref:`integer number <amdgpu_synid_integer_number>` 1349 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 1350 1351 Each of the 4 bits in the mask controls one row 1352 (0 - disabled, 1 - enabled). 1353 1354 In *wave32* mode, the values shall be limited to {0..7}. 1355 ================= ==================================================================== 1356 1357Examples: 1358 1359.. parsed-literal:: 1360 1361 row_mask:0xf 1362 row_mask:0b1010 1363 row_mask:x|y 1364 1365.. _amdgpu_synid_bank_mask: 1366 1367bank_mask 1368~~~~~~~~~ 1369 1370Controls which banks are enabled for data sharing. By default, all banks are enabled. 1371 1372Note: the lanes of a wavefront are organized in four *rows* and four *banks*. 1373(There are only two rows in *wave32* mode.) 1374 1375 ================== ==================================================================== 1376 Syntax Description 1377 ================== ==================================================================== 1378 bank_mask:{0..15} Specifies a *bank mask* as a positive 1379 :ref:`integer number <amdgpu_synid_integer_number>` 1380 or an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 1381 1382 Each of the 4 bits in the mask controls one bank 1383 (0 - disabled, 1 - enabled). 1384 ================== ==================================================================== 1385 1386Examples: 1387 1388.. parsed-literal:: 1389 1390 bank_mask:0x3 1391 bank_mask:0b0011 1392 bank_mask:x&y 1393 1394.. _amdgpu_synid_bound_ctrl: 1395 1396bound_ctrl 1397~~~~~~~~~~ 1398 1399Controls data sharing when accessing an invalid lane. By default, data sharing with 1400invalid lanes is disabled. 1401 1402 ======================================== ================================================ 1403 Syntax Description 1404 ======================================== ================================================ 1405 bound_ctrl:1 Enables data sharing with invalid lanes. 1406 1407 Accessing data from an invalid lane will 1408 return zero. 1409 ======================================== ================================================ 1410 1411.. WARNING:: For historical reasons, *bound_ctrl:0* has the same meaning as *bound_ctrl:1*. 1412 1413.. _amdgpu_synid_fi16: 1414 1415fi 1416~~ 1417 1418Controls interaction with *inactive* lanes for *dpp16* instructions. The default value is zero. 1419 1420Note: *inactive* lanes are those whose :ref:`exec<amdgpu_synid_exec>` mask bit is zero. 1421 1422 ======================================== ================================================== 1423 Syntax Description 1424 ======================================== ================================================== 1425 fi:0 Interaction with inactive lanes is controlled by 1426 :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`. 1427 1428 fi:1 Fetch pre-existing values from inactive lanes. 1429 ======================================== ================================================== 1430 1431Note: numeric values may be specified as either 1432:ref:`integer numbers<amdgpu_synid_integer_number>` or 1433:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1434 1435SDWA Modifiers 1436-------------- 1437 1438clamp 1439~~~~~ 1440 1441See a description :ref:`here<amdgpu_synid_clamp>`. 1442 1443omod 1444~~~~ 1445 1446See a description :ref:`here<amdgpu_synid_omod>`. 1447 1448.. _amdgpu_synid_dst_sel: 1449 1450dst_sel 1451~~~~~~~ 1452 1453Selects which bits in the destination are affected. By default, all bits are affected. 1454 1455 ======================================== ================================================ 1456 Syntax Description 1457 ======================================== ================================================ 1458 dst_sel:DWORD Use bits 31:0. 1459 dst_sel:BYTE_0 Use bits 7:0. 1460 dst_sel:BYTE_1 Use bits 15:8. 1461 dst_sel:BYTE_2 Use bits 23:16. 1462 dst_sel:BYTE_3 Use bits 31:24. 1463 dst_sel:WORD_0 Use bits 15:0. 1464 dst_sel:WORD_1 Use bits 31:16. 1465 ======================================== ================================================ 1466 1467.. _amdgpu_synid_dst_unused: 1468 1469dst_unused 1470~~~~~~~~~~ 1471 1472Controls what to do with the bits in the destination which are not selected 1473by :ref:`dst_sel<amdgpu_synid_dst_sel>`. 1474By default, unused bits are preserved. 1475 1476 ======================================== ================================================ 1477 Syntax Description 1478 ======================================== ================================================ 1479 dst_unused:UNUSED_PAD Pad with zeros. 1480 dst_unused:UNUSED_SEXT Sign-extend upper bits, zero lower bits. 1481 dst_unused:UNUSED_PRESERVE Preserve bits. 1482 ======================================== ================================================ 1483 1484.. _amdgpu_synid_src0_sel: 1485 1486src0_sel 1487~~~~~~~~ 1488 1489Controls which bits in the src0 are used. By default, all bits are used. 1490 1491 ======================================== ================================================ 1492 Syntax Description 1493 ======================================== ================================================ 1494 src0_sel:DWORD Use bits 31:0. 1495 src0_sel:BYTE_0 Use bits 7:0. 1496 src0_sel:BYTE_1 Use bits 15:8. 1497 src0_sel:BYTE_2 Use bits 23:16. 1498 src0_sel:BYTE_3 Use bits 31:24. 1499 src0_sel:WORD_0 Use bits 15:0. 1500 src0_sel:WORD_1 Use bits 31:16. 1501 ======================================== ================================================ 1502 1503.. _amdgpu_synid_src1_sel: 1504 1505src1_sel 1506~~~~~~~~ 1507 1508Controls which bits in the src1 are used. By default, all bits are used. 1509 1510 ======================================== ================================================ 1511 Syntax Description 1512 ======================================== ================================================ 1513 src1_sel:DWORD Use bits 31:0. 1514 src1_sel:BYTE_0 Use bits 7:0. 1515 src1_sel:BYTE_1 Use bits 15:8. 1516 src1_sel:BYTE_2 Use bits 23:16. 1517 src1_sel:BYTE_3 Use bits 31:24. 1518 src1_sel:WORD_0 Use bits 15:0. 1519 src1_sel:WORD_1 Use bits 31:16. 1520 ======================================== ================================================ 1521 1522.. _amdgpu_synid_sdwa_operand_modifiers: 1523 1524SDWA Operand Modifiers 1525---------------------- 1526 1527Operand modifiers are not used separately. They are applied to source operands. 1528 1529abs 1530~~~ 1531 1532See a description :ref:`here<amdgpu_synid_abs>`. 1533 1534neg 1535~~~ 1536 1537See a description :ref:`here<amdgpu_synid_neg>`. 1538 1539.. _amdgpu_synid_sext: 1540 1541sext 1542~~~~ 1543 1544Sign-extends the value of a (sub-dword) integer operand to fill all 32 bits. 1545 1546Valid for integer operands only. 1547 1548 ======================================== ================================================ 1549 Syntax Description 1550 ======================================== ================================================ 1551 sext(<operand>) Sign-extend operand value. 1552 ======================================== ================================================ 1553 1554Examples: 1555 1556.. parsed-literal:: 1557 1558 sext(v4) 1559 sext(v255) 1560 1561VOP3 Modifiers 1562-------------- 1563 1564.. _amdgpu_synid_vop3_op_sel: 1565 1566op_sel 1567~~~~~~ 1568 1569Selects the low [15:0] or high [31:16] operand bits for source and destination operands. 1570By default, low bits are used for all operands. 1571 1572The number of values specified with the op_sel modifier must match the number of instruction 1573operands (both source and destination). The first value controls src0, the second value controls src1 1574and so on, except that the last value controls destination. 1575The value 0 selects the low bits, while 1 selects the high bits. 1576 1577Note: op_sel modifier affects 16-bit operands only. For 32-bit operands, the value specified 1578by op_sel must be 0. 1579 1580 ======================================== ============================================================ 1581 Syntax Description 1582 ======================================== ============================================================ 1583 op_sel:[{0..1},{0..1}] Select operand bits for instructions with 1 source operand. 1584 op_sel:[{0..1},{0..1},{0..1}] Select operand bits for instructions with 2 source operands. 1585 op_sel:[{0..1},{0..1},{0..1},{0..1}] Select operand bits for instructions with 3 source operands. 1586 ======================================== ============================================================ 1587 1588Note: numeric values may be specified as either 1589:ref:`integer numbers<amdgpu_synid_integer_number>` or 1590:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1591 1592Examples: 1593 1594.. parsed-literal:: 1595 1596 op_sel:[0,0] 1597 op_sel:[0,1] 1598 1599.. _amdgpu_synid_dpp_op_sel: 1600 1601dpp_op_sel 1602~~~~~~~~~~ 1603 1604This is a special version of *op_sel* used for *permlane* opcodes to specify 1605dpp-like mode bits - :ref:`fi<amdgpu_synid_fi16>` and 1606:ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`. 1607 1608 ======================================== ================================================================= 1609 Syntax Description 1610 ======================================== ================================================================= 1611 op_sel:[{0..1},{0..1}] The first bit specifies :ref:`fi<amdgpu_synid_fi16>`, the second 1612 bit specifies :ref:`bound_ctrl<amdgpu_synid_bound_ctrl>`. 1613 ======================================== ================================================================= 1614 1615Note: numeric values may be specified as either 1616:ref:`integer numbers<amdgpu_synid_integer_number>` or 1617:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1618 1619Examples: 1620 1621.. parsed-literal:: 1622 1623 op_sel:[0,0] 1624 1625.. _amdgpu_synid_clamp: 1626 1627clamp 1628~~~~~ 1629 1630Clamp meaning depends on instruction. 1631 1632For *v_cmp* instructions, clamp modifier indicates that the compare signals 1633if a floating-point exception occurs. By default, signaling is disabled. 1634 1635For integer operations, clamp modifier indicates that the result must be clamped 1636to the largest and smallest representable value. By default, there is no clamping. 1637 1638For floating-point operations, clamp modifier indicates that the result must be clamped 1639to the range [0.0, 1.0]. By default, there is no clamping. 1640 1641Note: clamp modifier is applied after :ref:`output modifiers<amdgpu_synid_omod>` (if any). 1642 1643 ======================================== ================================================ 1644 Syntax Description 1645 ======================================== ================================================ 1646 clamp Enables clamping (or signaling). 1647 ======================================== ================================================ 1648 1649.. _amdgpu_synid_omod: 1650 1651omod 1652~~~~ 1653 1654Specifies if an output modifier must be applied to the result. 1655It is assumed that the result is a floating-point number. 1656 1657By default, no output modifiers are applied. 1658 1659Note: output modifiers are applied before :ref:`clamping<amdgpu_synid_clamp>` (if any). 1660 1661 ======================================== ================================================ 1662 Syntax Description 1663 ======================================== ================================================ 1664 mul:2 Multiply the result by 2. 1665 mul:4 Multiply the result by 4. 1666 div:2 Multiply the result by 0.5. 1667 ======================================== ================================================ 1668 1669Note: numeric values may be specified as either 1670:ref:`integer numbers<amdgpu_synid_integer_number>` or 1671:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1672 1673Examples: 1674 1675.. parsed-literal:: 1676 1677 mul:2 1678 mul:x // x must be equal to 2 or 4 1679 1680.. _amdgpu_synid_vop3_operand_modifiers: 1681 1682VOP3 Operand Modifiers 1683---------------------- 1684 1685Operand modifiers are not used separately. They are applied to source operands. 1686 1687.. _amdgpu_synid_abs: 1688 1689abs 1690~~~ 1691 1692Computes the absolute value of its operand. Must be applied before :ref:`neg<amdgpu_synid_neg>` 1693(if any). Valid for floating-point operands only. 1694 1695 ======================================== ==================================================== 1696 Syntax Description 1697 ======================================== ==================================================== 1698 abs(<operand>) Get the absolute value of a floating-point operand. 1699 \|<operand>| The same as above (an SP3 syntax). 1700 ======================================== ==================================================== 1701 1702Note: avoid using SP3 syntax with operands specified as expressions because the trailing '|' 1703may be misinterpreted. Such operands should be enclosed into additional parentheses, as shown 1704in examples below. 1705 1706Examples: 1707 1708.. parsed-literal:: 1709 1710 abs(v36) 1711 \|v36| 1712 abs(x|y) // ok 1713 \|(x|y)| // additional parentheses are required 1714 1715.. _amdgpu_synid_neg: 1716 1717neg 1718~~~ 1719 1720Computes the negative value of its operand. Must be applied after :ref:`abs<amdgpu_synid_abs>` 1721(if any). Valid for floating-point operands only. 1722 1723 ================== ==================================================== 1724 Syntax Description 1725 ================== ==================================================== 1726 neg(<operand>) Get the negative value of a floating-point operand. 1727 An optional :ref:`abs<amdgpu_synid_abs>` modifier 1728 may be applied to the operand before negation. 1729 -<operand> The same as above (an SP3 syntax). 1730 ================== ==================================================== 1731 1732Note: SP3 syntax is supported with limitations because of a potential ambiguity. 1733Currently, it is allowed in the following cases: 1734 1735* Before a register. 1736* Before an :ref:`abs<amdgpu_synid_abs>` modifier. 1737* Before an SP3 :ref:`abs<amdgpu_synid_abs>` modifier. 1738 1739In all other cases, "-" is handled as a part of an expression that follows the sign. 1740 1741Examples: 1742 1743.. parsed-literal:: 1744 1745 // Operands with negate modifiers 1746 neg(v[0]) 1747 neg(1.0) 1748 neg(abs(v0)) 1749 -v5 1750 -abs(v5) 1751 -\|v5| 1752 1753 // Expressions where "-" has a different meaning 1754 -1 1755 -x+y 1756 1757VOP3P Modifiers 1758--------------- 1759 1760This section describes modifiers of *regular* VOP3P instructions. 1761 1762*v_mad_mix\** and *v_fma_mix\** 1763instructions use these modifiers :ref:`in a special manner<amdgpu_synid_mad_mix>`. 1764 1765.. _amdgpu_synid_op_sel: 1766 1767op_sel 1768~~~~~~ 1769 1770Selects the low [15:0] or high [31:16] operand bits as input to the operation, 1771which results in the lower-half of the destination. 1772By default, low 16 bits are used for all operands. 1773 1774The number of values specified by the *op_sel* modifier must match the number of source 1775operands. The first value controls src0, the second value controls src1 and so on. 1776 1777The value 0 selects the low bits, while 1 selects the high bits. 1778 1779 ================================= ============================================================= 1780 Syntax Description 1781 ================================= ============================================================= 1782 op_sel:[{0..1}] Select operand bits for instructions with 1 source operand. 1783 op_sel:[{0..1},{0..1}] Select operand bits for instructions with 2 source operands. 1784 op_sel:[{0..1},{0..1},{0..1}] Select operand bits for instructions with 3 source operands. 1785 ================================= ============================================================= 1786 1787Note: numeric values may be specified as either 1788:ref:`integer numbers<amdgpu_synid_integer_number>` or 1789:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1790 1791Examples: 1792 1793.. parsed-literal:: 1794 1795 op_sel:[0,0] 1796 op_sel:[0,1,0] 1797 1798.. _amdgpu_synid_op_sel_hi: 1799 1800op_sel_hi 1801~~~~~~~~~ 1802 1803Selects the low [15:0] or high [31:16] operand bits as input to the operation, 1804which results in the upper-half of the destination. 1805By default, high 16 bits are used for all operands. 1806 1807The number of values specified by the *op_sel_hi* modifier must match the number of source 1808operands. The first value controls src0, the second value controls src1 and so on. 1809 1810The value 0 selects the low bits, while 1 selects the high bits. 1811 1812 =================================== ============================================================= 1813 Syntax Description 1814 =================================== ============================================================= 1815 op_sel_hi:[{0..1}] Select operand bits for instructions with 1 source operand. 1816 op_sel_hi:[{0..1},{0..1}] Select operand bits for instructions with 2 source operands. 1817 op_sel_hi:[{0..1},{0..1},{0..1}] Select operand bits for instructions with 3 source operands. 1818 =================================== ============================================================= 1819 1820Note: numeric values may be specified as either 1821:ref:`integer numbers<amdgpu_synid_integer_number>` or 1822:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1823 1824Examples: 1825 1826.. parsed-literal:: 1827 1828 op_sel_hi:[0,0] 1829 op_sel_hi:[0,0,1] 1830 1831.. _amdgpu_synid_neg_lo: 1832 1833neg_lo 1834~~~~~~ 1835 1836Specifies whether to change the sign of operand values selected by 1837:ref:`op_sel<amdgpu_synid_op_sel>`. These values are then used 1838as input to the operation, which results in the upper-half of the destination. 1839 1840The number of values specified by this modifier must match the number of source 1841operands. The first value controls src0, the second value controls src1 and so on. 1842 1843The value 0 indicates that the corresponding operand value is used unmodified, 1844the value 1 indicates that the negative value of the operand must be used. 1845 1846By default, operand values are used unmodified. 1847 1848This modifier is valid for floating-point operands only. 1849 1850 ================================ ================================================================== 1851 Syntax Description 1852 ================================ ================================================================== 1853 neg_lo:[{0..1}] Select affected operands for instructions with 1 source operand. 1854 neg_lo:[{0..1},{0..1}] Select affected operands for instructions with 2 source operands. 1855 neg_lo:[{0..1},{0..1},{0..1}] Select affected operands for instructions with 3 source operands. 1856 ================================ ================================================================== 1857 1858Note: numeric values may be specified as either 1859:ref:`integer numbers<amdgpu_synid_integer_number>` or 1860:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1861 1862Examples: 1863 1864.. parsed-literal:: 1865 1866 neg_lo:[0] 1867 neg_lo:[0,1] 1868 1869.. _amdgpu_synid_neg_hi: 1870 1871neg_hi 1872~~~~~~ 1873 1874Specifies whether to change sign of operand values selected by 1875:ref:`op_sel_hi<amdgpu_synid_op_sel_hi>`. These values are then used 1876as input to the operation, which results in the upper-half of the destination. 1877 1878The number of values specified by this modifier must match the number of source 1879operands. The first value controls src0, the second value controls src1 and so on. 1880 1881The value 0 indicates that the corresponding operand value is used unmodified, 1882the value 1 indicates that the negative value of the operand must be used. 1883 1884By default, operand values are used unmodified. 1885 1886This modifier is valid for floating-point operands only. 1887 1888 =============================== ================================================================== 1889 Syntax Description 1890 =============================== ================================================================== 1891 neg_hi:[{0..1}] Select affected operands for instructions with 1 source operand. 1892 neg_hi:[{0..1},{0..1}] Select affected operands for instructions with 2 source operands. 1893 neg_hi:[{0..1},{0..1},{0..1}] Select affected operands for instructions with 3 source operands. 1894 =============================== ================================================================== 1895 1896Note: numeric values may be specified as either 1897:ref:`integer numbers<amdgpu_synid_integer_number>` or 1898:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1899 1900Examples: 1901 1902.. parsed-literal:: 1903 1904 neg_hi:[1,0] 1905 neg_hi:[0,1,1] 1906 1907clamp 1908~~~~~ 1909 1910See a description :ref:`here<amdgpu_synid_clamp>`. 1911 1912.. _amdgpu_synid_mad_mix: 1913 1914VOP3P MAD_MIX/FMA_MIX Modifiers 1915------------------------------- 1916 1917*v_mad_mix\** and *v_fma_mix\** 1918instructions use *op_sel* and *op_sel_hi* modifiers 1919in a manner different from *regular* VOP3P instructions. 1920 1921See a description below. 1922 1923.. _amdgpu_synid_mad_mix_op_sel: 1924 1925m_op_sel 1926~~~~~~~~ 1927 1928This operand has meaning only for 16-bit source operands, as indicated by 1929:ref:`m_op_sel_hi<amdgpu_synid_mad_mix_op_sel_hi>`. 1930It specifies to select either the low [15:0] or high [31:16] operand bits 1931as input to the operation. 1932 1933The number of values specified by the *op_sel* modifier must match the number of source 1934operands. The first value controls src0, the second value controls src1 and so on. 1935 1936The value 0 indicates the low bits, the value 1 indicates the high 16 bits. 1937 1938By default, low bits are used for all operands. 1939 1940 =============================== =================================================== 1941 Syntax Description 1942 =============================== =================================================== 1943 op_sel:[{0..1},{0..1},{0..1}] Select the location of each 16-bit source operand. 1944 =============================== =================================================== 1945 1946Note: numeric values may be specified as either 1947:ref:`integer numbers<amdgpu_synid_integer_number>` or 1948:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1949 1950Examples: 1951 1952.. parsed-literal:: 1953 1954 op_sel:[0,1] 1955 1956.. _amdgpu_synid_mad_mix_op_sel_hi: 1957 1958m_op_sel_hi 1959~~~~~~~~~~~ 1960 1961Selects the size of source operands: either 32 bits or 16 bits. 1962By default, 32 bits are used for all source operands. 1963 1964The number of values specified by the *op_sel_hi* modifier must match the number of source 1965operands. The first value controls src0, the second value controls src1 and so on. 1966 1967The value 0 indicates 32 bits, the value 1 indicates 16 bits. 1968 1969The location of 16 bits in the operand may be specified by 1970:ref:`m_op_sel<amdgpu_synid_mad_mix_op_sel>`. 1971 1972 ======================================== ======================================== 1973 Syntax Description 1974 ======================================== ======================================== 1975 op_sel_hi:[{0..1},{0..1},{0..1}] Select the size of each source operand. 1976 ======================================== ======================================== 1977 1978Note: numeric values may be specified as either 1979:ref:`integer numbers<amdgpu_synid_integer_number>` or 1980:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 1981 1982Examples: 1983 1984.. parsed-literal:: 1985 1986 op_sel_hi:[1,1,1] 1987 1988abs 1989~~~ 1990 1991See a description :ref:`here<amdgpu_synid_abs>`. 1992 1993neg 1994~~~ 1995 1996See a description :ref:`here<amdgpu_synid_neg>`. 1997 1998clamp 1999~~~~~ 2000 2001See a description :ref:`here<amdgpu_synid_clamp>`. 2002 2003VOP3P MFMA Modifiers 2004-------------------- 2005 2006.. _amdgpu_synid_cbsz: 2007 2008cbsz 2009~~~~ 2010 2011Specifies a broadcast mode. 2012 2013 =============================== ================================================================== 2014 Syntax Description 2015 =============================== ================================================================== 2016 cbsz:[{0..7}] A broadcast mode. 2017 =============================== ================================================================== 2018 2019Note: numeric value may be specified as either 2020an :ref:`integer number<amdgpu_synid_integer_number>` or 2021an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 2022 2023.. _amdgpu_synid_abid: 2024 2025abid 2026~~~~ 2027 2028Specifies matrix A group select. 2029 2030 =============================== ================================================================== 2031 Syntax Description 2032 =============================== ================================================================== 2033 abid:[{0..15}] Matrix A group select id. 2034 =============================== ================================================================== 2035 2036Note: numeric value may be specified as either 2037an :ref:`integer number<amdgpu_synid_integer_number>` or 2038an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 2039 2040.. _amdgpu_synid_blgp: 2041 2042blgp 2043~~~~ 2044 2045Specifies matrix B lane group pattern. 2046 2047 =============================== ================================================================== 2048 Syntax Description 2049 =============================== ================================================================== 2050 blgp:[{0..7}] Matrix B lane group pattern. 2051 =============================== ================================================================== 2052 2053Note: numeric value may be specified as either 2054an :ref:`integer number<amdgpu_synid_integer_number>` or 2055an :ref:`absolute expression<amdgpu_synid_absolute_expression>`. 2056 2057.. _amdgpu_synid_mfma_neg: 2058 2059neg 2060~~~ 2061 2062Indicates operands that must be negated before the operation. 2063The number of values specified by this modifier must match the number of source 2064operands. The first value controls src0, the second value controls src1 and so on. 2065 2066The value 0 indicates that the corresponding operand value is used unmodified, 2067the value 1 indicates that the operand value must be negated before the operation. 2068 2069By default, operand values are used unmodified. 2070 2071 =============================== ================================================================== 2072 Syntax Description 2073 =============================== ================================================================== 2074 neg:[{0..1},{0..1},{0..1}] Select operands which must be negated before the operation. 2075 =============================== ================================================================== 2076 2077Note: numeric values may be specified as either 2078:ref:`integer numbers<amdgpu_synid_integer_number>` or 2079:ref:`absolute expressions<amdgpu_synid_absolute_expression>`. 2080 2081Examples: 2082 2083.. parsed-literal:: 2084 2085 neg:[0,1,1] 2086