Changes between Version 9 and Version 10 of GcnInstrsSmrd


Ignore:
Timestamp:
07/19/17 20:00:27 (5 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsSmrd

    v9 v10  
    148148SBASE is buffer descriptor.<br />
    149149Operation:<br />
    150 <code>SDST = *(UINT32*)(SMRD + (OFFSET &amp; 3))</code></p>
     150<code>SDST = *(UINT32*)(SMRD + (OFFSET &amp; ~3))</code></p>
    151151<h4>S_BUFFER_LOAD_DWORDX16</h4>
    152152<p>Opcode: 12 (0xc)<br />
     
    156156Operation:<br />
    157157<code>for (BYTE i = 0; i &lt; 16; i++)
    158     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     158    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    159159<h4>S_BUFFER_LOAD_DWORDX2</h4>
    160160<p>Opcode: 9 (0x9)<br />
     
    163163SBASE is buffer descriptor.<br />
    164164Operation:<br />
    165 <code>SDST = *(UINT64*)(SMRD + (OFFSET &amp; 3))</code></p>
     165<code>SDST = *(UINT64*)(SMRD + (OFFSET &amp; ~3))</code></p>
    166166<h4>S_BUFFER_LOAD_DWORDX4</h4>
    167167<p>Opcode: 10 (0xa)<br />
     
    171171Operation:<br />
    172172<code>for (BYTE i = 0; i &lt; 4; i++)
    173     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     173    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    174174<h4>S_BUFFER_LOAD_DWORDX8</h4>
    175175<p>Opcode: 11 (0xb)<br />
     
    179179Operation:<br />
    180180<code>for (BYTE i = 0; i &lt; 8; i++)
    181     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     181    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    182182<h4>S_DCACHE_INV</h4>
    183183<p>Opcode: 31 (0x1f)<br />
     
    193193Description: Load single dword from read-only memory through constant cache (kcache).<br />
    194194Operation:<br />
    195 <code>SDST = *(UINT32*)(SMRD + (OFFSET &amp; 3))</code></p>
     195<code>SDST = *(UINT32*)(SMRD + (OFFSET &amp; ~3))</code></p>
    196196<h4>S_LOAD_DWORDX16</h4>
    197197<p>Opcode: 4 (0x4)<br />
     
    200200Operation:<br />
    201201<code>for (BYTE i = 0; i &lt; 16; i++)
    202     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     202    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    203203<h4>S_LOAD_DWORDX2</h4>
    204204<p>Opcode: 1 (0x1)<br />
    205205Syntax: S_LOAD_DWORDX2 SDST(2), SBASE(2), OFFSET<br />
    206206Description: Load two dwords from read-only memory through constant cache (kcache).<br />
    207 <code>SDST = *(UINT64*)(SMRD + (OFFSET &amp; 3))</code></p>
     207<code>SDST = *(UINT64*)(SMRD + (OFFSET &amp; ~3))</code></p>
    208208<h4>S_LOAD_DWORDX4</h4>
    209209<p>Opcode: 2 (0x2)<br />
     
    212212Operation:<br />
    213213<code>for (BYTE i = 0; i &lt; 4; i++)
    214     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     214    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    215215<h4>S_LOAD_DWORDX8</h4>
    216216<p>Opcode: 3 (0x3)<br />
     
    219219Operation:<br />
    220220<code>for (BYTE i = 0; i &lt; 8; i++)
    221     SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; 3))</code></p>
     221    SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET &amp; ~3))</code></p>
    222222<h4>S_MEMTIME</h4>
    223223<p>Opcode: 30 (0x1e)<br />