Changes between Version 3 and Version 4 of GcnInstrsSmem
- Timestamp:
- 07/19/17 20:00:27 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsSmem
v3 v4 183 183 SBASE is buffer descriptor.<br /> 184 184 Operation:<br /> 185 <code>SDATA = *(UINT32*)(SMEM + (OFFSET & 3))</code></p>185 <code>SDATA = *(UINT32*)(SMEM + (OFFSET & ~3))</code></p> 186 186 <h4>S_BUFFER_LOAD_DWORDX16</h4> 187 187 <p>Opcode: 12 (0xc)<br /> … … 191 191 Operation:<br /> 192 192 <code>for (BYTE i = 0; i < 16; i++) 193 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>193 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 194 194 <h4>S_BUFFER_LOAD_DWORDX2</h4> 195 195 <p>Opcode: 9 (0x9)<br /> … … 198 198 SBASE is buffer descriptor.<br /> 199 199 Operation:<br /> 200 <code>SDATA = *(UINT64*)(SMEM + (OFFSET & 3))</code></p>200 <code>SDATA = *(UINT64*)(SMEM + (OFFSET & ~3))</code></p> 201 201 <h4>S_BUFFER_LOAD_DWORDX4</h4> 202 202 <p>Opcode: 10 (0xa)<br /> … … 206 206 Operation:<br /> 207 207 <code>for (BYTE i = 0; i < 4; i++) 208 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>208 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 209 209 <h4>S_BUFFER_LOAD_DWORDX8</h4> 210 210 <p>Opcode: 11 (0xb)<br /> … … 214 214 Operation:<br /> 215 215 <code>for (BYTE i = 0; i < 8; i++) 216 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>216 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 217 217 <h4>S_BUFFER_STORE_DWORD</h4> 218 218 <p>Opcode: 24 (0x18)<br /> … … 221 221 SBASE is buffer descriptor.<br /> 222 222 Operation:<br /> 223 <code>*(UINT32*)(SMEM + (OFFSET & 3)) = SDATA</code></p>223 <code>*(UINT32*)(SMEM + (OFFSET & ~3)) = SDATA</code></p> 224 224 <h4>S_BUFFER_STORE_DWORDX2</h4> 225 225 <p>Opcode: 25 (0x19)<br /> … … 228 228 SBASE is buffer descriptor.<br /> 229 229 Operation:<br /> 230 <code>*(UINT64*)(SMEM + (OFFSET & 3)) = SDATA</code></p>230 <code>*(UINT64*)(SMEM + (OFFSET & ~3)) = SDATA</code></p> 231 231 <h4>S_BUFFER_STORE_DWORDX4</h4> 232 232 <p>Opcode: 26 (0x1a)<br /> … … 236 236 Operation:<br /> 237 237 <code>for (BYTE i = 0; i < 4; i++) 238 *(UINT32*)(SMEM + i*4 + (OFFSET & 3)) = SDATA</code></p>238 *(UINT32*)(SMEM + i*4 + (OFFSET & ~3)) = SDATA</code></p> 239 239 <h4>S_DCACHE_INV</h4> 240 240 <p>Opcode: 32 (0x20)<br /> … … 250 250 Description: Load single dword from read-only memory through constant cache (kcache).<br /> 251 251 Operation:<br /> 252 <code>SDATA = *(UINT32*)(SMEM + (OFFSET & 3))</code></p>252 <code>SDATA = *(UINT32*)(SMEM + (OFFSET & ~3))</code></p> 253 253 <h4>S_LOAD_DWORDX16</h4> 254 254 <p>Opcode: 4 (0x4)<br /> … … 257 257 Operation:<br /> 258 258 <code>for (BYTE i = 0; i < 16; i++) 259 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>259 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 260 260 <h4>S_LOAD_DWORDX2</h4> 261 261 <p>Opcode: 1 (0x1)<br /> 262 262 Syntax: S_LOAD_DWORDX2 SDATA(2), SBASE(2), OFFSET<br /> 263 263 Description: Load two dwords from read-only memory through constant cache (kcache).<br /> 264 <code>SDATA = *(UINT64*)(SMEM + (OFFSET & 3))</code></p>264 <code>SDATA = *(UINT64*)(SMEM + (OFFSET & ~3))</code></p> 265 265 <h4>S_LOAD_DWORDX4</h4> 266 266 <p>Opcode: 2 (0x2)<br /> … … 269 269 Operation:<br /> 270 270 <code>for (BYTE i = 0; i < 4; i++) 271 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>271 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 272 272 <h4>S_LOAD_DWORDX8</h4> 273 273 <p>Opcode: 3 (0x3)<br /> … … 276 276 Operation:<br /> 277 277 <code>for (BYTE i = 0; i < 8; i++) 278 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & 3))</code></p>278 SDATA[i] = *(UINT32*)(SMEM + i*4 + (OFFSET & ~3))</code></p> 279 279 <h4>S_MEMREALTIME</h4> 280 280 <p>Opcode: 37 (0x25)<br /> … … 298 298 SBASE is buffer descriptor.<br /> 299 299 Operation:<br /> 300 <code>*(UINT32*)(SMEM + (OFFSET & 3)) = SDATA</code></p>300 <code>*(UINT32*)(SMEM + (OFFSET & ~3)) = SDATA</code></p> 301 301 <h4>S_STORE_DWORDX2</h4> 302 302 <p>Opcode: 17 (0x11)<br /> … … 304 304 Description: Store two dwords to memory. It accepts only offset as M0 or any immediate.<br /> 305 305 Operation:<br /> 306 <code>*(UINT64*)(SMEM + (OFFSET & 3)) = SDATA</code></p>306 <code>*(UINT64*)(SMEM + (OFFSET & ~3)) = SDATA</code></p> 307 307 <h4>S_STORE_DWORDX4</h4> 308 308 <p>Opcode: 18 (0x12)<br /> … … 311 311 Operation:<br /> 312 312 <code>for (BYTE i = 0; i < 4; i++) 313 *(UINT32*)(SMEM + i*4 + (OFFSET & 3)) = SDATA</code></p>313 *(UINT32*)(SMEM + i*4 + (OFFSET & ~3)) = SDATA</code></p> 314 314 }}}