Changes between Version 10 and Version 11 of GcnInstrsFlat
- Timestamp:
- 11/29/17 19:00:38 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsFlat
v10 v11 185 185 Instruction syntax: INSTRUCTION VADDR(2), VDATA [MODIFIERS]</p> 186 186 <p>GLOBAL instruction syntax: INSTRUCTION VDST, VADDR(2), SADDR(2)|OFF [MODIFIERS]<br /> 187 GLOBAL instruction syntax: INSTRUCTION VADDR( 2), VDATA, SADDR(2)|OFF [MODIFIERS]<br />187 GLOBAL instruction syntax: INSTRUCTION VADDR(1:2), VDATA, SADDR(2)|OFF [MODIFIERS]<br /> 188 188 SCRATCH instruction syntax: INSTRUCTION VDST, VADDR(2), SADDR|OFF [MODIFIERS]<br /> 189 SCRATCH instruction syntax: INSTRUCTION VADDR (2), VDATA, SADDR|OFF [MODIFIERS]</p>189 SCRATCH instruction syntax: INSTRUCTION VADDR, VDATA, SADDR|OFF [MODIFIERS]</p> 190 190 <p>Modifiers can be supplied in any order. Modifiers list: SLC, GLC, TFE, 191 191 LDS, NV, INST_OFFSET:OFFSET. The TFE flag requires additional the VDATA register. … … 196 196 <p>OFFSET (INST_OFFSET modifier) can be 13-bit signed for GLOBAL_* and SCRATCH_* 197 197 instructions or 12-bit unsigned for FLAT_* instructions.</p> 198 <p>For GLOBAL instruction VADDR have 2 registers if SADDR is OFF, otherwise VADDR holds 199 32-bit offset in single VGPR register.</p> 198 200 <h3>Instructions by opcode</h3> 199 201 <p>List of the FLAT instructions by opcode (GCN 1.1/1.2):</p> … … 1425 1427 <h4>GLOBAL_ATOMIC_ADD</h4> 1426 1428 <p>Opcode: 66 (0x42) for GCN 1.4<br /> 1427 Syntax: GLOBAL_ATOMIC_ADD VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1429 Syntax: GLOBAL_ATOMIC_ADD VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1428 1430 Description: Add VDATA to value of global address, and store result to this address. 1429 1431 If GLC flag is set then return previous value from this address to VDST, … … 1434 1436 <h4>GLOBAL_ATOMIC_ADD_X2</h4> 1435 1437 <p>Opcode: 98 (0x62) for GCN 1.4<br /> 1436 Syntax: GLOBAL_ATOMIC_ADD_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1438 Syntax: GLOBAL_ATOMIC_ADD_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1437 1439 Description: Add 64-bit VDATA to 64-bit value of global address, and store result 1438 1440 to this address. If GLC flag is set then return previous value from address to VDST, … … 1443 1445 <h4>GLOBAL_ATOMIC_AND</h4> 1444 1446 <p>Opcode: 72 (0x48) for GCN 1.4<br /> 1445 Syntax: GLOBAL_ATOMIC_AND VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1447 Syntax: GLOBAL_ATOMIC_AND VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1446 1448 Description: Do bitwise AND on VDATA and value of global address, 1447 1449 and store result to this address. If GLC flag is set then return previous value … … 1452 1454 <h4>GLOBAL_ATOMIC_AND_X2</h4> 1453 1455 <p>Opcode: 104 (0x68) for GCN 1.4<br /> 1454 Syntax: GLOBAL_ATOMIC_AND_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1456 Syntax: GLOBAL_ATOMIC_AND_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1455 1457 Description: Do 64-bit bitwise AND on VDATA and value of global address, 1456 1458 and store result to this address. If GLC flag is set then return previous value … … 1461 1463 <h4>GLOBAL_ATOMIC_CMPSWAP</h4> 1462 1464 <p>Opcode: 65 (0x41) for GCN 1.4<br /> 1463 Syntax: GLOBAL_ATOMIC_CMPSWAP VDST, VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1465 Syntax: GLOBAL_ATOMIC_CMPSWAP VDST, VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1464 1466 Description: Store lower VDATA dword into global address if previous value 1465 1467 from that address is equal VDATA>>32, otherwise keep old value from address. … … 1472 1474 <h4>GLOBAL_ATOMIC_CMPSWAP_X2</h4> 1473 1475 <p>Opcode: 97 (0x61) for GCN 1.4<br /> 1474 Syntax: GLOBAL_ATOMIC_CMPSWAP_X2 VDST(2), VADDR( 2), VDATA(4), SADDR(2)|OFF<br />1476 Syntax: GLOBAL_ATOMIC_CMPSWAP_X2 VDST(2), VADDR(1:2), VDATA(4), SADDR(2)|OFF<br /> 1475 1477 Description: Store lower VDATA 64-bit word into global address if previous value 1476 1478 from address is equal VDATA>>64, otherwise keep old value from VADDR. … … 1483 1485 <h4>GLOBAL_ATOMIC_DEC</h4> 1484 1486 <p>Opcode: 76 (0x4c) for GCN 1.4<br /> 1485 Syntax: GLOBAL_ATOMIC_DEC VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1487 Syntax: GLOBAL_ATOMIC_DEC VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1486 1488 Description: Compare value from global address and if less or equal than VDATA 1487 1489 and this value is not zero, then decrement value from global address, … … 1494 1496 <h4>GLOBAL_ATOMIC_DEC_X2</h4> 1495 1497 <p>Opcode: 108 (0x6c) for GCN 1.4<br /> 1496 Syntax: GLOBAL_ATOMIC_DEC_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1498 Syntax: GLOBAL_ATOMIC_DEC_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1497 1499 Description: Compare 64-bit value from global address and if less or equal than VDATA 1498 1500 and this value is not zero, then decrement value from global address, … … 1505 1507 <h4>GLOBAL_ATOMIC_INC</h4> 1506 1508 <p>Opcode: 75 (0x4b) for GCN 1.4<br /> 1507 Syntax: FLT_ATOMIC_INC VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1509 Syntax: FLT_ATOMIC_INC VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1508 1510 Description: Compare value from global address and if less than VDATA, 1509 1511 then increment value from address, otherwise store zero to address. … … 1515 1517 <h4>GLOBAL_ATOMIC_INC_X2</h4> 1516 1518 <p>Opcode: 107 (0x9b) for GCN 1.4<br /> 1517 Syntax: GLOBAL_ATOMIC_INC_X2 VDST(2), VADDR( 2), VADDR(2), SADDR(2)|OFF<br />1519 Syntax: GLOBAL_ATOMIC_INC_X2 VDST(2), VADDR(1:2), VADDR(1:2), SADDR(2)|OFF<br /> 1518 1520 Description: Compare 64-bit value from global address and if less than VDATA, 1519 1521 then increment value from address, otherwise store zero to address. … … 1525 1527 <h4>GLOBAL_ATOMIC_OR</h4> 1526 1528 <p>Opcode: 73 (0x49) for GCN 1.4<br /> 1527 Syntax: GLOBAL_ATOMIC_OR VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1529 Syntax: GLOBAL_ATOMIC_OR VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1528 1530 Description: Do bitwise OR on VDATA and value of global address, 1529 1531 and store result to this address. If GLC flag is set then return previous value … … 1534 1536 <h4>GLOBAL_ATOMIC_OR_X2</h4> 1535 1537 <p>Opcode: 105 (0x69) for GCN 1.4<br /> 1536 Syntax: GLOBAL_ATOMIC_OR_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1538 Syntax: GLOBAL_ATOMIC_OR_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1537 1539 Description: Do 64-bit bitwise OR on VDATA and value of global address, 1538 1540 and store result to this address. If GLC flag is set then return previous value … … 1543 1545 <h4>GLOBAL_ATOMIC_SMAX</h4> 1544 1546 <p>Opcode: 70 (0x46) for GCN 1.4<br /> 1545 Syntax: GLOBAL_ATOMIC_SMAX VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1547 Syntax: GLOBAL_ATOMIC_SMAX VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1546 1548 Description: Choose greatest signed 32-bit value from VDATA and from global address, 1547 1549 and store result to this address. … … 1553 1555 <h4>GLOBAL_ATOMIC_SMAX_X2</h4> 1554 1556 <p>Opcode: 102 (0x66) for GCN 1.4<br /> 1555 Syntax: GLOBAL_ATOMIC_SMAX_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1557 Syntax: GLOBAL_ATOMIC_SMAX_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1556 1558 Description: Choose greatest signed 64-bit value from VDATA and from global address, 1557 1559 and store result to this address. … … 1563 1565 <h4>GLOBAL_ATOMIC_SMIN</h4> 1564 1566 <p>Opcode: 68 (0x44) for GCN 1.4<br /> 1565 Syntax: GLOBAL_ATOMIC_SMIN VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1567 Syntax: GLOBAL_ATOMIC_SMIN VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1566 1568 Description: Choose smallest signed 32-bit value from VDATA and from global address, 1567 1569 and store result to this address. … … 1573 1575 <h4>GLOBAL_ATOMIC_SMIN_X2</h4> 1574 1576 <p>Opcode: 100 (0x64) for GCN 1.4<br /> 1575 Syntax: GLOBAL_ATOMIC_SMIN_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1577 Syntax: GLOBAL_ATOMIC_SMIN_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1576 1578 Description: Choose smallest signed 64-bit value from VDATA and from global address, 1577 1579 and store result to this address. … … 1583 1585 <h4>GLOBAL_ATOMIC_SUB</h4> 1584 1586 <p>Opcode: 67 (0x43) for GCN 1.4<br /> 1585 Syntax: GLOBAL_ATOMIC_SUB VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1587 Syntax: GLOBAL_ATOMIC_SUB VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1586 1588 Description: Subtract VDATA from value of global address, and store result to this address. 1587 1589 If GLC flag is set then return previous value from this address to VDST, … … 1592 1594 <h4>GLOBAL_ATOMIC_SUB_X2</h4> 1593 1595 <p>Opcode: 99 (0x63) for GCN 1.4<br /> 1594 Syntax: GLOBAL_ATOMIC_SUB_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1596 Syntax: GLOBAL_ATOMIC_SUB_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1595 1597 Description: Subtract 64-bit VDATA from 64-bit value of global address, and store result 1596 1598 to this address. If GLC flag is set then return previous value from address to VDST, … … 1601 1603 <h4>GLOBAL_ATOMIC_SWAP</h4> 1602 1604 <p>Opcode: 64 (0x40) for GCN 1.4<br /> 1603 Syntax: GLOBAL_ATOMIC_SWAP VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1605 Syntax: GLOBAL_ATOMIC_SWAP VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1604 1606 Description: Store VDATA dword into global address. If GLC flag is set then 1605 1607 return previous value from global address to VDST, otherwise keep old value from VDST. … … 1610 1612 <h4>GLOBAL_ATOMIC_SWAP_X2</h4> 1611 1613 <p>Opcode: 96 (0x60) for GCN 1.4<br /> 1612 Syntax: GLOBAL_ATOMIC_SWAP_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1614 Syntax: GLOBAL_ATOMIC_SWAP_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1613 1615 Description: Store VDATA 64-bit word into global address. If GLC flag is set then 1614 1616 return previous value from global address to VDST, otherwise keep old value from VDST. … … 1619 1621 <h4>GLOBAL_ATOMIC_UMAX</h4> 1620 1622 <p>Opcode: 71 (0x47) for GCN 1.4<br /> 1621 Syntax: GLOBAL_ATOMIC_UMAX VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1623 Syntax: GLOBAL_ATOMIC_UMAX VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1622 1624 Description: Choose greatest unsigned 32-bit value from VDATA and from global address, 1623 1625 and store result to this address. … … 1629 1631 <h4>GLOBAL_ATOMIC_UMAX_X2</h4> 1630 1632 <p>Opcode: 103 (0x67) for GCN 1.4<br /> 1631 Syntax: GLOBAL_ATOMIC_UMAX_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1633 Syntax: GLOBAL_ATOMIC_UMAX_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1632 1634 Description: Choose greatest unsigned 64-bit value from VDATA and from global address, 1633 1635 and store result to this address. … … 1639 1641 <h4>GLOBAL_ATOMIC_UMIN</h4> 1640 1642 <p>Opcode: 69 (0x45) for GCN 1.4<br /> 1641 Syntax: GLOBAL_ATOMIC_UMIN VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1643 Syntax: GLOBAL_ATOMIC_UMIN VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1642 1644 Description: Choose smallest unsigned 32-bit value from VDATA and from global address, 1643 1645 and store result to this address. … … 1649 1651 <h4>GLOBAL_ATOMIC_UMIN_X2</h4> 1650 1652 <p>Opcode: 101 (0x65) for GCN 1.4<br /> 1651 Syntax: GLOBAL_ATOMIC_UMIN_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1653 Syntax: GLOBAL_ATOMIC_UMIN_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1652 1654 Description: Choose smallest unsigned 64-bit value from VDATA and from global address, 1653 1655 and store result to this address. … … 1659 1661 <h4>GLOBAL_ATOMIC_XOR</h4> 1660 1662 <p>Opcode: 74 (0x4a) for GCN 1.4<br /> 1661 Syntax: GLOBAL_ATOMIC_XOR VDST, VADDR( 2), VDATA, SADDR(2)|OFF<br />1663 Syntax: GLOBAL_ATOMIC_XOR VDST, VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1662 1664 Description: Do bitwise XOR on VDATA and value of global address, 1663 1665 and store result to this address. If GLC flag is set then return previous value … … 1668 1670 <h4>GLOBAL_ATOMIC_XOR_X2</h4> 1669 1671 <p>Opcode: 106 (0x6a) for GCN 1.4<br /> 1670 Syntax: GLOBAL_ATOMIC_XOR_X2 VDST(2), VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1672 Syntax: GLOBAL_ATOMIC_XOR_X2 VDST(2), VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1671 1673 Description: Do 64-bit bitwise XOR on VDATA and value of global address, 1672 1674 and store result to this address. If GLC flag is set then return previous value … … 1677 1679 <h4>GLOBAL_LOAD_DWORD</h4> 1678 1680 <p>Opcode: 20 (0x14) for GCN 1.4<br /> 1679 Syntax: GLOBAL_LOAD_DWORD VDST, VADDR( 2), SADDR(2)|OFF<br />1681 Syntax: GLOBAL_LOAD_DWORD VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1680 1682 Description Load dword to VDST from global address.<br /> 1681 1683 Operation:<br /> … … 1683 1685 <h4>GLOBAL_LOAD_DWORDX2</h4> 1684 1686 <p>Opcode: 21 (0x15) for GCN 1.4<br /> 1685 Syntax: GLOBAL_LOAD_DWORDX2 VDST(, VADDR( 2), SADDR(2)|OFF<br />1687 Syntax: GLOBAL_LOAD_DWORDX2 VDST(, VADDR(1:2), SADDR(2)|OFF<br /> 1686 1688 Description Load two dwords to VDST from global address.<br /> 1687 1689 Operation:<br /> … … 1689 1691 <h4>GLOBAL_LOAD_DWORDX3</h4> 1690 1692 <p>Opcode: 22 (0x16) for GCN 1.4<br /> 1691 Syntax: GLOBAL_LOAD_DWORDX3 VDST(3), VADDR( 2), SADDR(2)|OFF<br />1693 Syntax: GLOBAL_LOAD_DWORDX3 VDST(3), VADDR(1:2), SADDR(2)|OFF<br /> 1692 1694 Description Load three dwords to VDST from global address.<br /> 1693 1695 Operation:<br /> … … 1698 1700 <h4>GLOBAL_LOAD_DWORDX4</h4> 1699 1701 <p>Opcode: 23 (0x17) for GCN 1.4<br /> 1700 Syntax: GLOBAL_LOAD_DWORDX4 VDST(4), VADDR( 2), SADDR(2)|OFF<br />1702 Syntax: GLOBAL_LOAD_DWORDX4 VDST(4), VADDR(1:2), SADDR(2)|OFF<br /> 1701 1703 Description Load four dwords to VDST from global address.<br /> 1702 1704 Operation:<br /> … … 1708 1710 <h4>GLOBAL_LOAD_SBYTE</h4> 1709 1711 <p>Opcode: 17 (0x11) for GCN 1.4<br /> 1710 Syntax: GLOBAL_LOAD_SBYTE VDST, VADDR( 2), SADDR(2)|OFF<br />1712 Syntax: GLOBAL_LOAD_SBYTE VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1711 1713 Description: Load byte to VDST from global address with sign extending.<br /> 1712 1714 Operation:<br /> … … 1714 1716 <h4>GLOBAL_LOAD_SBYTE_D16</h4> 1715 1717 <p>Opcode: 34 (0x22) for GCN 1.4<br /> 1716 Syntax: GLOBAL_LOAD_SBYTE_D16 VDST, VADDR( 2), SADDR(2)|OFF<br />1718 Syntax: GLOBAL_LOAD_SBYTE_D16 VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1717 1719 Description: Load byte to lower 16-bit part of VDST from 1718 1720 global address with sign extending.<br /> … … 1722 1724 <h4>GLOBAL_LOAD_SBYTE_D16_HI</h4> 1723 1725 <p>Opcode: 35 (0x23) for GCN 1.4<br /> 1724 Syntax: GLOBAL_LOAD_SBYTE_D16_HI VDST, VADDR( 2), SADDR(2)|OFF<br />1726 Syntax: GLOBAL_LOAD_SBYTE_D16_HI VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1725 1727 Description: Load byte to higher 16-bit part of VDST from 1726 1728 global address with sign extending.<br /> … … 1730 1732 <h4>GLOBAL_LOAD_SHORT_D16</h4> 1731 1733 <p>Opcode: 36 (0x24) for GCN 1.4<br /> 1732 Syntax: GLOBAL_LOAD_SHORT_D16 VDST, VADDR( 2), SADDR(2)|OFF<br />1734 Syntax: GLOBAL_LOAD_SHORT_D16 VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1733 1735 Description: Load 16-bit word to lower 16-bit part of VDST from global address.<br /> 1734 1736 Operation:<br /> … … 1737 1739 <h4>GLOBAL_LOAD_SHORT_D16_HI</h4> 1738 1740 <p>Opcode: 36 (0x24) for GCN 1.4<br /> 1739 Syntax: GLOBAL_LOAD_SHORT_D16_HI VDST, VADDR( 2), SADDR(2)|OFF<br />1741 Syntax: GLOBAL_LOAD_SHORT_D16_HI VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1740 1742 Description: Load 16-bit word to lower 16-bit part of VDST from global address.<br /> 1741 1743 Operation:<br /> … … 1744 1746 <h4>GLOBAL_LOAD_SSHORT</h4> 1745 1747 <p>Opcode: 19 (0x13) for GCN 1.4<br /> 1746 Syntax: GLOBAL_LOAD_SSHORT VDST, VADDR( 2), SADDR(2)|OFF<br />1748 Syntax: GLOBAL_LOAD_SSHORT VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1747 1749 Description: Load 16-bit word to VDST from global address with sign extending.<br /> 1748 1750 Operation:<br /> … … 1750 1752 <h4>GLOBAL_LOAD_UBYTE</h4> 1751 1753 <p>Opcode: 16 (0x10) for GCN 1.4<br /> 1752 Syntax: GLOBAL_LOAD_UBYTE VDST, VADDR( 2), SADDR(2)|OFF<br />1754 Syntax: GLOBAL_LOAD_UBYTE VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1753 1755 Description: Load byte to VDST from global address with zero extending.<br /> 1754 1756 Operation:<br /> … … 1756 1758 <h4>GLOBAL_LOAD_UBYTE_D16</h4> 1757 1759 <p>Opcode: 32 (0x20) for GCN 1.4<br /> 1758 Syntax: GLOBAL_LOAD_UBYTE_D16 VDST, VADDR( 2), SADDR(2)|OFF<br />1760 Syntax: GLOBAL_LOAD_UBYTE_D16 VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1759 1761 Description: Load byte to lower 16-bit part of VDST from 1760 1762 global address with zero extending.<br /> … … 1764 1766 <h4>GLOBAL_LOAD_UBYTE_D16_HI</h4> 1765 1767 <p>Opcode: 33 (0x21) for GCN 1.4<br /> 1766 Syntax: GLOBAL_LOAD_UBYTE_D16_HI VDST, VADDR( 2), SADDR(2)|OFF<br />1768 Syntax: GLOBAL_LOAD_UBYTE_D16_HI VDST, VADDR(1:2), SADDR(2)|OFF<br /> 1767 1769 Description: Load byte to higher 16-bit part of VDST from 1768 1770 global address with zero extending.<br /> … … 1778 1780 <h4>GLOBAL_STORE_BYTE</h4> 1779 1781 <p>Opcode: 24 (0x18) for GCN 1.4<br /> 1780 Syntax: GLOBAL_STORE_BYTE VADDR( 2), VDATA, SADDR(2)|OFF<br />1782 Syntax: GLOBAL_STORE_BYTE VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1781 1783 Description: Store byte from VDATA to global address.<br /> 1782 1784 Operation:<br /> … … 1784 1786 <h4>GLOBAL_STORE_BYTE_D16_HI</h4> 1785 1787 <p>Opcode: 25 (0x19) for GCN 1.4<br /> 1786 Syntax: GLOBAL_STORE_BYTE_D16_HI VADDR( 2), VDATA, SADDR(2)|OFF<br />1788 Syntax: GLOBAL_STORE_BYTE_D16_HI VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1787 1789 Description: Store byte from 16-23 bits of VDATA to global address.<br /> 1788 1790 Operation:<br /> … … 1790 1792 <h4>GLOBAL_STORE_DWORD</h4> 1791 1793 <p>Opcode: 28 (0x1c) for GCN 1.4<br /> 1792 Syntax: GLOBAL_STORE_DWORD VADDR( 2), VDATA, SADDR(2)|OFF<br />1794 Syntax: GLOBAL_STORE_DWORD VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1793 1795 Description: Store dword from VDATA to global address.<br /> 1794 1796 Operation:<br /> … … 1796 1798 <h4>GLOBAL_STORE_DWORDX2</h4> 1797 1799 <p>Opcode: 29 (0x1d) for GCN 1.4<br /> 1798 Syntax: GLOBAL_STORE_DWORDX2 VADDR( 2), VDATA(2), SADDR(2)|OFF<br />1800 Syntax: GLOBAL_STORE_DWORDX2 VADDR(1:2), VDATA(2), SADDR(2)|OFF<br /> 1799 1801 Description: Store two dwords from VDATA to global address.<br /> 1800 1802 Operation:<br /> … … 1802 1804 <h4>GLOBAL_STORE_DWORDX3</h4> 1803 1805 <p>Opcode: 30 (0x1e) for GCN 1.4<br /> 1804 Syntax: GLOBAL_STORE_DWORDX3 VADDR( 2), VDATA(3), SADDR(2)|OFF<br />1806 Syntax: GLOBAL_STORE_DWORDX3 VADDR(1:2), VDATA(3), SADDR(2)|OFF<br /> 1805 1807 Description: Store three dwords from VDATA to global address.<br /> 1806 1808 Operation:<br /> … … 1811 1813 <h4>GLOBAL_STORE_DWORDX4</h4> 1812 1814 <p>Opcode: 31 (0x1d) for GCN 1.4<br /> 1813 Syntax: GLOBAL_STORE_DWORDX4 VADDR( 2), VDATA(4), SADDR(2)|OFF<br />1815 Syntax: GLOBAL_STORE_DWORDX4 VADDR(1:2), VDATA(4), SADDR(2)|OFF<br /> 1814 1816 Description: Store four dwords from VDATA to global address.<br /> 1815 1817 Operation:<br /> … … 1821 1823 <h4>GLOBAL_STORE_SHORT</h4> 1822 1824 <p>Opcode: 26 (0x1a) for GCN 1.4<br /> 1823 Syntax: GLOBAL_STORE_SHORT VADDR( 2), VDATA, SADDR(2)|OFF<br />1825 Syntax: GLOBAL_STORE_SHORT VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1824 1826 Description: Store 16-bit word from VDATA to global address.<br /> 1825 1827 Operation:<br /> … … 1827 1829 <h4>GLOBAL_STORE_SHORT_D16_HI</h4> 1828 1830 <p>Opcode: 27 (0x1b) for GCN 1.4<br /> 1829 Syntax: GLOBAL_STORE_SHORT_D16_HI VADDR( 2), VDATA, SADDR(2)|OFF<br />1831 Syntax: GLOBAL_STORE_SHORT_D16_HI VADDR(1:2), VDATA, SADDR(2)|OFF<br /> 1830 1832 Description: Store 16-bit word from higher 16-bit part of VDATA to global address.<br /> 1831 1833 Operation:<br /> 1832 1834 <code>*(UINT16*)(VADDR + SADDR + INST_OFFSET) = VDATA>>16</code></p> 1835 <h4>SCRATCH_LOAD_DWORD</h4> 1836 <p>Opcode: 20 (0x14) for GCN 1.4<br /> 1837 Syntax: SCRATCH_LOAD_DWORD VDST, VADDR|OFF, SADDR|OFF<br /> 1838 Description Load dword to VDST from scratch memory address.<br /> 1839 Operation:<br /> 1840 <code>VDST = *(UINT32*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1841 <h4>SCRATCH_LOAD_DWORDX2</h4> 1842 <p>Opcode: 21 (0x15) for GCN 1.4<br /> 1843 Syntax: SCRATCH_LOAD_DWORDX2 VDST(, VADDR|OFF, SADDR|OFF<br /> 1844 Description Load two dwords to VDST from scratch memory address.<br /> 1845 Operation:<br /> 1846 <code>VDST = *(UINT64*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1847 <h4>SCRATCH_LOAD_DWORDX3</h4> 1848 <p>Opcode: 22 (0x16) for GCN 1.4<br /> 1849 Syntax: SCRATCH_LOAD_DWORDX3 VDST(3), VADDR|OFF, SADDR|OFF<br /> 1850 Description Load three dwords to VDST from scratch memory address.<br /> 1851 Operation:<br /> 1852 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1853 VDST[0] = *(UINT32*)VM 1854 VDST[1] = *(UINT32*)(VM+4) 1855 VDST[2] = *(UINT32*)(VM+8)</code></p> 1856 <h4>SCRATCH_LOAD_DWORDX4</h4> 1857 <p>Opcode: 23 (0x17) for GCN 1.4<br /> 1858 Syntax: SCRATCH_LOAD_DWORDX4 VDST(4), VADDR|OFF, SADDR|OFF<br /> 1859 Description Load four dwords to VDST from scratch memory address.<br /> 1860 Operation:<br /> 1861 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1862 VDST[0] = *(UINT32*)VM 1863 VDST[1] = *(UINT32*)(VM+4) 1864 VDST[2] = *(UINT32*)(VM+8) 1865 VDST[3] = *(UINT32*)(VM+12)</code></p> 1866 <h4>SCRATCH_LOAD_SBYTE</h4> 1867 <p>Opcode: 17 (0x11) for GCN 1.4<br /> 1868 Syntax: SCRATCH_LOAD_SBYTE VDST, VADDR|OFF, SADDR|OFF<br /> 1869 Description: Load byte to VDST from scratch memory address with sign extending.<br /> 1870 Operation:<br /> 1871 <code>VDST = *(INT8*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1872 <h4>SCRATCH_LOAD_SBYTE_D16</h4> 1873 <p>Opcode: 34 (0x22) for GCN 1.4<br /> 1874 Syntax: SCRATCH_LOAD_SBYTE_D16 VDST, VADDR|OFF, SADDR|OFF<br /> 1875 Description: Load byte to lower 16-bit part of VDST from 1876 scratch memory address with sign extending.<br /> 1877 Operation:<br /> 1878 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1879 VDST = ((UINT16)*(INT8*)VM) | (VDST&0xffff0000)</code></p> 1880 <h4>SCRATCH_LOAD_SBYTE_D16_HI</h4> 1881 <p>Opcode: 35 (0x23) for GCN 1.4<br /> 1882 Syntax: SCRATCH_LOAD_SBYTE_D16_HI VDST, VADDR|OFF, SADDR|OFF<br /> 1883 Description: Load byte to higher 16-bit part of VDST from 1884 scratch memory address with sign extending.<br /> 1885 Operation:<br /> 1886 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1887 VDST = (((UINT32)*(INT8*)VM)<<16) | (VDST&0xffff)</code></p> 1888 <h4>SCRATCH_LOAD_SHORT_D16</h4> 1889 <p>Opcode: 36 (0x24) for GCN 1.4<br /> 1890 Syntax: SCRATCH_LOAD_SHORT_D16 VDST, VADDR|OFF, SADDR|OFF<br /> 1891 Description: Load 16-bit word to lower 16-bit part of VDST from scratch memory address.<br /> 1892 Operation:<br /> 1893 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1894 VDST = *(UINT16*)VM | (VDST & 0xffff0000)</code></p> 1895 <h4>SCRATCH_LOAD_SHORT_D16_HI</h4> 1896 <p>Opcode: 36 (0x24) for GCN 1.4<br /> 1897 Syntax: SCRATCH_LOAD_SHORT_D16_HI VDST, VADDR|OFF, SADDR|OFF<br /> 1898 Description: Load 16-bit word to lower 16-bit part of VDST from scratch memory address.<br /> 1899 Operation:<br /> 1900 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1901 VDST = (((UINT32)*(UINT16*)VM)<<16) | (VDST & 0xffff)</code></p> 1902 <h4>SCRATCH_LOAD_SSHORT</h4> 1903 <p>Opcode: 19 (0x13) for GCN 1.4<br /> 1904 Syntax: SCRATCH_LOAD_SSHORT VDST, VADDR|OFF, SADDR|OFF<br /> 1905 Description: Load 16-bit word to VDST from scratch memory address with sign extending.<br /> 1906 Operation:<br /> 1907 <code>VDST = *(INT16*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1908 <h4>SCRATCH_LOAD_UBYTE</h4> 1909 <p>Opcode: 16 (0x10) for GCN 1.4<br /> 1910 Syntax: SCRATCH_LOAD_UBYTE VDST, VADDR|OFF, SADDR|OFF<br /> 1911 Description: Load byte to VDST from scratch memory address with zero extending.<br /> 1912 Operation:<br /> 1913 <code>VDST = *(UINT8*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1914 <h4>SCRATCH_LOAD_UBYTE_D16</h4> 1915 <p>Opcode: 32 (0x20) for GCN 1.4<br /> 1916 Syntax: SCRATCH_LOAD_UBYTE_D16 VDST, VADDR|OFF, SADDR|OFF<br /> 1917 Description: Load byte to lower 16-bit part of VDST from 1918 scratch memory address with zero extending.<br /> 1919 Operation:<br /> 1920 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1921 VDST = ((UINT16)*(UINT8*)VM) | (VDST&0xffff0000)</code></p> 1922 <h4>SCRATCH_LOAD_UBYTE_D16_HI</h4> 1923 <p>Opcode: 33 (0x21) for GCN 1.4<br /> 1924 Syntax: SCRATCH_LOAD_UBYTE_D16_HI VDST, VADDR|OFF, SADDR|OFF<br /> 1925 Description: Load byte to higher 16-bit part of VDST from 1926 scratch memory address with zero extending.<br /> 1927 Operation:<br /> 1928 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1929 VDST = (((UINT32)*(UINT8*)VM)<<16) | (VDST&0xffff)</code></p> 1930 <h4>SCRATCH_LOAD_USHORT</h4> 1931 <p>Opcode: 18 (0x12) for GCN 1.4<br /> 1932 Syntax: SCRATCH_LOAD_USHORT VDST, VADDR|OFF, SADDR|OFF<br /> 1933 Description: Load 16-bit word to VDST from scratch memory address with zero extending.<br /> 1934 Operation:<br /> 1935 <code>VDST = *(UINT16*)SWIZZLE(ADDR, INST_OFFSET, LANEID)</code></p> 1936 <h4>SCRATCH_STORE_BYTE</h4> 1937 <p>Opcode: 24 (0x18) for GCN 1.4<br /> 1938 Syntax: SCRATCH_STORE_BYTE VADDR|OFF, VDATA, SADDR|OFF<br /> 1939 Description: Store byte from VDATA to scratch memory address.<br /> 1940 Operation:<br /> 1941 <code>*(UINT8*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = VDATA&0xff</code></p> 1942 <h4>SCRATCH_STORE_BYTE_D16_HI</h4> 1943 <p>Opcode: 25 (0x19) for GCN 1.4<br /> 1944 Syntax: SCRATCH_STORE_BYTE_D16_HI VADDR|OFF, VDATA, SADDR|OFF<br /> 1945 Description: Store byte from 16-23 bits of VDATA to scratch memory address.<br /> 1946 Operation:<br /> 1947 <code>*(UINT8*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = (VDATA>>16)&0xff</code></p> 1948 <h4>SCRATCH_STORE_DWORD</h4> 1949 <p>Opcode: 28 (0x1c) for GCN 1.4<br /> 1950 Syntax: SCRATCH_STORE_DWORD VADDR|OFF, VDATA, SADDR|OFF<br /> 1951 Description: Store dword from VDATA to scratch memory address.<br /> 1952 Operation:<br /> 1953 <code>*(UINT32*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = VDATA</code></p> 1954 <h4>SCRATCH_STORE_DWORDX2</h4> 1955 <p>Opcode: 29 (0x1d) for GCN 1.4<br /> 1956 Syntax: SCRATCH_STORE_DWORDX2 VADDR|OFF, VDATA(2), SADDR|OFF<br /> 1957 Description: Store two dwords from VDATA to scratch memory address.<br /> 1958 Operation:<br /> 1959 <code>*(UINT64*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = VDATA</code></p> 1960 <h4>SCRATCH_STORE_DWORDX3</h4> 1961 <p>Opcode: 30 (0x1e) for GCN 1.4<br /> 1962 Syntax: SCRATCH_STORE_DWORDX3 VADDR|OFF, VDATA(3), SADDR|OFF<br /> 1963 Description: Store three dwords from VDATA to scratch memory address.<br /> 1964 Operation:<br /> 1965 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1966 *(UINT32*)(VM) = VDATA[0] 1967 *(UINT32*)(VM+4) = VDATA[1] 1968 *(UINT32*)(VM+8) = VDATA[2]</code></p> 1969 <h4>SCRATCH_STORE_DWORDX4</h4> 1970 <p>Opcode: 31 (0x1d) for GCN 1.4<br /> 1971 Syntax: SCRATCH_STORE_DWORDX4 VADDR|OFF, VDATA(4), SADDR|OFF<br /> 1972 Description: Store four dwords from VDATA to scratch memory address.<br /> 1973 Operation:<br /> 1974 <code>BYTE* VM = SWIZZLE(ADDR, INST_OFFSET, LANEID) 1975 *(UINT32*)(VM) = VDATA[0] 1976 *(UINT32*)(VM+4) = VDATA[1] 1977 *(UINT32*)(VM+8) = VDATA[2] 1978 *(UINT32*)(VM+12) = VDATA[3]</code></p> 1979 <h4>SCRATCH_STORE_SHORT</h4> 1980 <p>Opcode: 26 (0x1a) for GCN 1.4<br /> 1981 Syntax: SCRATCH_STORE_SHORT VADDR|OFF, VDATA, SADDR|OFF<br /> 1982 Description: Store 16-bit word from VDATA to scratch memory address.<br /> 1983 Operation:<br /> 1984 <code>*(UINT16*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = VDATA&0xffff</code></p> 1985 <h4>SCRATCH_STORE_SHORT_D16_HI</h4> 1986 <p>Opcode: 27 (0x1b) for GCN 1.4<br /> 1987 Syntax: SCRATCH_STORE_SHORT_D16_HI VADDR|OFF, VDATA, SADDR|OFF<br /> 1988 Description: Store 16-bit word from higher 16-bit part of VDATA to scratch memory address.<br /> 1989 Operation:<br /> 1990 <code>*(UINT16*)SWIZZLE(ADDR, INST_OFFSET, LANEID) = VDATA>>16</code></p> 1833 1991 }}}