Changes between Version 7 and Version 8 of GcnInstrsDs


Ignore:
Timestamp:
12/22/15 01:00:15 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsDs

    v7 v8  
    12331233<code>UINT32* V = (UINT32*)(DS + (ADDR+OFFSET)&amp;~3)
    12341234*V = (*V==VDATA0) ? VDATA1 : *V  // atomic operation</code></p>
     1235<h4>DS_CMPST_B64</h4>
     1236<p>Opcode: 80 (0x50)<br />
     1237Syntax: DS_CMPST_B64 ADDR, VDATA0(2), VDATA1(2) [OFFSET:OFFSET]<br />
     1238Description: Compare 64-bit values from VDATA0 and from LDS/GDS at address
     1239(ADDR+OFFSET) &amp; ~7. If values are equal, store VDATA1 to LDS/GDS at this same address,
     1240otherwise do nothing. Operation is atomic.<br />
     1241Operation:<br />
     1242<code>UINT64* V = (UINT64*)(DS + (ADDR+OFFSET)&amp;~7)
     1243*V = (*V==VDATA0) ? VDATA1 : *V  // atomic operation</code></p>
    12351244<h4>DS_CMPST_F32</h4>
    12361245<p>Opcode: 17 (0x11)<br />
     
    12501259Operation:<br />
    12511260<code>UINT32* V = (UINT32*)(DS + (ADDR+OFFSET)&amp;~3)
     1261*V = VDST; *V = (*V==VDATA0) ? VDATA1 : *V  // atomic operation</code></p>
     1262<h4>DS_CMPST_RTN_B64</h4>
     1263<p>Opcode: 112 (0x70)<br />
     1264Syntax: DS_CMPST_RTN_B64 VDST(2), ADDR, VDATA0(2), VDATA1(2) [OFFSET:OFFSET]<br />
     1265Description: Compare 64-bit values from VDATA0 and from LDS/GDS at address
     1266(ADDR+OFFSET) &amp; ~7. If values are equal, store VDATA1 to LDS/GDS at this same address,
     1267otherwise do nothing. Previous value from LDS/GDS are stored in VDST. Operation is atomic.<br />
     1268Operation:<br />
     1269<code>UINT64* V = (UINT64*)(DS + (ADDR+OFFSET)&amp;~7)
    12521270*V = VDST; *V = (*V==VDATA0) ? VDATA1 : *V  // atomic operation</code></p>
    12531271<h4>DS_CMPST_RTN_F32</h4>
     
    15991617<p>Opcode: 54 (0x36)<br />
    16001618Syntax: DS_READ_B32 VDST, ADDR [OFFSET:OFFSET]<br />
    1601 Description: Read dword from LDS/GDS at address (ADDR+OFFSET) &amp; ~3, store in VDST.<br />
     1619Description: Read dword from LDS/GDS at address (ADDR+OFFSET) &amp; ~3, store into VDST.<br />
    16021620Operation:<br />
    16031621<code>VDST = *(UINT32*)(DS + (ADDR+OFFSET)&amp;~3)</code></p>
     
    16061624Syntax: DS_READ_I16 VDST, ADDR [OFFSET:OFFSET]<br />
    16071625Description: Read signed 16-bit word from LDS/GDS at address (ADDR+OFFSET) &amp; ~1,
    1608 store in VDST. The value's sign will be extended to higher bits.<br />
     1626store into VDST. The value's sign will be extended to higher bits.<br />
    16091627Operation:<br />
    16101628<code>VDST = (INT32)*(INT16*)(DS + (ADDR+OFFSET)&amp;~1)</code></p>
     
    16121630<p>Opcode: 57 (0x39)<br />
    16131631Syntax: DS_READ_I8 VDST, ADDR [OFFSET:OFFSET]<br />
    1614 Description: Read signed byte from LDS/GDS at address (ADDR+OFFSET), store in VDST.
     1632Description: Read signed byte from LDS/GDS at address (ADDR+OFFSET), store into VDST.
    16151633The value's sign will be extended to higher bits.<br />
    16161634Operation:<br />
     
    16201638Syntax: DS_READ_U16 VDST, ADDR [OFFSET:OFFSET]<br />
    16211639Description: Read unsigned 16-bit word from LDS/GDS at address (ADDR+OFFSET) &amp; ~1,
    1622 store in VDST.<br />
     1640store into VDST.<br />
    16231641Operation:<br />
    16241642<code>VDST = *(UINT16*)(DS + (ADDR+OFFSET)&amp;~1)</code></p>
     
    16261644<p>Opcode: 58 (0x3a)<br />
    16271645Syntax: DS_READ_U8 VDST, ADDR [OFFSET:OFFSET]<br />
    1628 Description: Read unsigned byte from LDS/GDS at address (ADDR+OFFSET), store in VDST.<br />
     1646Description: Read unsigned byte from LDS/GDS at address (ADDR+OFFSET), store into VDST.<br />
    16291647Operation:<br />
    16301648<code>VDST = *(UINT8*)(DS + (ADDR+OFFSET))</code></p>
     
    16331651Syntax: DS_READ2_B32 VDST(2), ADDR [OFFSET0:OFFSET0] [OFFSET1:OFFSET1]<br />
    16341652Description: Read dword from LDS/GDS at address (ADDR+OFFSET0*4) &amp; ~3, and second dword
    1635 at address (ADDR+OFFSET1*4) &amp; ~3, and store these dwords in VDST.<br />
     1653at address (ADDR+OFFSET1*4) &amp; ~3, and store these dwords into VDST.<br />
    16361654Operation:<br />
    16371655<code>UINT32* V0 = (UINT32*)(DS + (ADDR + OFFSET0*4)&amp;~3)
    16381656UINT32* V1 = (UINT32*)(DS + (ADDR + OFFSET1*4)&amp;~3)
    1639 VDST = *V0 | UINT64(*V1)&lt;&lt;32</code></p>
     1657VDST = *V0 | (UINT64(*V1)&lt;&lt;32)</code></p>
     1658<h4>DS_READ2_B64</h4>
     1659<p>Opcode: 119 (0x77)<br />
     1660Syntax: DS_READ2_B64 VDST(4), ADDR [OFFSET0:OFFSET0] [OFFSET1:OFFSET1]<br />
     1661Description: Read 64-bit value from LDS/GDS at address (ADDR+OFFSET0*8) &amp; ~7,
     1662and second value at address (ADDR+OFFSET1*4) &amp; ~3, and store these values into VDST.<br />
     1663Operation:<br />
     1664<code>UINT64* V0 = (UINT64*)(DS + (ADDR + OFFSET0*8)&amp;~7)
     1665UINT64* V1 = (UINT64*)(DS + (ADDR + OFFSET1*8)&amp;~7)
     1666VDST = *V0 | (UINT128(*V1)&lt;&lt;64)</code></p>
    16401667<h4>DS_READ2ST64_B32</h4>
    16411668<p>Opcode: 56 (0x38)<br />
    16421669Syntax: DS_READ2ST64_B32 VDST(2), ADDR [OFFSET0:OFFSET0] [OFFSET1:OFFSET1]<br />
    16431670Description: Read dword from LDS/GDS at address (ADDR+OFFSET0*256) &amp; ~3, and second dword
    1644 at address (ADDR+OFFSET1*256) &amp; ~3, and store these dwords in VDST.<br />
     1671at address (ADDR+OFFSET1*256) &amp; ~3, and store these values into VDST.<br />
    16451672Operation:<br />
    16461673<code>UINT32* V0 = (UINT32*)(DS + (ADDR + OFFSET0*256)&amp;~3)
    16471674UINT32* V1 = (UINT32*)(DS + (ADDR + OFFSET1*256)&amp;~3)
    1648 VDST = *V0 | UINT64(*V1)&lt;&lt;32</code></p>
     1675VDST = *V0 | (UINT64(*V1)&lt;&lt;32)</code></p>
     1676<h4>DS_READ2ST64_B64</h4>
     1677<p>Opcode: 120 (0x78)<br />
     1678Syntax: DS_READ2ST64_B64 VDST(4), ADDR [OFFSET0:OFFSET0] [OFFSET1:OFFSET1]<br />
     1679Description: Read 64-bit value from LDS/GDS at address (ADDR+OFFSET0*512) &amp; ~7, and
     1680second value at address (ADDR+OFFSET1*512) &amp; ~7, and store these values into VDST.<br />
     1681Operation:<br />
     1682<code>UINT64* V0 = (UINT64*)(DS + (ADDR + OFFSET0*512)&amp;~7)
     1683UINT64* V1 = (UINT64*)(DS + (ADDR + OFFSET1*512)&amp;~7)
     1684VDST = *V0 | (UINT128(*V1)&lt;&lt;64)</code></p>
    16491685<h4>DS_RSUB_RTN_U32</h4>
    16501686<p>Opcode: 34 (0x22)<br />