Changes between Version 18 and Version 19 of GcnInstrsDs
- Timestamp:
- 05/22/16 12:01:04 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsDs
v18 v19 1918 1918 <code>UINT64* V = (UINT64*)(DS + ((ADDR+OFFSET)&~7)) 1919 1919 VDST = *V; *V = (*V & ~VDATA0) | VDATA1 // atomic operation</code></p> 1920 <h4>DS_NOP</h4> 1921 <p>Opcode: 20 (0x14) for GCN 1.1/1.2<br /> 1922 Syntax: DS_NOP VADDR<br /> 1923 Description: Do nothing.</p> 1920 1924 <h4>DS_OR_B32</h4> 1921 1925 <p>Opcode: 10 (0xa)<br /> … … 1978 1982 UINT64* V = (UINT64*)(DS + A) 1979 1983 *V = *V | *(UINT64*)(DS + B) // atomic operation</code></p> 1984 <h4>DS_READ_B128</h4> 1985 <p>Opcode: 255 (0xff) for GCN 1.1/1.2<br /> 1986 Syntax: DS_READ_B128 VDST(4), ADDR [OFFSET:OFFSET]<br /> 1987 Description: Read four dwords from LDS/GDS at address (ADDR+OFFSET) & ~15, 1988 store into VDST.<br /> 1989 Operation:<br /> 1990 <code>VDST[0:1] = *(UINT64*)(DS + ((ADDR+OFFSET)&~15)) 1991 VDST[2:3] = *(UINT64*)(DS + ((ADDR+OFFSET)&~15) + 8)</code></p> 1980 1992 <h4>DS_READ_B32</h4> 1981 1993 <p>Opcode: 54 (0x36)<br /> … … 1984 1996 Operation:<br /> 1985 1997 <code>VDST = *(UINT32*)(DS + ((ADDR+OFFSET)&~3))</code></p> 1998 <h4>DS_READ_B64</h4> 1999 <p>Opcode: 118 (0x76)<br /> 2000 Syntax: DS_READ_B64 VDST(2), ADDR [OFFSET:OFFSET]<br /> 2001 Description: Read two dwords from LDS/GDS at address (ADDR+OFFSET) & ~7, store into VDST.<br /> 2002 Operation:<br /> 2003 <code>VDST = *(UINT64*)(DS + ((ADDR+OFFSET)&~7))</code></p> 2004 <h4>DS_READ_B96</h4> 2005 <p>Opcode: 254 (0xfe) for GCN 1.1/1.2<br /> 2006 Syntax: DS_READ_B96 VDST(3), ADDR [OFFSET:OFFSET]<br /> 2007 Description: Read three dwords from LDS/GDS at address (ADDR+OFFSET) & ~15, 2008 store into VDST.<br /> 2009 Operation:<br /> 2010 <code>VDST[0:1] = *(UINT64*)(DS + ((ADDR+OFFSET)&~15)) 2011 VDST[2] = *(UINT32*)(DS + ((ADDR+OFFSET)&~15) + 8)</code></p> 1986 2012 <h4>DS_READ_I16</h4> 1987 2013 <p>Opcode: 59 (0x3b)<br /> … … 2024 2050 Syntax: DS_READ2_B64 VDST(4), ADDR [OFFSET0:OFFSET0] [OFFSET1:OFFSET1]<br /> 2025 2051 Description: Read 64-bit value from LDS/GDS at address (ADDR+OFFSET0*8) & ~7, 2026 and second value at address (ADDR+OFFSET1* 4) & ~3, and store these values into VDST.<br />2052 and second value at address (ADDR+OFFSET1*8) & ~7, and store these values into VDST.<br /> 2027 2053 Operation:<br /> 2028 2054 <code>UINT64* V0 = (UINT64*)(DS + (ADDR + OFFSET0*8)&~7) … … 2190 2216 } 2191 2217 VDST[LANEID] = (EXEC & (1ULL<<INLANEID)) ? ADDR[INLANEID] : 0</code></p> 2218 <h4>DS_WRAP_RTN_B32</h4> 2219 <p>Opcode: 52 (0x34) for GCN 1.1/1.2<br /> 2220 Syntax: DS_WRAP_RTN_B32 VDST, ADDR, VDATA0, VDATA1 [OFFSET:OFFSET]<br /> 2221 Description: Compare unsigned 32-bit value from LDS/GDS at address A and D0. If value from 2222 LDS/GDS is not less than VDATA0 value, then subtract VDATA0 from this value and store 2223 result into LDS/GDS. Otherwise add VDATA1 to LDS/GDS value and store into LDS/GDS. 2224 Previous value from LDS/GDS are stored in VDST. Operation is atomic.<br /> 2225 Operation:<br /> 2226 <code>UINT32 A = (UINT32*)(DS + ((ADDR+OFFSET)&~3)) 2227 VDST = *V; *V = (*V >= VDATA0) ? (*V-VDATA0) : (*V+VDATA1) // atomic operation</code></p> 2228 <h4>DS_WRITE_B128</h4> 2229 <p>Opcode: 223 (0xdf)for GCN 1.1/1.2<br /> 2230 Syntax: DS_WRITE_B128 ADDR, VDATA0(4) [OFFSET:OFFSET]<br /> 2231 Description: Store four dwords value from VDATA0 into LDS/GDS at address 2232 (ADDR+OFFSET) & ~15.<br /> 2233 Operation:<br /> 2234 <code>UINT64* V = (UINT64*)(DS + ((ADDR+OFFSET)&~15)) 2235 *V = VDATA0[0:1] 2236 *(V+1) = VDATA0[2:3]</code></p> 2192 2237 <h4>DS_WRITE_B16</h4> 2193 2238 <p>Opcode: 31 (0x1f)<br /> … … 2218 2263 <code>UINT8* V = (UINT8*)(DS + (ADDR+OFFSET)) 2219 2264 *V = VDATA0&0xff</code></p> 2265 <h4>DS_WRITE_B96</h4> 2266 <p>Opcode: 222 (0xde) for GCN 1.1/1.2<br /> 2267 Syntax: DS_WRITE_B96 ADDR, VDATA0(3) [OFFSET:OFFSET]<br /> 2268 Description: Store three dwords value from VDATA0 into LDS/GDS at address 2269 (ADDR+OFFSET) & ~15.<br /> 2270 Operation:<br /> 2271 <code>UINT32* V = (UINT64*)(DS + ((ADDR+OFFSET)&~15)) 2272 *(UINT64*)V = VDATA0[0:1] 2273 *(V+2) = VDATA0[2]</code></p> 2220 2274 <h4>DS_WRITE_SRC2_B32</h4> 2221 2275 <p>Opcode: 141 (0x8d)<br />