Changes between Version 16 and Version 17 of GcnInstrsMubuf
- Timestamp:
- 11/28/17 19:00:31 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsMubuf
v16 v17 543 543 <tr> 544 544 <th>Opcode</th> 545 <th>GCN 1.2</th> 546 <th>GCN 1.4</th> 545 547 <th>Mnemonic</th> 546 548 </tr> … … 549 551 <tr> 550 552 <td>0 (0x0)</td> 553 <td>✓</td> 554 <td>✓</td> 551 555 <td>BUFFER_LOAD_FORMAT_X</td> 552 556 </tr> 553 557 <tr> 554 558 <td>1 (0x1)</td> 559 <td>✓</td> 560 <td>✓</td> 555 561 <td>BUFFER_LOAD_FORMAT_XY</td> 556 562 </tr> 557 563 <tr> 558 564 <td>2 (0x2)</td> 565 <td>✓</td> 566 <td>✓</td> 559 567 <td>BUFFER_LOAD_FORMAT_XYZ</td> 560 568 </tr> 561 569 <tr> 562 570 <td>3 (0x3)</td> 571 <td>✓</td> 572 <td>✓</td> 563 573 <td>BUFFER_LOAD_FORMAT_XYZW</td> 564 574 </tr> 565 575 <tr> 566 576 <td>4 (0x4)</td> 577 <td>✓</td> 578 <td>✓</td> 567 579 <td>BUFFER_STORE_FORMAT_X</td> 568 580 </tr> 569 581 <tr> 570 582 <td>5 (0x5)</td> 583 <td>✓</td> 584 <td>✓</td> 571 585 <td>BUFFER_STORE_FORMAT_XY</td> 572 586 </tr> 573 587 <tr> 574 588 <td>6 (0x6)</td> 589 <td>✓</td> 590 <td>✓</td> 575 591 <td>BUFFER_STORE_FORMAT_XYZ</td> 576 592 </tr> 577 593 <tr> 578 594 <td>7 (0x7)</td> 595 <td>✓</td> 596 <td>✓</td> 579 597 <td>BUFFER_STORE_FORMAT_XYZW</td> 580 598 </tr> 581 599 <tr> 582 600 <td>8 (0x8)</td> 601 <td>✓</td> 602 <td>✓</td> 583 603 <td>BUFFER_LOAD_FORMAT_D16_X</td> 584 604 </tr> 585 605 <tr> 586 606 <td>9 (0x9)</td> 607 <td>✓</td> 608 <td>✓</td> 587 609 <td>BUFFER_LOAD_FORMAT_D16_XY</td> 588 610 </tr> 589 611 <tr> 590 612 <td>10 (0xa)</td> 613 <td>✓</td> 614 <td>✓</td> 591 615 <td>BUFFER_LOAD_FORMAT_D16_XYZ</td> 592 616 </tr> 593 617 <tr> 594 618 <td>11 (0xb)</td> 619 <td>✓</td> 620 <td>✓</td> 595 621 <td>BUFFER_LOAD_FORMAT_D16_XYZW</td> 596 622 </tr> 597 623 <tr> 598 624 <td>12 (0xc)</td> 625 <td>✓</td> 626 <td>✓</td> 599 627 <td>BUFFER_STORE_FORMAT_D16_X</td> 600 628 </tr> 601 629 <tr> 602 630 <td>13 (0xd)</td> 631 <td>✓</td> 632 <td>✓</td> 603 633 <td>BUFFER_STORE_FORMAT_D16_XY</td> 604 634 </tr> 605 635 <tr> 606 636 <td>14 (0xe)</td> 637 <td>✓</td> 638 <td>✓</td> 607 639 <td>BUFFER_STORE_FORMAT_D16_XYZ</td> 608 640 </tr> 609 641 <tr> 610 642 <td>15 (0xf)</td> 643 <td>✓</td> 644 <td>✓</td> 611 645 <td>BUFFER_STORE_FORMAT_D16_XYZW</td> 612 646 </tr> 613 647 <tr> 614 648 <td>16 (0x10)</td> 649 <td>✓</td> 650 <td>✓</td> 615 651 <td>BUFFER_LOAD_UBYTE</td> 616 652 </tr> 617 653 <tr> 618 654 <td>17 (0x11)</td> 655 <td>✓</td> 656 <td>✓</td> 619 657 <td>BUFFER_LOAD_SBYTE</td> 620 658 </tr> 621 659 <tr> 622 660 <td>18 (0x12)</td> 661 <td>✓</td> 662 <td>✓</td> 623 663 <td>BUFFER_LOAD_USHORT</td> 624 664 </tr> 625 665 <tr> 626 666 <td>19 (0x13)</td> 667 <td>✓</td> 668 <td>✓</td> 627 669 <td>BUFFER_LOAD_SSHORT</td> 628 670 </tr> 629 671 <tr> 630 672 <td>20 (0x14)</td> 673 <td>✓</td> 674 <td>✓</td> 631 675 <td>BUFFER_LOAD_DWORD</td> 632 676 </tr> 633 677 <tr> 634 678 <td>21 (0x15)</td> 679 <td>✓</td> 680 <td>✓</td> 635 681 <td>BUFFER_LOAD_DWORDX2</td> 636 682 </tr> 637 683 <tr> 638 684 <td>22 (0x16)</td> 685 <td>✓</td> 686 <td>✓</td> 639 687 <td>BUFFER_LOAD_DWORDX3</td> 640 688 </tr> 641 689 <tr> 642 690 <td>23 (0x17)</td> 691 <td>✓</td> 692 <td>✓</td> 643 693 <td>BUFFER_LOAD_DWORDX4</td> 644 694 </tr> 645 695 <tr> 646 696 <td>24 (0x18)</td> 697 <td>✓</td> 698 <td>✓</td> 647 699 <td>BUFFER_STORE_BYTE</td> 648 700 </tr> 649 701 <tr> 702 <td>25 (0x19)</td> 703 <td></td> 704 <td>✓</td> 705 <td>BUFFER_STORE_BYTE_D16</td> 706 </tr> 707 <tr> 650 708 <td>26 (0x1a)</td> 709 <td>✓</td> 710 <td>✓</td> 651 711 <td>BUFFER_STORE_SHORT</td> 652 712 </tr> 653 713 <tr> 714 <td>27 (0x1b)</td> 715 <td></td> 716 <td>✓</td> 717 <td>BUFFER_STORE_SHORT_D16</td> 718 </tr> 719 <tr> 654 720 <td>28 (0x1c)</td> 721 <td>✓</td> 722 <td>✓</td> 655 723 <td>BUFFER_STORE_DWORD</td> 656 724 </tr> 657 725 <tr> 658 726 <td>29 (0x1d)</td> 727 <td>✓</td> 728 <td>✓</td> 659 729 <td>BUFFER_STORE_DWORDX2</td> 660 730 </tr> 661 731 <tr> 662 732 <td>30 (0x1e)</td> 733 <td>✓</td> 734 <td>✓</td> 663 735 <td>BUFFER_STORE_DWORDX3</td> 664 736 </tr> 665 737 <tr> 666 738 <td>31 (0x1f)</td> 739 <td>✓</td> 740 <td>✓</td> 667 741 <td>BUFFER_STORE_DWORDX4</td> 668 742 </tr> 669 743 <tr> 744 <td>32 (0x20)</td> 745 <td></td> 746 <td>✓</td> 747 <td>BUFFER_LOAD_UBYTE_D16</td> 748 </tr> 749 <tr> 750 <td>33 (0x21)</td> 751 <td></td> 752 <td>✓</td> 753 <td>BUFFER_LOAD_UBYTE_D16_HI</td> 754 </tr> 755 <tr> 756 <td>34 (0x22)</td> 757 <td></td> 758 <td>✓</td> 759 <td>BUFFER_LOAD_SBYTE_D16</td> 760 </tr> 761 <tr> 762 <td>35 (0x23)</td> 763 <td></td> 764 <td>✓</td> 765 <td>BUFFER_LOAD_SBYTE_D16_HI</td> 766 </tr> 767 <tr> 768 <td>36 (0x24)</td> 769 <td></td> 770 <td>✓</td> 771 <td>BUFFER_LOAD_SHORT_D16</td> 772 </tr> 773 <tr> 774 <td>37 (0x25)</td> 775 <td></td> 776 <td>✓</td> 777 <td>BUFFER_LOAD_SHORT_D16_HI</td> 778 </tr> 779 <tr> 670 780 <td>38 (0x26)</td> 781 <td></td> 782 <td>✓</td> 671 783 <td>BUFFER_LOAD_FORMAT_D16_HI_X</td> 672 784 </tr> 673 785 <tr> 674 786 <td>39 (0x27)</td> 787 <td></td> 788 <td>✓</td> 675 789 <td>BUFFER_STORE_FORMAT_D16_HI_X</td> 676 790 </tr> 677 791 <tr> 678 792 <td>61 (0x3d)</td> 793 <td>✓</td> 794 <td>✓</td> 679 795 <td>BUFFER_STORE_LDS_DWORD</td> 680 796 </tr> 681 797 <tr> 682 798 <td>62 (0x3e)</td> 799 <td>✓</td> 800 <td>✓</td> 683 801 <td>BUFFER_WBINVL1</td> 684 802 </tr> 685 803 <tr> 686 804 <td>63 (0x3f)</td> 805 <td>✓</td> 806 <td>✓</td> 687 807 <td>BUFFER_WBINVL1_VOL</td> 688 808 </tr> 689 809 <tr> 690 810 <td>64 (0x40)</td> 811 <td>✓</td> 812 <td>✓</td> 691 813 <td>BUFFER_ATOMIC_SWAP</td> 692 814 </tr> 693 815 <tr> 694 816 <td>65 (0x41)</td> 817 <td>✓</td> 818 <td>✓</td> 695 819 <td>BUFFER_ATOMIC_CMPSWAP</td> 696 820 </tr> 697 821 <tr> 698 822 <td>66 (0x42)</td> 823 <td>✓</td> 824 <td>✓</td> 699 825 <td>BUFFER_ATOMIC_ADD</td> 700 826 </tr> 701 827 <tr> 702 828 <td>67 (0x43)</td> 829 <td>✓</td> 830 <td>✓</td> 703 831 <td>BUFFER_ATOMIC_SUB</td> 704 832 </tr> 705 833 <tr> 706 834 <td>68 (0x44)</td> 835 <td>✓</td> 836 <td>✓</td> 707 837 <td>BUFFER_ATOMIC_SMIN</td> 708 838 </tr> 709 839 <tr> 710 840 <td>69 (0x45)</td> 841 <td>✓</td> 842 <td>✓</td> 711 843 <td>BUFFER_ATOMIC_UMIN</td> 712 844 </tr> 713 845 <tr> 714 846 <td>70 (0x46)</td> 847 <td>✓</td> 848 <td>✓</td> 715 849 <td>BUFFER_ATOMIC_SMAX</td> 716 850 </tr> 717 851 <tr> 718 852 <td>71 (0x47)</td> 853 <td>✓</td> 854 <td>✓</td> 719 855 <td>BUFFER_ATOMIC_UMAX</td> 720 856 </tr> 721 857 <tr> 722 858 <td>72 (0x48)</td> 859 <td>✓</td> 860 <td>✓</td> 723 861 <td>BUFFER_ATOMIC_AND</td> 724 862 </tr> 725 863 <tr> 726 864 <td>73 (0x49)</td> 865 <td>✓</td> 866 <td>✓</td> 727 867 <td>BUFFER_ATOMIC_OR</td> 728 868 </tr> 729 869 <tr> 730 870 <td>74 (0x4a)</td> 871 <td>✓</td> 872 <td>✓</td> 731 873 <td>BUFFER_ATOMIC_XOR</td> 732 874 </tr> 733 875 <tr> 734 876 <td>75 (0x4b)</td> 877 <td>✓</td> 878 <td>✓</td> 735 879 <td>BUFFER_ATOMIC_INC</td> 736 880 </tr> 737 881 <tr> 738 882 <td>76 (0x4c)</td> 883 <td>✓</td> 884 <td>✓</td> 739 885 <td>BUFFER_ATOMIC_DEC</td> 740 886 </tr> 741 887 <tr> 742 888 <td>96 (0x60)</td> 889 <td>✓</td> 890 <td>✓</td> 743 891 <td>BUFFER_ATOMIC_SWAP_X2</td> 744 892 </tr> 745 893 <tr> 746 894 <td>97 (0x61)</td> 895 <td>✓</td> 896 <td>✓</td> 747 897 <td>BUFFER_ATOMIC_CMPSWAP_X2</td> 748 898 </tr> 749 899 <tr> 750 900 <td>98 (0x62)</td> 901 <td>✓</td> 902 <td>✓</td> 751 903 <td>BUFFER_ATOMIC_ADD_X2</td> 752 904 </tr> 753 905 <tr> 754 906 <td>99 (0x63)</td> 907 <td>✓</td> 908 <td>✓</td> 755 909 <td>BUFFER_ATOMIC_SUB_X2</td> 756 910 </tr> 757 911 <tr> 758 912 <td>100 (0x64)</td> 913 <td>✓</td> 914 <td>✓</td> 759 915 <td>BUFFER_ATOMIC_SMIN_X2</td> 760 916 </tr> 761 917 <tr> 762 918 <td>101 (0x65)</td> 919 <td>✓</td> 920 <td>✓</td> 763 921 <td>BUFFER_ATOMIC_UMIN_X2</td> 764 922 </tr> 765 923 <tr> 766 924 <td>102 (0x66)</td> 925 <td>✓</td> 926 <td>✓</td> 767 927 <td>BUFFER_ATOMIC_SMAX_X2</td> 768 928 </tr> 769 929 <tr> 770 930 <td>103 (0x67)</td> 931 <td>✓</td> 932 <td>✓</td> 771 933 <td>BUFFER_ATOMIC_UMAX_X2</td> 772 934 </tr> 773 935 <tr> 774 936 <td>104 (0x68)</td> 937 <td>✓</td> 938 <td>✓</td> 775 939 <td>BUFFER_ATOMIC_AND_X2</td> 776 940 </tr> 777 941 <tr> 778 942 <td>105 (0x69)</td> 943 <td>✓</td> 944 <td>✓</td> 779 945 <td>BUFFER_ATOMIC_OR_X2</td> 780 946 </tr> 781 947 <tr> 782 948 <td>106 (0x6a)</td> 949 <td>✓</td> 950 <td>✓</td> 783 951 <td>BUFFER_ATOMIC_XOR_X2</td> 784 952 </tr> 785 953 <tr> 786 954 <td>107 (0x6b)</td> 955 <td>✓</td> 956 <td>✓</td> 787 957 <td>BUFFER_ATOMIC_INC_X2</td> 788 958 </tr> 789 959 <tr> 790 960 <td>108 (0x6c)</td> 961 <td>✓</td> 962 <td>✓</td> 791 963 <td>BUFFER_ATOMIC_DEC_X2</td> 792 964 </tr> … … 1172 1344 Operation:<br /> 1173 1345 <code>VDATA = LOAD_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET)</code></p> 1346 <h4>BUFFER_LOAD_FORMAT_D16_HI_X</h4> 1347 <p>Opcode: 38 (0x26) for GCN 1.4<br /> 1348 Syntax: BUFFER_LOAD_FORMAT_D16_HI_X VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1349 Description: Load the first component of the element from SRSRC including format from 1350 buffer resource. Store result as 16-bit value to higher part of VDATA register 1351 (half FP or 16-bit integer).<br /> 1352 Operation:<br /> 1353 <code>VDATA = LOAD_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET)<<16</code></p> 1174 1354 <h4>BUFFER_LOAD_FORMAT_D16_XY</h4> 1175 1355 <p>Opcode: 9 (0x9)<br /> … … 1227 1407 Operation:<br /> 1228 1408 <code>VDATA = *(INT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)</code></p> 1409 <h4>BUFFER_LOAD_SBYTE_D16</h4> 1410 <p>Opcode: 34 (0x22) for GCN 1.4<br /> 1411 Syntax: BUFFER_LOAD_SBYTE_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1412 Description: Load byte to VDATA from SRSRC resource with sign extending to 1413 lower 16-bit part of VDATA.<br /> 1414 Operation:<br /> 1415 <code>VDATA &= 0xffff0000 1416 VDATA |= (UINT32)*(INT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&0xffff</code></p> 1417 <h4>BUFFER_LOAD_SBYTE_D16_HI</h4> 1418 <p>Opcode: 35 (0x23) for GCN 1.4<br /> 1419 Syntax: BUFFER_LOAD_SBYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1420 Description: Load byte to VDATA from SRSRC resource with sign extending to 1421 higher 16-bit part of VDATA.<br /> 1422 Operation:<br /> 1423 <code>VDATA &= 0xffff 1424 VDATA |= (UINT32)*(INT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)<<16</code></p> 1425 <h4>BUFFER_LOAD_SHORT_D16</h4> 1426 <p>Opcode: 36 (0x24) for GCN 1.4<br /> 1427 Syntax: BUFFER_LOAD_SHORT_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1428 Description: Load 16-bit word to VDATA from SRSRC resource to lower part of VDATA.<br /> 1429 Operation:<br /> 1430 <code>VDATA &= 0xffff0000 1431 VDATA |= *(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)</code></p> 1432 <h4>BUFFER_LOAD_SHORT_D16</h4> 1433 <p>Opcode: 37 (0x25) for GCN 1.4<br /> 1434 Syntax: BUFFER_LOAD_SHORT_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1435 Description: Load 16-bit word to VDATA from SRSRC resource to part part of VDATA.<br /> 1436 Operation:<br /> 1437 <code>VDATA &= 0xffff 1438 VDATA |= *(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)<<16</code></p> 1229 1439 <h4>BUFFER_LOAD_SSHORT</h4> 1230 1440 <p>Opcode: 11 (0xb) for GCN 1.0/1.1; 19 (0x13) for GCN 1.2<br /> … … 1239 1449 Operation:<br /> 1240 1450 <code>VDATA = *(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)</code></p> 1451 <h4>BUFFER_LOAD_UBYTE_D16</h4> 1452 <p>Opcode: 32 (0x20) for GCN 1.4<br /> 1453 Syntax: BUFFER_LOAD_UBYTE_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1454 Description: Load byte to VDATA from SRSRC resource with zero extending to 1455 lower 16-bit part of VDATA.<br /> 1456 Operation:<br /> 1457 <code>VDATA &= 0xffff0000 1458 VDATA |= (UINT32)*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&0xffff</code></p> 1459 <h4>BUFFER_LOAD_UBYTE_D16_HI</h4> 1460 <p>Opcode: 33 (0x21) for GCN 1.4<br /> 1461 Syntax: BUFFER_LOAD_UBYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1462 Description: Load byte to VDATA from SRSRC resource with zero extending to 1463 higher 16-bit part of VDATA.<br /> 1464 Operation:<br /> 1465 <code>VDATA &= 0xffff 1466 VDATA |= (UINT32)*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)<<16</code></p> 1241 1467 <h4>BUFFER_LOAD_USHORT</h4> 1242 1468 <p>Opcode: 10 (0xa) for GCN 1.0/1.1; 18 (0x12) for GCN 1.2<br /> … … 1251 1477 Operation:<br /> 1252 1478 <code>*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA&0xff</code></p> 1479 <h4>BUFFER_STORE_BYTE</h4> 1480 <p>Opcode: 25 (0x19)<br /> 1481 Syntax: BUFFER_STORE_BYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1482 Description: Store byte from 16-23 bits of VDATA into SRSRC resource.<br /> 1483 Operation:<br /> 1484 <code>*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = (VDATA>>16)&0xff</code></p> 1253 1485 <h4>BUFFER_STORE_DWORD</h4> 1254 1486 <p>Opcode: 28 (0x1c)<br /> … … 1291 1523 Operation:<br /> 1292 1524 <code>STORE_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET, VDATA)</code></p> 1525 <h4>BUFFER_STORE_FORMAT_D16_HI_X</h4> 1526 <p>Opcode: 39 (0x27) for GCN 1.4<br /> 1527 Syntax: BUFFER_STORE_FORMAT_D16_HI_X VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1528 Description: Store the first component of the element into SRSRC resource 1529 including format from SRSRC. Treat input as 16-bit value stored in higher part of VDATA 1530 (half FP or 16-bit integer).<br /> 1531 Operation:<br /> 1532 <code>STORE_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET, VDATA>>16)</code></p> 1293 1533 <h4>BUFFER_STORE_FORMAT_D16_XY</h4> 1294 1534 <p>Opcode: 13 (0xd)<br /> … … 1353 1593 Operation:<br /> 1354 1594 <code>*(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA&0xffff</code></p> 1595 <h4>BUFFER_STORE_SHORT</h4> 1596 <p>Opcode: 27 (0x1b) for GCN 1.4<br /> 1597 Syntax: BUFFER_STORE_SHORT_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br /> 1598 Description: Store higher 16-bit word from VDATA into SRSRC resource.<br /> 1599 Operation:<br /> 1600 <code>*(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA>>16</code></p> 1355 1601 }}}