s_andn2_wrexec_b64 GPU Native ISA AMD Scalar
Scalar Arithmetic
Calculate bitwise AND on the scalar input and the negation of the EXEC mask, store the calculated result into the EXEC mask and also into the scalar…
Also written as
s_and_not1_wrexec_b64.
AMD's machine-readable ISA specification lists this name for the same instruction.
Encoding
The ENC_SOP1 layout from AMD's machine-readable ISA specification (AMD CDNA 4). Opcode 54 in OP rebuilds 0xBE803600, an identifier AMD lists for this encoding. Not the same in every generation: AMD RDNA 2 (opcode 58), AMD RDNA 1 (opcode 58). The same in AMD CDNA 3, AMD CDNA 2, AMD CDNA 1.
Operands
-
SDST
Written. N/A Data format: N/A (OPR_SREG, FMT_NUM_U64) -
SSRC0
Read. N/A Data format: N/A (OPR_SSRC, FMT_NUM_U64)
In AMD's order, as its machine-readable ISA specification lists them for the ENC_SOP1 encoding (AMD CDNA 4).
GFX Target Compatibility
| Target | Support |
|---|---|
| gfx1100 | ✅ Supported |
In particular, the following sequence of waterfall code is optimized by using a WREXEC instead of two separate scalar ops: // V0 holds the index value per lane // save exec mask for restore at the end s_mov_b64 s2, exec // exec mask of remaining (unprocessed) threads s_mov_b64 s4, exec loop: // get the index value for the first active lane v_readfirstlane_b32 s0, v0 // find all other lanes with same index value v_cmpx_eq s0, v0 <OP> // do the operation using the current EXEC mask. S0 holds the index. // mask out thread that was just executed // s_andn2_b64 s4, s4, exec // s_mov_b64 exec, s4 s_andn2_wrexec_b64 s4, s4 // replaces above 2 ops // repeat until EXEC==0 s_cbranch_scc1 loop s_mov_b64 exec, s2
Related
More in Scalar Arithmetic
Reference
Description
Semantics
Example
s_andn2_wrexec_b64 s[0:1], 0A real instruction accepted by the LLVM assembler, taken verbatim from LLVM's own AMDGPU MC test suite. Not from an AMD document, and not authored here.
Sources
- User Guide for AMDGPU Backend ↗ - LLVM Project
-
"AMD Instinct MI300" Instruction Set Architecture: Reference Guide ↗
- Advanced Micro Devices, Inc.
Reference Guide, page 131. - LLVM MC assembler tests for AMDGPU ↗ - LLVM Project
- AMD Machine-Readable GPU ISA Specification ↗ - Advanced Micro Devices, Inc.