Changes between Version 11 and Version 12 of GcnInstrsSop1
- Timestamp:
- 11/23/17 21:01:18 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsSop1
v11 v12 44 44 <th>Mnemonic (GCN1.0/1.1)</th> 45 45 <th>Mnemonic (GCN 1.2)</th> 46 <th>Mnemonic (GCN 1.4)</th> 46 47 </tr> 47 48 </thead> … … 51 52 <td>--</td> 52 53 <td>S_MOV_B32</td> 54 <td>S_MOV_B32</td> 53 55 </tr> 54 56 <tr> … … 56 58 <td>--</td> 57 59 <td>S_MOV_B64</td> 60 <td>S_MOV_B64</td> 58 61 </tr> 59 62 <tr> 60 63 <td>2 (0x2)</td> 61 64 <td>--</td> 65 <td>S_CMOV_B32</td> 62 66 <td>S_CMOV_B32</td> 63 67 </tr> … … 66 70 <td>S_MOV_B32</td> 67 71 <td>S_CMOV_B64</td> 72 <td>S_CMOV_B64</td> 68 73 </tr> 69 74 <tr> … … 71 76 <td>S_MOV_B64</td> 72 77 <td>S_NOT_B32</td> 78 <td>S_NOT_B32</td> 73 79 </tr> 74 80 <tr> … … 76 82 <td>S_CMOV_B32</td> 77 83 <td>S_NOT_B64</td> 84 <td>S_NOT_B64</td> 78 85 </tr> 79 86 <tr> … … 81 88 <td>S_CMOV_B64</td> 82 89 <td>S_WQM_B32</td> 90 <td>S_WQM_B32</td> 83 91 </tr> 84 92 <tr> … … 86 94 <td>S_NOT_B32</td> 87 95 <td>S_WQM_B64</td> 96 <td>S_WQM_B64</td> 88 97 </tr> 89 98 <tr> … … 91 100 <td>S_NOT_B64</td> 92 101 <td>S_BREV_B32</td> 102 <td>S_BREV_B32</td> 93 103 </tr> 94 104 <tr> … … 96 106 <td>S_WQM_B32</td> 97 107 <td>S_BREV_B64</td> 108 <td>S_BREV_B64</td> 98 109 </tr> 99 110 <tr> … … 101 112 <td>S_WQM_B64</td> 102 113 <td>S_BCNT0_I32_B32</td> 114 <td>S_BCNT0_I32_B32</td> 103 115 </tr> 104 116 <tr> … … 106 118 <td>S_BREV_B32</td> 107 119 <td>S_BCNT0_I32_B64</td> 120 <td>S_BCNT0_I32_B64</td> 108 121 </tr> 109 122 <tr> … … 111 124 <td>S_BREV_B64</td> 112 125 <td>S_BCNT1_I32_B32</td> 126 <td>S_BCNT1_I32_B32</td> 113 127 </tr> 114 128 <tr> … … 116 130 <td>S_BCNT0_I32_B32</td> 117 131 <td>S_BCNT1_I32_B64</td> 132 <td>S_BCNT1_I32_B64</td> 118 133 </tr> 119 134 <tr> … … 121 136 <td>S_BCNT0_I32_B64</td> 122 137 <td>S_FF0_I32_B32</td> 138 <td>S_FF0_I32_B32</td> 123 139 </tr> 124 140 <tr> … … 126 142 <td>S_BCNT1_I32_B32</td> 127 143 <td>S_FF0_I32_B64</td> 144 <td>S_FF0_I32_B64</td> 128 145 </tr> 129 146 <tr> … … 131 148 <td>S_BCNT1_I32_B64</td> 132 149 <td>S_FF1_I32_B32</td> 150 <td>S_FF1_I32_B32</td> 133 151 </tr> 134 152 <tr> … … 136 154 <td>S_FF0_I32_B32</td> 137 155 <td>S_FF1_I32_B64</td> 156 <td>S_FF1_I32_B64</td> 138 157 </tr> 139 158 <tr> … … 141 160 <td>S_FF0_I32_B64</td> 142 161 <td>S_FLBIT_I32_B32</td> 162 <td>S_FLBIT_I32_B32</td> 143 163 </tr> 144 164 <tr> … … 146 166 <td>S_FF1_I32_B32</td> 147 167 <td>S_FLBIT_I32_B64</td> 168 <td>S_FLBIT_I32_B64</td> 148 169 </tr> 149 170 <tr> … … 151 172 <td>S_FF1_I32_B64</td> 152 173 <td>S_FLBIT_I32</td> 174 <td>S_FLBIT_I32</td> 153 175 </tr> 154 176 <tr> … … 156 178 <td>S_FLBIT_I32_B32</td> 157 179 <td>S_FLBIT_I32_I64</td> 180 <td>S_FLBIT_I32_I64</td> 158 181 </tr> 159 182 <tr> … … 161 184 <td>S_FLBIT_I32_B64</td> 162 185 <td>S_SEXT_I32_I8</td> 186 <td>S_SEXT_I32_I8</td> 163 187 </tr> 164 188 <tr> … … 166 190 <td>S_FLBIT_I32</td> 167 191 <td>S_SEXT_I32_I16</td> 192 <td>S_SEXT_I32_I16</td> 168 193 </tr> 169 194 <tr> … … 171 196 <td>S_FLBIT_I32_I64</td> 172 197 <td>S_BITSET0_B32</td> 198 <td>S_BITSET0_B32</td> 173 199 </tr> 174 200 <tr> … … 176 202 <td>S_SEXT_I32_I8</td> 177 203 <td>S_BITSET0_B64</td> 204 <td>S_BITSET0_B64</td> 178 205 </tr> 179 206 <tr> … … 181 208 <td>S_SEXT_I32_I16</td> 182 209 <td>S_BITSET1_B32</td> 210 <td>S_BITSET1_B32</td> 183 211 </tr> 184 212 <tr> … … 186 214 <td>S_BITSET0_B32</td> 187 215 <td>S_BITSET1_B64</td> 216 <td>S_BITSET1_B64</td> 188 217 </tr> 189 218 <tr> … … 191 220 <td>S_BITSET0_B64</td> 192 221 <td>S_GETPC_B64</td> 222 <td>S_GETPC_B64</td> 193 223 </tr> 194 224 <tr> … … 196 226 <td>S_BITSET1_B32</td> 197 227 <td>S_SETPC_B64</td> 228 <td>S_SETPC_B64</td> 198 229 </tr> 199 230 <tr> … … 201 232 <td>S_BITSET1_B64</td> 202 233 <td>S_SWAPPC_B64</td> 234 <td>S_SWAPPC_B64</td> 203 235 </tr> 204 236 <tr> … … 206 238 <td>S_GETPC_B64</td> 207 239 <td>S_RFE_B64</td> 240 <td>S_RFE_B64</td> 208 241 </tr> 209 242 <tr> … … 211 244 <td>S_SETPC_B64</td> 212 245 <td>S_AND_SAVEEXEC_B64</td> 246 <td>S_AND_SAVEEXEC_B64</td> 213 247 </tr> 214 248 <tr> … … 216 250 <td>S_SWAPPC_B64</td> 217 251 <td>S_OR_SAVEEXEC_B64</td> 252 <td>S_OR_SAVEEXEC_B64</td> 218 253 </tr> 219 254 <tr> … … 221 256 <td>S_RFE_B64</td> 222 257 <td>S_XOR_SAVEEXEC_B64</td> 258 <td>S_XOR_SAVEEXEC_B64</td> 223 259 </tr> 224 260 <tr> 225 261 <td>35 (0x23)</td> 226 262 <td>--</td> 263 <td>S_ANDN2_SAVEEXEC_B64</td> 227 264 <td>S_ANDN2_SAVEEXEC_B64</td> 228 265 </tr> … … 231 268 <td>S_AND_SAVEEXEC_B64</td> 232 269 <td>S_ORN2_SAVEEXEC_B64</td> 270 <td>S_ORN2_SAVEEXEC_B64</td> 233 271 </tr> 234 272 <tr> … … 236 274 <td>S_OR_SAVEEXEC_B64</td> 237 275 <td>S_NAND_SAVEEXEC_B64</td> 276 <td>S_NAND_SAVEEXEC_B64</td> 238 277 </tr> 239 278 <tr> … … 241 280 <td>S_XOR_SAVEEXEC_B64</td> 242 281 <td>S_NOR_SAVEEXEC_B64</td> 282 <td>S_NOR_SAVEEXEC_B64</td> 243 283 </tr> 244 284 <tr> … … 246 286 <td>S_ANDN2_SAVEEXEC_B64</td> 247 287 <td>S_XNOR_SAVEEXEC_B64</td> 288 <td>S_XNOR_SAVEEXEC_B64</td> 248 289 </tr> 249 290 <tr> … … 251 292 <td>S_ORN2_SAVEEXEC_B64</td> 252 293 <td>S_QUADMASK_B32</td> 294 <td>S_QUADMASK_B32</td> 253 295 </tr> 254 296 <tr> … … 256 298 <td>S_NAND_SAVEEXEC_B64</td> 257 299 <td>S_QUADMASK_B64</td> 300 <td>S_QUADMASK_B64</td> 258 301 </tr> 259 302 <tr> … … 261 304 <td>S_NOR_SAVEEXEC_B64</td> 262 305 <td>S_MOVRELS_B32</td> 306 <td>S_MOVRELS_B32</td> 263 307 </tr> 264 308 <tr> … … 266 310 <td>S_XNOR_SAVEEXEC_B64</td> 267 311 <td>S_MOVRELS_B64</td> 312 <td>S_MOVRELS_B64</td> 268 313 </tr> 269 314 <tr> … … 271 316 <td>S_QUADMASK_B32</td> 272 317 <td>S_MOVRELD_B32</td> 318 <td>S_MOVRELD_B32</td> 273 319 </tr> 274 320 <tr> … … 276 322 <td>S_QUADMASK_B64</td> 277 323 <td>S_MOVRELD_B64</td> 324 <td>S_MOVRELD_B64</td> 278 325 </tr> 279 326 <tr> … … 281 328 <td>S_MOVRELS_B32</td> 282 329 <td>S_CBRANCH_JOIN</td> 330 <td>S_CBRANCH_JOIN</td> 283 331 </tr> 284 332 <tr> … … 286 334 <td>S_MOVRELS_B64</td> 287 335 <td>S_MOV_REGRD_B32</td> 336 <td>S_MOV_REGRD_B32</td> 288 337 </tr> 289 338 <tr> … … 291 340 <td>S_MOVRELD_B32</td> 292 341 <td>S_ABS_I32</td> 342 <td>S_ABS_I32</td> 293 343 </tr> 294 344 <tr> … … 296 346 <td>S_MOVRELD_B64</td> 297 347 <td>S_MOV_FED_B32</td> 348 <td>S_MOV_FED_B32</td> 298 349 </tr> 299 350 <tr> … … 301 352 <td>S_CBRANCH_JOIN</td> 302 353 <td>S_SET_GPR_IDX_IDX</td> 354 <td>S_SET_GPR_IDX_IDX</td> 303 355 </tr> 304 356 <tr> … … 306 358 <td>S_MOV_REGRD_B32</td> 307 359 <td>--</td> 360 <td>S_ANDN1_SAVEEXEC_B64</td> 308 361 </tr> 309 362 <tr> … … 311 364 <td>S_ABS_I32</td> 312 365 <td>--</td> 366 <td>S_ORN1_SAVEEXEC_B64</td> 313 367 </tr> 314 368 <tr> … … 316 370 <td>S_MOV_FED_B32</td> 317 371 <td>--</td> 372 <td>S_ANDN1_WREXEC_B64</td> 373 </tr> 374 <tr> 375 <td>54 (0x36)</td> 376 <td>--</td> 377 <td>--</td> 378 <td>S_ANDN2_WREXEC_B64</td> 379 </tr> 380 <tr> 381 <td>55 (0x37)</td> 382 <td>--</td> 383 <td>--</td> 384 <td>S_BITREPLICATE_B64_B32</td> 318 385 </tr> 319 386 </tbody> … … 322 389 <p>Alphabetically sorted instruction list:</p> 323 390 <h4>S_ABS_I32</h4> 324 <p>Opcode: 52 (0x34) for GCN 1.0/1.1; 48 (0x30) for GCN 1.2 <br />391 <p>Opcode: 52 (0x34) for GCN 1.0/1.1; 48 (0x30) for GCN 1.2/1.4<br /> 325 392 Syntax: S_ABS_B32 SDST, SSRC0<br /> 326 393 Description: Store absolute signed value of the SSRC0 into SDST. … … 330 397 SCC = SDST!=0</code></p> 331 398 <h4>S_AND_SAVEEXEC_B64</h4> 332 <p>Opcode: 36 (0x24) for GCN 1.0/1.1; 32 (0x20) for GCN 1.2 <br />399 <p>Opcode: 36 (0x24) for GCN 1.0/1.1; 32 (0x20) for GCN 1.2/1.4<br /> 333 400 Syntax: S_AND_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 334 401 Description: Store EXEC register to SDST. Make bitwise AND on SSRC0 and EXEC … … 339 406 EXEC = SSRC0 & EXEC 340 407 SCC = EXEC!=0</code></p> 408 <h4>S_ANDN1_SAVEEXEC_B64</h4> 409 <p>Opcode: 51 (0x33) for GCN 1.4<br /> 410 Syntax: S_ANDN2_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 411 Description: Store EXEC register to SDST. Make bitwise AND on negated SSRC0 and EXEC 412 and store result to EXEC. If result is non-zero, store 1 to SCC, otherwise store 0 to SCC. 413 SDST and SSRC0 are 64-bit.<br /> 414 Operation:<br /> 415 <code>SDST = EXEC 416 EXEC = ~SSRC0 & EXEC 417 SCC = EXEC!=0</code></p> 418 <h4>S_ANDN1_WREXEC_B64</h4> 419 <p>Opcode: 53 (0x35) for GCN 1.4<br /> 420 Syntax: S_ANDN1_WREXEC_B64 SDST(2), SSRC0(2)<br /> 421 Description: Make bitwise AND on negated SSRC0 and EXEC 422 and store result to EXEC and SDST. If result is non-zero, store 1 to SCC, 423 otherwise store 0 to SCC. SDST and SSRC0 are 64-bit.<br /> 424 Operation:<br /> 425 <code>EXEC = ~SSRC0 & EXEC 426 SDST = EXEC 427 SCC = EXEC!=0</code></p> 341 428 <h4>S_ANDN2_SAVEEXEC_B64</h4> 342 <p>Opcode: 39 (0x27) for GCN 1.0/1.1; 35 (0x23) for GCN 1.2 <br />429 <p>Opcode: 39 (0x27) for GCN 1.0/1.1; 35 (0x23) for GCN 1.2/1.4<br /> 343 430 Syntax: S_ANDN2_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 344 431 Description: Store EXEC register to SDST. Make bitwise AND on SSRC0 and negated EXEC … … 349 436 EXEC = SSRC0 & ~EXEC 350 437 SCC = EXEC!=0</code></p> 438 <h4>S_ANDN2_WREXEC_B64</h4> 439 <p>Opcode: 54 (0x36) for GCN 1.4<br /> 440 Syntax: S_ANDN2_WREXEC_B64 SDST(2), SSRC0(2)<br /> 441 Description: Make bitwise AND on SSRC0 and negated EXEC 442 and store result to EXEC and SDST. If result is non-zero, store 1 to SCC, 443 otherwise store 0 to SCC. SDST and SSRC0 are 64-bit.<br /> 444 Operation:<br /> 445 <code>EXEC = SSRC0 & ~EXEC 446 SDST = EXEC 447 SCC = EXEC!=0</code></p> 351 448 <h4>S_BCNT0_I32_B32</h4> 352 <p>Opcode: 13 (0xd) for GCN 1.0/1.1; 10 (0xa) for GCN 1.2 <br />449 <p>Opcode: 13 (0xd) for GCN 1.0/1.1; 10 (0xa) for GCN 1.2/1.4<br /> 353 450 Syntax: S_BCNT0_I32_B32 SDST, SSRC0<br /> 354 451 Description: Count zero bits in SSRC0 and store result to SDST. … … 358 455 SCC = SDST!=0</code></p> 359 456 <h4>S_BCNT0_I32_B64</h4> 360 <p>Opcode: 14 (0xd) for GCN 1.0/1.1; 11 (0xb) for GCN 1.2 <br />457 <p>Opcode: 14 (0xd) for GCN 1.0/1.1; 11 (0xb) for GCN 1.2/1.4<br /> 361 458 Syntax: S_BCNT0_I32_B64 SDST, SSRC0(2)<br /> 362 459 Description: Count zero bits in SSRC0 and store result to SDST. … … 366 463 SCC = SDST!=0</code></p> 367 464 <h4>S_BCNT1_I32_B32</h4> 368 <p>Opcode: 15 (0xf) for GCN 1.0/1.1; 12 (0xc) for GCN 1.2 <br />465 <p>Opcode: 15 (0xf) for GCN 1.0/1.1; 12 (0xc) for GCN 1.2/1.4<br /> 369 466 Syntax: S_BCNT1_I32_B64 SDST, SSRC0<br /> 370 467 Description: Count one bits in SSRC0 and store result to SDST. … … 374 471 SCC = SDST!=0</code></p> 375 472 <h4>S_BCNT1_I32_B64</h4> 376 <p>Opcode: 16 (0x10) for GCN 1.0/1.1; 13 (0xd) for GCN 1.2 <br />473 <p>Opcode: 16 (0x10) for GCN 1.0/1.1; 13 (0xd) for GCN 1.2/1.4<br /> 377 474 Syntax: S_BCNT1_I32_B64 SDST, SSRC0(2)<br /> 378 475 Description: Count one bits in SSRC0 and store result to SDST. … … 381 478 <code>SDST = BITCOUNT(SSRC0) 382 479 SCC = SDST!=0</code></p> 480 <h4>S_BITREPLICATE_B64_B32</h4> 481 <p>Opcode: 55 (0x37) for GCN 1.4<br /> 482 Syntax: S_BITREPLICATE_B64_B32 SDST(2), SSRC0<br /> 483 Description: Get bits from SSRC0 and doubles and store them to SDST.<br /> 484 Operation:<br /> 485 <code>SDST = 0 486 for (BYTE I=0; I<32; I++) 487 SDST |= (((SSRC0>>I)&1)*3)<<(I<<1)</code></p> 383 488 <h4>S_BITSET0_B32</h4> 384 <p>Opcode: 27 (0x1b) for GCN 1.0/1.1, 24 (0x18) for GCN 1.2 <br />489 <p>Opcode: 27 (0x1b) for GCN 1.0/1.1, 24 (0x18) for GCN 1.2/1.4<br /> 385 490 Syntax: S_BITSET0_B32 SDST, SSRC0<br /> 386 491 Description: Get value from SDST, clear its bit with number specified from SSRC0, and … … 389 494 <code>SDST &= ~(1U << (SSRC0&31))</code></p> 390 495 <h4>S_BITSET0_B64</h4> 391 <p>Opcode: 28 (0x1c) for GCN 1.0/1.1, 25 (0x19) for GCN 1.2 <br />496 <p>Opcode: 28 (0x1c) for GCN 1.0/1.1, 25 (0x19) for GCN 1.2/1.4<br /> 392 497 Syntax: S_BITSET0_B64 SDST(2), SSRC0<br /> 393 498 Description: Get value from SDST, clear its bit with number specified from SSRC0, and … … 396 501 <code>SDST &= ~(1ULL << (SSRC0&63))</code></p> 397 502 <h4>S_BITSET1_B32</h4> 398 <p>Opcode: 29 (0x1d) for GCN 1.0/1.1, 26 (0x1a) for GCN 1.2 <br />503 <p>Opcode: 29 (0x1d) for GCN 1.0/1.1, 26 (0x1a) for GCN 1.2/1.4<br /> 399 504 Syntax: S_BITSET1_B32 SDST, SSRC0<br /> 400 505 Description: Get value from SDST, set its bit with number specified from SSRC0, and … … 403 508 <code>SDST |= 1U << (SSRC0&31)</code></p> 404 509 <h4>S_BITSET1_B64</h4> 405 <p>Opcode: 30 (0x1e) for GCN 1.0/1.1, 27 (0x1c) for GCN 1.2 <br />510 <p>Opcode: 30 (0x1e) for GCN 1.0/1.1, 27 (0x1c) for GCN 1.2/1.4<br /> 406 511 Syntax: S_BITSET1_B64 SDST(2), SSRC0<br /> 407 512 Description: Get value from SDST, set its bit with number specified from SSRC0, and … … 410 515 <code>SDST |= 1ULL << (SSRC0&63)</code></p> 411 516 <h4>S_BREV_B32</h4> 412 <p>Opcode: 11 (0xb) for GCN 1.0/1.1; 8 (0x8) for GCN 1.2 <br />517 <p>Opcode: 11 (0xb) for GCN 1.0/1.1; 8 (0x8) for GCN 1.2/1.4<br /> 413 518 Syntax: S_BREV_B32 SDST, SSRC0<br /> 414 519 Description: Reverse bits in SSRC0 and store result to SDST. SCC is not changed.<br /> … … 416 521 <code>SDST = REVBIT(SSRC0)</code></p> 417 522 <h4>S_BREV_B64</h4> 418 <p>Opcode: 12 (0xc) for GCN 1.0/1.1; 9 (0x9) for GCN 1.2 <br />523 <p>Opcode: 12 (0xc) for GCN 1.0/1.1; 9 (0x9) for GCN 1.2/1.4<br /> 419 524 Syntax: S_BREV_B64 SDST(2), SSRC0(2)<br /> 420 525 Description: Reverse bits in SSRC0 and store result to SDST. SCC is not changed. … … 423 528 <code>SDST = REVBIT(SSRC0)</code></p> 424 529 <h4>S_CBRANCH_JOIN</h4> 425 <p>Opcode: 50 (0x32) for GCN 1.0/1.1; 46 (0x2e) for GCN 1.2 <br />530 <p>Opcode: 50 (0x32) for GCN 1.0/1.1; 46 (0x2e) for GCN 1.2/1.4<br /> 426 531 Syntax: S_CBRANCH_JOIN SSRC0<br /> 427 532 Description: Join conditional branch that begin from S_CBRANCH_*_FORK. If control stack … … 438 543 }</code></p> 439 544 <h4>S_CMOV_B32</h4> 440 <p>Opcode: 5 (0x5) for GCN 1.0/1.1; 2 (0x2) for GCN 1.2 <br />545 <p>Opcode: 5 (0x5) for GCN 1.0/1.1; 2 (0x2) for GCN 1.2/1.4<br /> 441 546 Syntax: S_CMOV_B32 SDST, SSRC0<br /> 442 547 Description: If SCC is 1, store SSRC0 into SDST, otherwise do not change SDST. … … 445 550 <code>SDST = SCC ? SSRC0 : SDST</code></p> 446 551 <h4>S_CMOV_B64</h4> 447 <p>Opcode: 6 (0x6) for GCN 1.0/1.1; 3 (0x3) for GCN 1.2 <br />552 <p>Opcode: 6 (0x6) for GCN 1.0/1.1; 3 (0x3) for GCN 1.2/1.4<br /> 448 553 Syntax: S_CMOV_B64 SDST(2), SSRC0(2)<br /> 449 554 Description: If SCC is 1, store SSRC0 into SDST, otherwise do not change SDST. … … 452 557 <code>SDST = SCC ? SSRC0 : SDST</code></p> 453 558 <h4>S_FF0_I32_B32</h4> 454 <p>Opcode: 17 (0x11) for GCN 1.0/1.1; 14 (0xe) for GCN 1.2 <br />559 <p>Opcode: 17 (0x11) for GCN 1.0/1.1; 14 (0xe) for GCN 1.2/1.4<br /> 455 560 Syntax: S_FF0_I32_B32 SDST, SSRC0<br /> 456 561 Description: Find first zero bit in SSRC0. If found, store number of bit to SDST, … … 462 567 { SDST = i; break; }</code></p> 463 568 <h4>S_FF0_I32_B64</h4> 464 <p>Opcode: 18 (0x12) for GCN 1.0/1.1; 15 (0xf) for GCN 1.2 <br />569 <p>Opcode: 18 (0x12) for GCN 1.0/1.1; 15 (0xf) for GCN 1.2/1.4<br /> 465 570 Syntax: S_FF0_I32_B64 SDST, SSRC0(2)<br /> 466 571 Description: Find first zero bit in SSRC0. If found, store number of bit to SDST, … … 472 577 { SDST = i; break; }</code></p> 473 578 <h4>S_FF1_I32_B32</h4> 474 <p>Opcode: 19 (0x13) for GCN 1.0/1.1; 16 (0x10) for GCN 1.2 <br />579 <p>Opcode: 19 (0x13) for GCN 1.0/1.1; 16 (0x10) for GCN 1.2/1.4<br /> 475 580 Syntax: S_FF1_I32_B32 SDST, SSRC0<br /> 476 581 Description: Find first one bit in SSRC0. If found, store number of bit to SDST, … … 482 587 { SDST = i; break; }</code></p> 483 588 <h4>S_FF1_I32_B64</h4> 484 <p>Opcode: 20 (0x14) for GCN 1.0/1.1; 17 (0x11) for GCN 1.2 <br />589 <p>Opcode: 20 (0x14) for GCN 1.0/1.1; 17 (0x11) for GCN 1.2/1.4<br /> 485 590 Syntax: S_FF0_I32_B64 SDST, SSRC0(2)<br /> 486 591 Description: Find first one bit in SSRC0. If found, store number of bit to SDST, … … 492 597 { SDST = i; break; }</code></p> 493 598 <h4>S_FLBIT_I32_B32</h4> 494 <p>Opcode: 21 (0x15) for GCN 1.0/1.1; 18 (0x12) for GCN 1.2 <br />599 <p>Opcode: 21 (0x15) for GCN 1.0/1.1; 18 (0x12) for GCN 1.2/1.4<br /> 495 600 Syntax: S_FLBIT_I32_B32 SDST, SSRC0<br /> 496 601 Description: Find last one bit in SSRC0. If found, store number of skipped bits to SDST, … … 502 607 { SDST = 31-i; break; }</code></p> 503 608 <h4>S_FLBIT_I32_B64</h4> 504 <p>Opcode: 22 (0x16) for GCN 1.0/1.1; 19 (0x13) for GCN 1.2 <br />609 <p>Opcode: 22 (0x16) for GCN 1.0/1.1; 19 (0x13) for GCN 1.2/1.4<br /> 505 610 Syntax: S_FLBIT_I32_B64 SDST, SSRC0(2)<br /> 506 611 Description: Find last one bit in SSRC0. If found, store number of skipped bits to SDST, … … 512 617 { SDST = 63-i; break; }</code></p> 513 618 <h4>S_FLBIT_I32</h4> 514 <p>Opcode: 23 (0x17) for GCN 1.0/1.1; 20 (0x14) for GCN 1.2 <br />619 <p>Opcode: 23 (0x17) for GCN 1.0/1.1; 20 (0x14) for GCN 1.2/1.4<br /> 515 620 Syntax: S_FLBIT_I32 SDST, SSRC0<br /> 516 621 Description: Find last opposite bit to sign in SSRC0. If found, store number of skipped bits … … 523 628 { SDST = 31-i; break; }</code></p> 524 629 <h4>S_FLBIT_I32_I64</h4> 525 <p>Opcode: 24 (0x18) for GCN 1.0/1.1; 21 (0x15) for GCN 1.2 <br />630 <p>Opcode: 24 (0x18) for GCN 1.0/1.1; 21 (0x15) for GCN 1.2/1.4<br /> 526 631 Syntax: S_FLBIT_I32_I64 SDST, SSRC0(2)<br /> 527 632 Description: Find last opposite bit to sign in SSRC0. If found, store number of skipped bits … … 534 639 { SDST = 63-i; break; }</code></p> 535 640 <h4>S_GETPC_B64</h4> 536 <p>Opcode: 31 (0x1f) for GCN 1.0/1.1; 28 (0x1c) for GCN 1.2 <br />641 <p>Opcode: 31 (0x1f) for GCN 1.0/1.1; 28 (0x1c) for GCN 1.2/1.4<br /> 537 642 Syntax: S_GETPC_B64 SDST(2)<br /> 538 643 Description: Store program counter (PC) for next instruction to SDST. SDST is 64-bit.<br /> … … 540 645 <code>SDST = PC + 4</code></p> 541 646 <h4>S_MOV_B32</h4> 542 <p>Opcode: 3 (0x3) for GCN 1.0/1.1; 0 (0x0) for GCN 1.2 <br />647 <p>Opcode: 3 (0x3) for GCN 1.0/1.1; 0 (0x0) for GCN 1.2/1.4<br /> 543 648 Syntax: S_MOV_B32 SDST, SSRC0<br /> 544 649 Description: Move value of SSRC0 into SDST.<br /> … … 546 651 <code>SDST = SSRC0</code></p> 547 652 <h4>S_MOV_B64</h4> 548 <p>Opcode: 4 (0x4) for GCN 1.0/1.1; 1 (0x1) for GCN 1.2 <br />653 <p>Opcode: 4 (0x4) for GCN 1.0/1.1; 1 (0x1) for GCN 1.2/1.4<br /> 549 654 Syntax: S_MOV_B64 SDST(2), SSRC0(2)<br /> 550 655 Description: Move value of SSRC0 into SDST. SDST and SSRC0 are 64-bit.<br /> … … 552 657 <code>SDST = SSRC0</code></p> 553 658 <h4>S_MOVRELD_B32</h4> 554 <p>Opcode: 48 (0x30) for GCN 1.0/1.1; 44 (0x2c) for GCN 1.2 <br />659 <p>Opcode: 48 (0x30) for GCN 1.0/1.1; 44 (0x2c) for GCN 1.2/1.4<br /> 555 660 Syntax: S_MOVRELD_B32 SDST, SSRC0<br /> 556 661 Description: Store value from SSRC0 to SGPR[SDST_NUMBER+M0 : SDST_NUMBER+M0+1]. … … 559 664 <code>SGPR[SDST_NUMBER + M0] = SSRC0</code></p> 560 665 <h4>S_MOVRELD_B64</h4> 561 <p>Opcode: 49 (0x31) for GCN 1.0/1.1; 45 (0x2d) for GCN 1.2 <br />666 <p>Opcode: 49 (0x31) for GCN 1.0/1.1; 45 (0x2d) for GCN 1.2/1.4<br /> 562 667 Syntax: S_MOVRELD_B64 SDST, SSRC0<br /> 563 668 Description: Store value from SSRC0 to SGPR[SDST_NUMBER+M0]. … … 566 671 <code>SGPR[SDST_NUMBER + M0 : SDST_NUMBER + M0 + 1] = SSRC0</code></p> 567 672 <h4>S_MOVRELS_B32</h4> 568 <p>Opcode: 46 (0x2e) for GCN 1.0/1.1; 42 (0x2a) for GCN 1.2 <br />673 <p>Opcode: 46 (0x2e) for GCN 1.0/1.1; 42 (0x2a) for GCN 1.2/1.4<br /> 569 674 Syntax: S_MOVRELS_B32 SDST, SSRC0<br /> 570 675 Description: Store value from SGPR[M0+SSRC0_NUMBER] to SDST. … … 573 678 <code>SDST = SGPR[SSRC0_NUMBER + M0]</code></p> 574 679 <h4>S_MOVRELS_B64</h4> 575 <p>Opcode: 47 (0x2f) for GCN 1.0/1.1; 43 (0x2b) for GCN 1.2 <br />680 <p>Opcode: 47 (0x2f) for GCN 1.0/1.1; 43 (0x2b) for GCN 1.2/1.4<br /> 576 681 Syntax: S_MOVRELS_B64 SDST(2), SSRC0(2)<br /> 577 682 Description: Store 64-bit value from SGPR[M0+SSRC0_NUMBER : M0+SSRC0_NUMBER+1] to SDST. … … 580 685 <code>SDST = SGPR[SSRC0_NUMBER + M0 : SSRC0_NUMBER + M0 + 1]</code></p> 581 686 <h4>S_NAND_SAVEEXEC_B64</h4> 582 <p>Opcode: 41 (0x29) for GCN 1.0/1.1; 37 (0x25) for GCN 1.2 <br />687 <p>Opcode: 41 (0x29) for GCN 1.0/1.1; 37 (0x25) for GCN 1.2/1.4<br /> 583 688 Syntax: S_NAND_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 584 689 Description: Store EXEC register to SDST. Make bitwise NAND on SSRC0 and EXEC … … 590 695 SCC = EXEC!=0</code></p> 591 696 <h4>S_NOR_SAVEEXEC_B64</h4> 592 <p>Opcode: 42 (0x2a) for GCN 1.0/1.1; 38 (0x26) for GCN 1.2 <br />697 <p>Opcode: 42 (0x2a) for GCN 1.0/1.1; 38 (0x26) for GCN 1.2/1.4<br /> 593 698 Syntax: S_NOR_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 594 699 Description: Store EXEC register to SDST. Make bitwise NOR on SSRC0 and EXEC … … 600 705 SCC = EXEC!=0</code></p> 601 706 <h4>S_NOT_B32</h4> 602 <p>Opcode: 7 (0x7) for GCN 1.0/1.1; 4 (0x4) for GCN 1.2 <br />707 <p>Opcode: 7 (0x7) for GCN 1.0/1.1; 4 (0x4) for GCN 1.2/1.4<br /> 603 708 Syntax: S_NOT_B32 SDST, SSRC0<br /> 604 709 Description: Store bitwise negation of the SSRC0 into SDST. … … 608 713 SCC = SDST!=0</code></p> 609 714 <h4>S_NOT_B64</h4> 610 <p>Opcode: 8 (0x8) for GCN 1.0/1.1; 5 (0x5) for GCN 1.2 <br />715 <p>Opcode: 8 (0x8) for GCN 1.0/1.1; 5 (0x5) for GCN 1.2/1.4<br /> 611 716 Syntax: S_NOT_B64 SDST(2), SSRC0(2)<br /> 612 717 Description: Store bitwise negation of the SSRC0 into SDST. … … 617 722 SCC = SDST!=0</code></p> 618 723 <h4>S_OR_SAVEEXEC_B64</h4> 619 <p>Opcode: 37 (0x25) for GCN 1.0/1.1; 33 (0x21) for GCN 1.2 <br />724 <p>Opcode: 37 (0x25) for GCN 1.0/1.1; 33 (0x21) for GCN 1.2/1.4<br /> 620 725 Syntax: S_OR_SAVEEXEC_B64 SDST(2), SDST(2)<br /> 621 726 Description: Store EXEC register to SDST. Make bitwise OR on SSRC0 and EXEC … … 627 732 SCC = EXEC!=0</code></p> 628 733 <h4>S_ORN2_SAVEEXEC_B64</h4> 629 <p>Opcode: 40 (0x28) for GCN 1.0/1.1; 36 (0x24) for GCN 1.2<br /> 734 <p>Opcode: 52 (0x34) for GCN 1.4<br /> 735 Syntax: S_ORN2_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 736 Description: Store EXEC register to SDST. Make bitwise OR on negated SSRC0 and EXEC 737 and store result to EXEC. If result is non-zero, store 1 to SCC, otherwise store 0 to SCC. 738 SDST and SSRC0 are 64-bit.<br /> 739 Operation:<br /> 740 <code>SDST = EXEC 741 EXEC = ~SSRC0 & EXEC 742 SCC = EXEC!=0</code></p> 743 <h4>S_ORN2_SAVEEXEC_B64</h4> 744 <p>Opcode: 40 (0x28) for GCN 1.0/1.1; 36 (0x24) for GCN 1.2/1.4<br /> 630 745 Syntax: S_ORN2_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 631 746 Description: Store EXEC register to SDST. Make bitwise OR on SSRC0 and negated EXEC … … 637 752 SCC = EXEC!=0</code></p> 638 753 <h4>S_QUADMASK_B32</h4> 639 <p>Opcode: 44 (0x2c) for GCN 1.0/1.1; 40 (0x28) for GCN 1.2 <br />754 <p>Opcode: 44 (0x2c) for GCN 1.0/1.1; 40 (0x28) for GCN 1.2/1.4<br /> 640 755 Syntax: S_QUADMASK_B32 SDST, SSRC0<br /> 641 756 Description: For every 4-bit groups in SSRC0, if any bit of that group is set, then … … 649 764 SCC = SDST!=0</code></p> 650 765 <h4>S_QUADMASK_B64</h4> 651 <p>Opcode: 45 (0x2d) for GCN 1.0/1.1; 41 (0x29) for GCN 1.2 <br />766 <p>Opcode: 45 (0x2d) for GCN 1.0/1.1; 41 (0x29) for GCN 1.2/1.4<br /> 652 767 Syntax: S_QUADMASK_B64 SDST(2), SSRC0(2)<br /> 653 768 Description: For every 4-bit groups in SSRC0, if any bit of that group is set, then … … 662 777 SCC = SDST!=0</code></p> 663 778 <h4>S_RFE_B64</h4> 664 <p>Opcode: 34 (0x22) for GCN 1.0/1.1; 31 (0x1f) for GCN 1.2 <br />779 <p>Opcode: 34 (0x22) for GCN 1.0/1.1; 31 (0x1f) for GCN 1.2/1.4<br /> 665 780 Syntac: S_RFE_B64 SSRC0(2)<br /> 666 781 Description: Return from exception (store TTMP[0:1] to PC ???).<br /> … … 668 783 <code>PC = TTMP[0:1]</code></p> 669 784 <h4>S_SET_GPR_IDX_IDX</h4> 670 <p>Opcode: 50 (0x32) for GCN 1.2 <br />785 <p>Opcode: 50 (0x32) for GCN 1.2/1.4<br /> 671 786 Syntax S_SET_GPR_IDX_IDX SSRC0(1)<br /> 672 787 Description: Move lowest 8 bits from SSRC0 to lowest 8 bits M0.<br /> … … 674 789 <code>M0 = (M0 & 0xffffff00) | (SSRC0 & 0xff)</code></p> 675 790 <h4>S_SETPC_B64</h4> 676 <p>Opcode: 32 (0x20) for GCN 1.0/1.1; 29 (0x1d) for GCN 1.2 <br />791 <p>Opcode: 32 (0x20) for GCN 1.0/1.1; 29 (0x1d) for GCN 1.2/1.4<br /> 677 792 Syntax: S_SETPC_B64 SSRC0(2)<br /> 678 793 Description: Jump to address given SSRC0 (store SSRC0 to PC). SSRC0 is 64-bit.<br /> … … 680 795 <code>PC = SSRC0</code></p> 681 796 <h4>S_SEXT_I32_I8</h4> 682 <p>Opcode: 25 (0x19) for GCN 1.0/1.1; 22 (0x16) for GCN 1.2 <br />797 <p>Opcode: 25 (0x19) for GCN 1.0/1.1; 22 (0x16) for GCN 1.2/1.4<br /> 683 798 Syntax: S_SEXT_I32_I8 SDST, SSRC0<br /> 684 799 Description: Store signed extended 8-bit value from SSRC0 to SDST.<br /> … … 686 801 <code>SDST = SEXT((INT8)SSRC0)</code></p> 687 802 <h4>S_SEXT_I32_I16</h4> 688 <p>Opcode: 26 (0x1a) for GCN 1.0/1.1; 23 (0x17) for GCN 1.2 <br />803 <p>Opcode: 26 (0x1a) for GCN 1.0/1.1; 23 (0x17) for GCN 1.2/1.4<br /> 689 804 Syntax: S_SEXT_I32_I16 SDST, SSRC0<br /> 690 805 Description: Store signed extended 16-bit value from SSRC0 to SDST.<br /> … … 692 807 <code>SDST = SEXT((INT16)SSRC0)</code></p> 693 808 <h4>S_SWAPPC_B64</h4> 694 <p>Opcode: 33 (0x21) for GCN 1.0/1.1; 30 (0x1e) for GCN 1.2 <br />809 <p>Opcode: 33 (0x21) for GCN 1.0/1.1; 30 (0x1e) for GCN 1.2/1.4<br /> 695 810 Syntax: S_SWAPPC_B64 SDST(2), SSRC0(2)<br /> 696 811 Description: Store program counter to SDST and jump to address given SSRC0 … … 700 815 PC = SSRC0</code></p> 701 816 <h4>S_WQM_B32</h4> 702 <p>Opcode: 9 (0x9) for GCN 1.0/1.1; 6 (0x6) for GCN 1.2 <br />817 <p>Opcode: 9 (0x9) for GCN 1.0/1.1; 6 (0x6) for GCN 1.2/1.4<br /> 703 818 Syntax: S_WQM_B32 SDST, SSRC0<br /> 704 819 Description: For every 4-bit groups in SSRC0, if any bit of that group is set, then … … 712 827 SCC = SDST!=0</code></p> 713 828 <h4>S_WQM_B64</h4> 714 <p>Opcode: 10 (0xa) for GCN 1.0/1.1; 7 (0x7) for GCN 1.2 <br />829 <p>Opcode: 10 (0xa) for GCN 1.0/1.1; 7 (0x7) for GCN 1.2/1.4<br /> 715 830 Syntax: S_WQM_B64 SDST(2), SSRC0(2)<br /> 716 831 Description: For every 4-bit groups in SSRC0, if any bit of that group is set, then … … 725 840 SCC = SDST!=0</code></p> 726 841 <h4>S_XNOR_SAVEEXEC_B64</h4> 727 <p>Opcode: 43 (0x2b) for GCN 1.0/1.1; 39 (0x27) for GCN 1.2 <br />842 <p>Opcode: 43 (0x2b) for GCN 1.0/1.1; 39 (0x27) for GCN 1.2/1.4<br /> 728 843 Syntax: S_XNOR_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 729 844 Description: Store EXEC register to SDST. Make bitwise XNOR on SSRC0 and EXEC … … 735 850 SCC = EXEC!=0</code></p> 736 851 <h4>S_XOR_SAVEEXEC_B64</h4> 737 <p>Opcode: 38 (0x26) for GCN 1.0/1.1; 34 (0x22) for GCN 1.2 <br />852 <p>Opcode: 38 (0x26) for GCN 1.0/1.1; 34 (0x22) for GCN 1.2/1.4<br /> 738 853 Syntax: S_XOR_SAVEEXEC_B64 SDST(2), SSRC0(2)<br /> 739 854 Description: Store EXEC register to SDST. Make bitwise XOR on SSRC0 and EXEC