| 1277 | <h4>DS_APPEND</h4> |
| 1278 | <p>Opcode: 62 (0x3e) for GCN 1.0/1.1; 190 (0xbe) GCN 1.2<br /> |
| 1279 | Syntax: DS_APPEND VDST [OFFSET:OFFSET]<br /> |
| 1280 | Description: Append entries to buffer. This instruction increments 32-bit value in |
| 1281 | LDS/GDS at address OFFSET&~3 by number of the active threads, and |
| 1282 | store previous value from LDS/GDS at this same address into VDST. |
| 1283 | Operation:<br /> |
| 1284 | <code>UINT32* V = (UINT32*)(DS + (OFFSET&~3)) |
| 1285 | VDST = *V // scalar operation |
| 1286 | *V += BITCOUNT(EXEC) // scalar operation</code></p> |
| 1287 | <h4>DS_CONSUME</h4> |
| 1288 | <p>Opcode: 61 (0x3d) for GCN 1.0/1.1; 189 (0xbd) GCN 1.2<br /> |
| 1289 | Syntax: DS_CONSUME VDST [OFFSET:OFFSET]<br /> |
| 1290 | Description: Consume entries to buffer. This instruction increments 32-bit value in |
| 1291 | LDS/GDS at address OFFSET&~3 by number of the active threads, and |
| 1292 | store previous value from LDS/GDS at this same address into VDST. |
| 1293 | Operation:<br /> |
| 1294 | <code>UINT32* V = (UINT32*)(DS + (OFFSET&~3)) |
| 1295 | VDST = *V // scalar operation |
| 1296 | *V -= BITCOUNT(EXEC) // scalar operation</code></p> |