Changes between Version 16 and Version 17 of GcnInstrsMubuf


Ignore:
Timestamp:
11/28/17 19:00:31 (6 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsMubuf

    v16 v17  
    543543<tr>
    544544<th>Opcode</th>
     545<th>GCN 1.2</th>
     546<th>GCN 1.4</th>
    545547<th>Mnemonic</th>
    546548</tr>
     
    549551<tr>
    550552<td>0 (0x0)</td>
     553<td>✓</td>
     554<td>✓</td>
    551555<td>BUFFER_LOAD_FORMAT_X</td>
    552556</tr>
    553557<tr>
    554558<td>1 (0x1)</td>
     559<td>✓</td>
     560<td>✓</td>
    555561<td>BUFFER_LOAD_FORMAT_XY</td>
    556562</tr>
    557563<tr>
    558564<td>2 (0x2)</td>
     565<td>✓</td>
     566<td>✓</td>
    559567<td>BUFFER_LOAD_FORMAT_XYZ</td>
    560568</tr>
    561569<tr>
    562570<td>3 (0x3)</td>
     571<td>✓</td>
     572<td>✓</td>
    563573<td>BUFFER_LOAD_FORMAT_XYZW</td>
    564574</tr>
    565575<tr>
    566576<td>4 (0x4)</td>
     577<td>✓</td>
     578<td>✓</td>
    567579<td>BUFFER_STORE_FORMAT_X</td>
    568580</tr>
    569581<tr>
    570582<td>5 (0x5)</td>
     583<td>✓</td>
     584<td>✓</td>
    571585<td>BUFFER_STORE_FORMAT_XY</td>
    572586</tr>
    573587<tr>
    574588<td>6 (0x6)</td>
     589<td>✓</td>
     590<td>✓</td>
    575591<td>BUFFER_STORE_FORMAT_XYZ</td>
    576592</tr>
    577593<tr>
    578594<td>7 (0x7)</td>
     595<td>✓</td>
     596<td>✓</td>
    579597<td>BUFFER_STORE_FORMAT_XYZW</td>
    580598</tr>
    581599<tr>
    582600<td>8 (0x8)</td>
     601<td>✓</td>
     602<td>✓</td>
    583603<td>BUFFER_LOAD_FORMAT_D16_X</td>
    584604</tr>
    585605<tr>
    586606<td>9 (0x9)</td>
     607<td>✓</td>
     608<td>✓</td>
    587609<td>BUFFER_LOAD_FORMAT_D16_XY</td>
    588610</tr>
    589611<tr>
    590612<td>10 (0xa)</td>
     613<td>✓</td>
     614<td>✓</td>
    591615<td>BUFFER_LOAD_FORMAT_D16_XYZ</td>
    592616</tr>
    593617<tr>
    594618<td>11 (0xb)</td>
     619<td>✓</td>
     620<td>✓</td>
    595621<td>BUFFER_LOAD_FORMAT_D16_XYZW</td>
    596622</tr>
    597623<tr>
    598624<td>12 (0xc)</td>
     625<td>✓</td>
     626<td>✓</td>
    599627<td>BUFFER_STORE_FORMAT_D16_X</td>
    600628</tr>
    601629<tr>
    602630<td>13 (0xd)</td>
     631<td>✓</td>
     632<td>✓</td>
    603633<td>BUFFER_STORE_FORMAT_D16_XY</td>
    604634</tr>
    605635<tr>
    606636<td>14 (0xe)</td>
     637<td>✓</td>
     638<td>✓</td>
    607639<td>BUFFER_STORE_FORMAT_D16_XYZ</td>
    608640</tr>
    609641<tr>
    610642<td>15 (0xf)</td>
     643<td>✓</td>
     644<td>✓</td>
    611645<td>BUFFER_STORE_FORMAT_D16_XYZW</td>
    612646</tr>
    613647<tr>
    614648<td>16 (0x10)</td>
     649<td>✓</td>
     650<td>✓</td>
    615651<td>BUFFER_LOAD_UBYTE</td>
    616652</tr>
    617653<tr>
    618654<td>17 (0x11)</td>
     655<td>✓</td>
     656<td>✓</td>
    619657<td>BUFFER_LOAD_SBYTE</td>
    620658</tr>
    621659<tr>
    622660<td>18 (0x12)</td>
     661<td>✓</td>
     662<td>✓</td>
    623663<td>BUFFER_LOAD_USHORT</td>
    624664</tr>
    625665<tr>
    626666<td>19 (0x13)</td>
     667<td>✓</td>
     668<td>✓</td>
    627669<td>BUFFER_LOAD_SSHORT</td>
    628670</tr>
    629671<tr>
    630672<td>20 (0x14)</td>
     673<td>✓</td>
     674<td>✓</td>
    631675<td>BUFFER_LOAD_DWORD</td>
    632676</tr>
    633677<tr>
    634678<td>21 (0x15)</td>
     679<td>✓</td>
     680<td>✓</td>
    635681<td>BUFFER_LOAD_DWORDX2</td>
    636682</tr>
    637683<tr>
    638684<td>22 (0x16)</td>
     685<td>✓</td>
     686<td>✓</td>
    639687<td>BUFFER_LOAD_DWORDX3</td>
    640688</tr>
    641689<tr>
    642690<td>23 (0x17)</td>
     691<td>✓</td>
     692<td>✓</td>
    643693<td>BUFFER_LOAD_DWORDX4</td>
    644694</tr>
    645695<tr>
    646696<td>24 (0x18)</td>
     697<td>✓</td>
     698<td>✓</td>
    647699<td>BUFFER_STORE_BYTE</td>
    648700</tr>
    649701<tr>
     702<td>25 (0x19)</td>
     703<td></td>
     704<td>✓</td>
     705<td>BUFFER_STORE_BYTE_D16</td>
     706</tr>
     707<tr>
    650708<td>26 (0x1a)</td>
     709<td>✓</td>
     710<td>✓</td>
    651711<td>BUFFER_STORE_SHORT</td>
    652712</tr>
    653713<tr>
     714<td>27 (0x1b)</td>
     715<td></td>
     716<td>✓</td>
     717<td>BUFFER_STORE_SHORT_D16</td>
     718</tr>
     719<tr>
    654720<td>28 (0x1c)</td>
     721<td>✓</td>
     722<td>✓</td>
    655723<td>BUFFER_STORE_DWORD</td>
    656724</tr>
    657725<tr>
    658726<td>29 (0x1d)</td>
     727<td>✓</td>
     728<td>✓</td>
    659729<td>BUFFER_STORE_DWORDX2</td>
    660730</tr>
    661731<tr>
    662732<td>30 (0x1e)</td>
     733<td>✓</td>
     734<td>✓</td>
    663735<td>BUFFER_STORE_DWORDX3</td>
    664736</tr>
    665737<tr>
    666738<td>31 (0x1f)</td>
     739<td>✓</td>
     740<td>✓</td>
    667741<td>BUFFER_STORE_DWORDX4</td>
    668742</tr>
    669743<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>
    670780<td>38 (0x26)</td>
     781<td></td>
     782<td>✓</td>
    671783<td>BUFFER_LOAD_FORMAT_D16_HI_X</td>
    672784</tr>
    673785<tr>
    674786<td>39 (0x27)</td>
     787<td></td>
     788<td>✓</td>
    675789<td>BUFFER_STORE_FORMAT_D16_HI_X</td>
    676790</tr>
    677791<tr>
    678792<td>61 (0x3d)</td>
     793<td>✓</td>
     794<td>✓</td>
    679795<td>BUFFER_STORE_LDS_DWORD</td>
    680796</tr>
    681797<tr>
    682798<td>62 (0x3e)</td>
     799<td>✓</td>
     800<td>✓</td>
    683801<td>BUFFER_WBINVL1</td>
    684802</tr>
    685803<tr>
    686804<td>63 (0x3f)</td>
     805<td>✓</td>
     806<td>✓</td>
    687807<td>BUFFER_WBINVL1_VOL</td>
    688808</tr>
    689809<tr>
    690810<td>64 (0x40)</td>
     811<td>✓</td>
     812<td>✓</td>
    691813<td>BUFFER_ATOMIC_SWAP</td>
    692814</tr>
    693815<tr>
    694816<td>65 (0x41)</td>
     817<td>✓</td>
     818<td>✓</td>
    695819<td>BUFFER_ATOMIC_CMPSWAP</td>
    696820</tr>
    697821<tr>
    698822<td>66 (0x42)</td>
     823<td>✓</td>
     824<td>✓</td>
    699825<td>BUFFER_ATOMIC_ADD</td>
    700826</tr>
    701827<tr>
    702828<td>67 (0x43)</td>
     829<td>✓</td>
     830<td>✓</td>
    703831<td>BUFFER_ATOMIC_SUB</td>
    704832</tr>
    705833<tr>
    706834<td>68 (0x44)</td>
     835<td>✓</td>
     836<td>✓</td>
    707837<td>BUFFER_ATOMIC_SMIN</td>
    708838</tr>
    709839<tr>
    710840<td>69 (0x45)</td>
     841<td>✓</td>
     842<td>✓</td>
    711843<td>BUFFER_ATOMIC_UMIN</td>
    712844</tr>
    713845<tr>
    714846<td>70 (0x46)</td>
     847<td>✓</td>
     848<td>✓</td>
    715849<td>BUFFER_ATOMIC_SMAX</td>
    716850</tr>
    717851<tr>
    718852<td>71 (0x47)</td>
     853<td>✓</td>
     854<td>✓</td>
    719855<td>BUFFER_ATOMIC_UMAX</td>
    720856</tr>
    721857<tr>
    722858<td>72 (0x48)</td>
     859<td>✓</td>
     860<td>✓</td>
    723861<td>BUFFER_ATOMIC_AND</td>
    724862</tr>
    725863<tr>
    726864<td>73 (0x49)</td>
     865<td>✓</td>
     866<td>✓</td>
    727867<td>BUFFER_ATOMIC_OR</td>
    728868</tr>
    729869<tr>
    730870<td>74 (0x4a)</td>
     871<td>✓</td>
     872<td>✓</td>
    731873<td>BUFFER_ATOMIC_XOR</td>
    732874</tr>
    733875<tr>
    734876<td>75 (0x4b)</td>
     877<td>✓</td>
     878<td>✓</td>
    735879<td>BUFFER_ATOMIC_INC</td>
    736880</tr>
    737881<tr>
    738882<td>76 (0x4c)</td>
     883<td>✓</td>
     884<td>✓</td>
    739885<td>BUFFER_ATOMIC_DEC</td>
    740886</tr>
    741887<tr>
    742888<td>96 (0x60)</td>
     889<td>✓</td>
     890<td>✓</td>
    743891<td>BUFFER_ATOMIC_SWAP_X2</td>
    744892</tr>
    745893<tr>
    746894<td>97 (0x61)</td>
     895<td>✓</td>
     896<td>✓</td>
    747897<td>BUFFER_ATOMIC_CMPSWAP_X2</td>
    748898</tr>
    749899<tr>
    750900<td>98 (0x62)</td>
     901<td>✓</td>
     902<td>✓</td>
    751903<td>BUFFER_ATOMIC_ADD_X2</td>
    752904</tr>
    753905<tr>
    754906<td>99 (0x63)</td>
     907<td>✓</td>
     908<td>✓</td>
    755909<td>BUFFER_ATOMIC_SUB_X2</td>
    756910</tr>
    757911<tr>
    758912<td>100 (0x64)</td>
     913<td>✓</td>
     914<td>✓</td>
    759915<td>BUFFER_ATOMIC_SMIN_X2</td>
    760916</tr>
    761917<tr>
    762918<td>101 (0x65)</td>
     919<td>✓</td>
     920<td>✓</td>
    763921<td>BUFFER_ATOMIC_UMIN_X2</td>
    764922</tr>
    765923<tr>
    766924<td>102 (0x66)</td>
     925<td>✓</td>
     926<td>✓</td>
    767927<td>BUFFER_ATOMIC_SMAX_X2</td>
    768928</tr>
    769929<tr>
    770930<td>103 (0x67)</td>
     931<td>✓</td>
     932<td>✓</td>
    771933<td>BUFFER_ATOMIC_UMAX_X2</td>
    772934</tr>
    773935<tr>
    774936<td>104 (0x68)</td>
     937<td>✓</td>
     938<td>✓</td>
    775939<td>BUFFER_ATOMIC_AND_X2</td>
    776940</tr>
    777941<tr>
    778942<td>105 (0x69)</td>
     943<td>✓</td>
     944<td>✓</td>
    779945<td>BUFFER_ATOMIC_OR_X2</td>
    780946</tr>
    781947<tr>
    782948<td>106 (0x6a)</td>
     949<td>✓</td>
     950<td>✓</td>
    783951<td>BUFFER_ATOMIC_XOR_X2</td>
    784952</tr>
    785953<tr>
    786954<td>107 (0x6b)</td>
     955<td>✓</td>
     956<td>✓</td>
    787957<td>BUFFER_ATOMIC_INC_X2</td>
    788958</tr>
    789959<tr>
    790960<td>108 (0x6c)</td>
     961<td>✓</td>
     962<td>✓</td>
    791963<td>BUFFER_ATOMIC_DEC_X2</td>
    792964</tr>
     
    11721344Operation:<br />
    11731345<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 />
     1348Syntax: BUFFER_LOAD_FORMAT_D16_HI_X VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1349Description: Load the first component of the element from SRSRC including format from
     1350buffer resource. Store result as 16-bit value to higher part of VDATA register
     1351(half FP or 16-bit integer).<br />
     1352Operation:<br />
     1353<code>VDATA = LOAD_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&lt;&lt;16</code></p>
    11741354<h4>BUFFER_LOAD_FORMAT_D16_XY</h4>
    11751355<p>Opcode: 9 (0x9)<br />
     
    12271407Operation:<br />
    12281408<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 />
     1411Syntax: BUFFER_LOAD_SBYTE_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1412Description: Load byte to VDATA from SRSRC resource with sign extending to
     1413lower 16-bit part of VDATA.<br />
     1414Operation:<br />
     1415<code>VDATA &amp;= 0xffff0000
     1416VDATA |= (UINT32)*(INT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&amp;0xffff</code></p>
     1417<h4>BUFFER_LOAD_SBYTE_D16_HI</h4>
     1418<p>Opcode: 35 (0x23) for GCN 1.4<br />
     1419Syntax: BUFFER_LOAD_SBYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1420Description: Load byte to VDATA from SRSRC resource with sign extending to
     1421higher 16-bit part of VDATA.<br />
     1422Operation:<br />
     1423<code>VDATA &amp;= 0xffff
     1424VDATA |= (UINT32)*(INT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&lt;&lt;16</code></p>
     1425<h4>BUFFER_LOAD_SHORT_D16</h4>
     1426<p>Opcode: 36 (0x24) for GCN 1.4<br />
     1427Syntax: BUFFER_LOAD_SHORT_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1428Description: Load 16-bit word to VDATA from SRSRC resource to lower part of VDATA.<br />
     1429Operation:<br />
     1430<code>VDATA &amp;= 0xffff0000
     1431VDATA |= *(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 />
     1434Syntax: BUFFER_LOAD_SHORT_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1435Description: Load 16-bit word to VDATA from SRSRC resource to part part of VDATA.<br />
     1436Operation:<br />
     1437<code>VDATA &amp;= 0xffff
     1438VDATA |= *(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&lt;&lt;16</code></p>
    12291439<h4>BUFFER_LOAD_SSHORT</h4>
    12301440<p>Opcode: 11 (0xb) for GCN 1.0/1.1; 19 (0x13) for GCN 1.2<br />
     
    12391449Operation:<br />
    12401450<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 />
     1453Syntax: BUFFER_LOAD_UBYTE_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1454Description: Load byte to VDATA from SRSRC resource with zero extending to
     1455lower 16-bit part of VDATA.<br />
     1456Operation:<br />
     1457<code>VDATA &amp;= 0xffff0000
     1458VDATA |= (UINT32)*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&amp;0xffff</code></p>
     1459<h4>BUFFER_LOAD_UBYTE_D16_HI</h4>
     1460<p>Opcode: 33 (0x21) for GCN 1.4<br />
     1461Syntax: BUFFER_LOAD_UBYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1462Description: Load byte to VDATA from SRSRC resource with zero extending to
     1463higher 16-bit part of VDATA.<br />
     1464Operation:<br />
     1465<code>VDATA &amp;= 0xffff
     1466VDATA |= (UINT32)*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET)&lt;&lt;16</code></p>
    12411467<h4>BUFFER_LOAD_USHORT</h4>
    12421468<p>Opcode: 10 (0xa) for GCN 1.0/1.1; 18 (0x12) for GCN 1.2<br />
     
    12511477Operation:<br />
    12521478<code>*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA&amp;0xff</code></p>
     1479<h4>BUFFER_STORE_BYTE</h4>
     1480<p>Opcode: 25 (0x19)<br />
     1481Syntax: BUFFER_STORE_BYTE_D16_HI VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1482Description: Store byte from 16-23 bits of VDATA into SRSRC resource.<br />
     1483Operation:<br />
     1484<code>*(UINT8*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = (VDATA&gt;&gt;16)&amp;0xff</code></p>
    12531485<h4>BUFFER_STORE_DWORD</h4>
    12541486<p>Opcode: 28 (0x1c)<br />
     
    12911523Operation:<br />
    12921524<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 />
     1527Syntax: BUFFER_STORE_FORMAT_D16_HI_X VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1528Description: Store the first component of the element into SRSRC resource
     1529including format from SRSRC. Treat input as 16-bit value stored in higher part of VDATA
     1530(half FP or 16-bit integer).<br />
     1531Operation:<br />
     1532<code>STORE_FORMAT_D16_X(SRSRC, VADDR(1:2), SOFFSET, OFFSET, VDATA&gt;&gt;16)</code></p>
    12931533<h4>BUFFER_STORE_FORMAT_D16_XY</h4>
    12941534<p>Opcode: 13 (0xd)<br />
     
    13531593Operation:<br />
    13541594<code>*(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA&amp;0xffff</code></p>
     1595<h4>BUFFER_STORE_SHORT</h4>
     1596<p>Opcode: 27 (0x1b) for GCN 1.4<br />
     1597Syntax: BUFFER_STORE_SHORT_D16 VDATA, VADDR(1:2), SRSRC(4), SOFFSET<br />
     1598Description: Store higher 16-bit word from VDATA into SRSRC resource.<br />
     1599Operation:<br />
     1600<code>*(UINT16*)VMEM(SRSRC, VADDR(1:2), SOFFSET, OFFSET) = VDATA&gt;&gt;16</code></p>
    13551601}}}