Changes between Version 4 and Version 5 of GcnInstrsSmrd
- Timestamp:
- 12/23/15 17:00:17 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsSmrd
v4 v5 50 50 <li>IMM=0 - OFFSET holds number of SGPR that holds byte offset to SBASE.</li> 51 51 </ul> 52 <p>For S_LOAD_DWORD <em>instructions, 2 SBASE SGPRs holds an base 48-bit address and a52 <p>For S_LOAD_DWORD* instructions, 2 SBASE SGPRs holds an base 48-bit address and a 53 53 16-bit size. 54 For S_BUFFER_LOAD_DWORD </em>instructions, 4 SBASE SGPRs holds a buffer descriptor.54 For S_BUFFER_LOAD_DWORD* instructions, 4 SBASE SGPRs holds a buffer descriptor. 55 55 In this case, SBASE must be a multipla of 2.</p> 56 56 <p>The SMRD instructions can return the resul data out of the order. Any SMRD operation … … 144 144 Syntax: S_BUFFER_LOAD_DWORD SDST, SBASE(4), OFFSET<br /> 145 145 Description: Load single dword from read-only memory through constant cache (kcache). 146 SBASE is buffer descriptor.</p> 146 SBASE is buffer descriptor.<br /> 147 Operation:<br /> 148 <code>SDST = *(UINT32*)(SMRD + (OFFSET & 3))</code></p> 147 149 <h4>S_BUFFER_LOAD_DWORDX16</h4> 148 150 <p>Opcode: 12 (0xc)<br /> 149 151 Syntax: S_BUFFER_LOAD_DWORDX16 SDST(16), SBASE(4), OFFSET<br /> 150 152 Description: Load 16 dwords from read-only memory through constant cache (kcache). 151 SBASE is buffer descriptor.</p> 153 SBASE is buffer descriptor.<br /> 154 Operation:<br /> 155 <code>for (BYTE i = 0; i < 16; i++) 156 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 152 157 <h4>S_BUFFER_LOAD_DWORDX2</h4> 153 158 <p>Opcode: 9 (0x9)<br /> 154 159 Syntax: S_BUFFER_LOAD_DWORDX2 SDST(2), SBASE(4), OFFSET<br /> 155 160 Description: Load two dwords from read-only memory through constant cache (kcache). 156 SBASE is buffer descriptor.</p> 161 SBASE is buffer descriptor.<br /> 162 Operation:<br /> 163 <code>SDST = *(UINT64*)(SMRD + (OFFSET & 3))</code></p> 157 164 <h4>S_BUFFER_LOAD_DWORDX4</h4> 158 165 <p>Opcode: 10 (0xa)<br /> 159 166 Syntax: S_BUFFER_LOAD_DWORDX4 SDST(4), SBASE(4), OFFSET<br /> 160 167 Description: Load four dwords from read-only memory through constant cache (kcache). 161 SBASE is buffer descriptor.</p> 168 SBASE is buffer descriptor.<br /> 169 Operation:<br /> 170 <code>for (BYTE i = 0; i < 4; i++) 171 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 162 172 <h4>S_BUFFER_LOAD_DWORDX8</h4> 163 173 <p>Opcode: 11 (0xb)<br /> 164 174 Syntax: S_BUFFER_LOAD_DWORDX8 SDST(8), SBASE(4), OFFSET<br /> 165 175 Description: Load eight dwords from read-only memory through constant cache (kcache). 166 SBASE is buffer descriptor.</p> 176 SBASE is buffer descriptor.<br /> 177 Operation:<br /> 178 <code>for (BYTE i = 0; i < 8; i++) 179 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 167 180 <h4>S_DCACHE_INV</h4> 168 181 <p>Opcode: 31 (0x1f)<br /> … … 176 189 <p>Opcode: 0 (0x0)<br /> 177 190 Syntax: S_LOAD_DWORD SDST, SBASE(2), OFFSET<br /> 178 Description: Load single dword from read-only memory through constant cache (kcache).</p> 191 Description: Load single dword from read-only memory through constant cache (kcache).<br /> 192 Operation:<br /> 193 <code>SDST = *(UINT32*)(SMRD + (OFFSET & 3))</code></p> 179 194 <h4>S_LOAD_DWORDX16</h4> 180 195 <p>Opcode: 4 (0x4)<br /> 181 196 Syntax: S_LOAD_DWORDX16 SDST(16), SBASE(2), OFFSET<br /> 182 Description: Load 16 dwords from read-only memory through constant cache (kcache).</p> 197 Description: Load 16 dwords from read-only memory through constant cache (kcache).<br /> 198 Operation:<br /> 199 <code>for (BYTE i = 0; i < 16; i++) 200 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 183 201 <h4>S_LOAD_DWORDX2</h4> 184 202 <p>Opcode: 1 (0x1)<br /> 185 203 Syntax: S_LOAD_DWORDX2 SDST(2), SBASE(2), OFFSET<br /> 186 Description: Load two dwords from read-only memory through constant cache (kcache).</p> 204 Description: Load two dwords from read-only memory through constant cache (kcache).<br /> 205 <code>SDST = *(UINT64*)(SMRD + (OFFSET & 3))</code></p> 187 206 <h4>S_LOAD_DWORDX4</h4> 188 207 <p>Opcode: 2 (0x2)<br /> 189 208 Syntax: S_LOAD_DWORDX4 SDST(4), SBASE(2), OFFSET<br /> 190 Description: Load four dwords from read-only memory through constant cache (kcache).</p> 209 Description: Load four dwords from read-only memory through constant cache (kcache).<br /> 210 Operation:<br /> 211 <code>for (BYTE i = 0; i < 4; i++) 212 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 191 213 <h4>S_LOAD_DWORDX8</h4> 192 214 <p>Opcode: 3 (0x3)<br /> 193 215 Syntax: S_LOAD_DWORDX8 SDST(8), SBASE(2), OFFSET<br /> 194 Description: Load eight dwords from read-only memory through constant cache (kcache).</p> 216 Description: Load eight dwords from read-only memory through constant cache (kcache).<br /> 217 Operation:<br /> 218 <code>for (BYTE i = 0; i < 8; i++) 219 SDST[i] = *(UINT32*)(SMRD + i*4 + (OFFSET & 3))</code></p> 195 220 <h4>S_MEMTIME</h4> 196 221 <p>Opcode: 30 (0x1e)<br />