Changes between Version 10 and Version 11 of GcnInstrsSmem
- Timestamp:
- 11/24/17 21:00:36 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsSmem
v10 v11 61 61 <td>32-52</td> 62 62 <td>OFFSET</td> 63 <td> Unsigned 21-bit byte offset or SGPR number (byte offset) (GCN 1.4)</td>63 <td>Signed 21-bit byte offset or SGPR number (byte offset) (GCN 1.4)</td> 64 64 </tr> 65 65 <tr> … … 70 70 </tbody> 71 71 </table> 72 <p>Value of the IMM determines meaning of the OFFSET field :</p>72 <p>Value of the IMM determines meaning of the OFFSET field (GCN 1.2):</p> 73 73 <ul> 74 74 <li>IMM=1 - OFFSET holds a byte offset to SBASE.</li> 75 75 <li>IMM=0 - OFFSET holds number of SGPR that holds byte offset to SBASE.</li> 76 76 </ul> 77 <p>For S_LOAD_DWORD* instructions, 2 SBASE SGPRs holds an base 64-bit address. 77 <p>Value of the IMM and SOE determines encoding of OFFSET and SGPR offset (GCN 1.4):</p> 78 <table> 79 <thead> 80 <tr> 81 <th>IMM</th> 82 <th>SOE</th> 83 <th>Address</th> 84 <th>Syntax</th> 85 </tr> 86 </thead> 87 <tbody> 88 <tr> 89 <td>0</td> 90 <td>0</td> 91 <td>SGPR[base] + SGPR[OFFSET]</td> 92 <td></td> 93 </tr> 94 <tr> 95 <td>0</td> 96 <td>1</td> 97 <td>SGPR[base] + SGPR[SOFFSET]</td> 98 <td></td> 99 </tr> 100 <tr> 101 <td>1</td> 102 <td>0</td> 103 <td>SGPR[base] + OFFSET</td> 104 <td></td> 105 </tr> 106 <tr> 107 <td>1</td> 108 <td>1</td> 109 <td>SGPR[base] + OFFSET + SGPR[SOFFSET]</td> 110 <td></td> 111 </tr> 112 </tbody> 113 </table> 114 <p>For S_LOAD_DWORD* instructions, 2 SBASE SGPRs holds a base 64-bit address. 78 115 For S_BUFFER_LOAD_DWORD* instructions, 4 SBASE SGPRs holds a 79 116 buffer descriptor. In this case, SBASE must be a multipla of 2. … … 87 124 <li>LGKM_CNT incremented by two for every fetch of two or more Dwords</li> 88 125 </ul> 126 <p>Instruction syntax: INSTRUCTION SDATA, SBASE(2,4), OFFSET|SGPR [MODIFIERS]</p> 127 <p>Modifiers can be supplied in any order. Modifiers list: GLC, NV (GCN 1.4), 128 OFFSET:OFFSET (GCN 1.4).</p> 89 129 <p>NOTE: Between setting third dword from buffer resource and S_BUFFER_* instruction 90 130 is required least one instruction (vector or scalar) due to delay.</p> … … 131 171 </tr> 132 172 <tr> 173 <td>5 (0x5)</td> 174 <td></td> 175 <td>✓</td> 176 <td>S_SCRATCH_LOAD_DWORD</td> 177 </tr> 178 <tr> 179 <td>6 (0x6)</td> 180 <td></td> 181 <td>✓</td> 182 <td>S_SCRATCH_LOAD_DWORDX2</td> 183 </tr> 184 <tr> 185 <td>7 (0x7)</td> 186 <td></td> 187 <td>✓</td> 188 <td>S_SCRATCH_LOAD_DWORDX4</td> 189 </tr> 190 <tr> 133 191 <td>8 (0x8)</td> 134 192 <td>✓</td> … … 179 237 </tr> 180 238 <tr> 239 <td>21 (0x15)</td> 240 <td></td> 241 <td>✓</td> 242 <td>S_SCRATCH_STORE_DWORD</td> 243 </tr> 244 <tr> 245 <td>22 (0x16)</td> 246 <td></td> 247 <td>✓</td> 248 <td>S_SCRATCH_STORE_DWORDX2</td> 249 </tr> 250 <tr> 251 <td>23 (0x17)</td> 252 <td></td> 253 <td>✓</td> 254 <td>S_SCRATCH_STORE_DWORDX4</td> 255 </tr> 256 <tr> 181 257 <td>24 (0x18)</td> 182 258 <td>✓</td> … … 191 267 </tr> 192 268 <tr> 193 <td>2 7(0x1a)</td>269 <td>26 (0x1a)</td> 194 270 <td>✓</td> 195 271 <td>✓</td>