AMDGPU / GFX Instructions GPU Native ISA AMD
1960 instructions - showing 100 per page, page 9 of 20 - AMDGPU/GFX is AMD's native, low-level
GPU instruction set family, assembled directly with no virtual intermediate layer. Supported
instructions and their exact encodings vary by GFX compatibility target (e.g.
gfx942, gfx1100). Scalar instructions execute once per wavefront on
the Scalar ALU; vector instructions execute per-lane on the Vector ALU, gated by the EXEC mask.
| Mnemonic | Syntax | Format | GFX Targets | Unit | Summary |
|---|---|---|---|---|---|
| s_not_b64 | s_not_b64 | SOP1 | gfx1100 | Calculate bitwise negation on a scalar input, store the result into a scalar register and set SCC iff the result is nonzero. | |
| s_or_b32 | s_or_b32 | SOP2 | gfx1100 | Calculate bitwise OR on two scalar inputs, store the result into a scalar register and set SCC iff the result is nonzero. | |
| s_or_b64 | s_or_b64 | SOP2 | gfx1100 | Calculate bitwise OR on two scalar inputs, store the result into a scalar register and set SCC iff the result is nonzero. | |
| s_or_not0_saveexec_b32 | s_or_not0_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise OR on the EXEC mask and the negation of the scalar input, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_or_not0_saveexec_b64 | s_or_not0_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise OR on the EXEC mask and the negation of the scalar input, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_or_not1_b32 | s_or_not1_b32 | SOP2 | gfx1100 | Calculate bitwise OR with the first input and the negation of the second input, store the result into a scalar register and set SCC if the result is… | |
| s_or_not1_b64 | s_or_not1_b64 | SOP2 | gfx1100 | Calculate bitwise OR with the first input and the negation of the second input, store the result into a scalar register and set SCC if the result is… | |
| s_or_not1_saveexec_b32 | s_or_not1_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the negation of the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_or_not1_saveexec_b64 | s_or_not1_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the negation of the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_or_saveexec_b32 | s_or_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| s_or_saveexec_b64 | s_or_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| s_orn1_saveexec_b32 | s_orn1_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise OR on the EXEC mask and the negation of the scalar input, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_orn1_saveexec_b64 | s_orn1_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise OR on the EXEC mask and the negation of the scalar input, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_orn2_b32 | s_orn2_b32 | SOP2 | gfx1100 | Calculate bitwise OR with the first input and the negation of the second input, store the result into a scalar register and set SCC if the result is… | |
| s_orn2_b64 | s_orn2_b64 | SOP2 | gfx1100 | Calculate bitwise OR with the first input and the negation of the second input, store the result into a scalar register and set SCC if the result is… | |
| s_orn2_saveexec_b32 | s_orn2_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the negation of the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_orn2_saveexec_b64 | s_orn2_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise OR on the scalar input and the negation of the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the… | |
| s_pack_hh_b32_b16 | s_pack_hh_b32_b16 | SOP2 | gfx1100 | Pack two 16-bit scalar values into a scalar register. | |
| s_pack_hl_b32_b16 | s_pack_hl_b32_b16 | SOP2 | gfx1100 | Pack two 16-bit scalar values into a scalar register. | |
| s_pack_lh_b32_b16 | s_pack_lh_b32_b16 | SOP2 | gfx1100 | Pack two 16-bit scalar values into a scalar register. | |
| s_pack_ll_b32_b16 | s_pack_ll_b32_b16 | SOP2 | gfx1100 | Pack two 16-bit scalar values into a scalar register. | |
| s_prefetch_data | s_prefetch_data | SMEM | Prefetch data into the scalar data cache, relative to a base address provided. | ||
| s_prefetch_data_pc_rel | s_prefetch_data_pc_rel | SMEM | Prefetch data into the scalar data cache, relative to the current PC address. | ||
| s_prefetch_inst | s_prefetch_inst | SMEM | Prefetch instructions into the shader instruction cache, relative to a base address provided. | ||
| s_prefetch_inst_pc_rel | s_prefetch_inst_pc_rel | SMEM | Prefetch instructions into the shader instruction cache, relative to the current PC address. | ||
| s_quadmask_b32 | s_quadmask_b32 | SOP1 | gfx1100 | Reduce a pixel mask from the scalar input into a quad mask, store the result in a scalar register and set SCC iff the result is nonzero. | |
| s_quadmask_b64 | s_quadmask_b64 | SOP1 | gfx1100 | Reduce a pixel mask from the scalar input into a quad mask, store the result in a scalar register and set SCC iff the result is nonzero. | |
| s_rfe_b64 | s_rfe_b64 | SOP1 | gfx1100 | Return from the exception handler. | |
| s_rfe_i64 | s_rfe_i64 | SOP1 | gfx1100 | AMDGPU SOP1 scalar instruction operating on i64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | |
| s_rndne_f16 | s_rndne_f16 | SOP1 | gfx1100 | Round the half-precision float input to the nearest even integer and store the result in floating point format into a scalar register. | |
| s_rndne_f32 | s_rndne_f32 | SOP1 | gfx1100 | Round the single-precision float input to the nearest even integer and store the result in floating point format into a scalar register. | |
| s_sendmsg | s_sendmsg | SOPP | gfx1100 | Send a message upstream to graphics control hardware. SIMM16[9:0] contains the message type. | |
| s_sendmsghalt | s_sendmsghalt | SOPP | gfx1100 | Send a message to upstream control hardware and then HALT the wavefront; see S_SENDMSG for details. | |
| s_set_gpr_idx_idx | s_set_gpr_idx_idx | SOP1 | Set the index used in vector GPR indexing. S_SET_GPR_IDX_ON, S_SET_GPR_IDX_OFF, S_SET_GPR_IDX_MODE and S_SET_GPR_IDX_IDX are related instructions. | ||
| s_set_gpr_idx_mode | s_set_gpr_idx_mode | SOPP | Modify the mode used for vector GPR indexing. | ||
| s_set_gpr_idx_off | s_set_gpr_idx_off | SOPP | Clear GPR indexing mode. | ||
| s_set_inst_prefetch_distance | s_set_inst_prefetch_distance | SOPP | gfx1100 | Change instruction prefetch mode. This controls how many cachelines ahead of the current PC the shader attempts to prefetch. | |
| s_set_pc_i64 | s_set_pc_i64 | SOP1 | gfx1100 | AMDGPU SOP1 scalar instruction operating on i64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | |
| s_set_vgpr_msb | s_set_vgpr_msb | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_sethalt | s_sethalt | SOPP | gfx1100 | Set or clear the HALT status bit. | |
| s_setkill | s_setkill | SOPP | gfx1100 | Kill this wave if the least significant bit of the immediate constant is 1. Used primarily for debugging kill wave host command behavior. | |
| s_setpc_b64 | s_setpc_b64 | SOP1 | gfx1100 | Jump to an address specified in a scalar register. The argument is a byte address of the instruction to jump to. | |
| s_setprio | s_setprio | SOPP | gfx1100 | Change wave user priority. | |
| s_setprio_inc_wg | s_setprio_inc_wg | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_setvskip | s_setvskip | SOPC | Enables or disables VSKIP mode. | ||
| s_sext_i32_i16 | s_sext_i32_i16 | SOP1 | gfx1100 | Sign extend a signed 16 bit scalar input to 32 bits and store the result into a scalar register. | |
| s_sext_i32_i8 | s_sext_i32_i8 | SOP1 | gfx1100 | Sign extend a signed 8 bit scalar input to 32 bits and store the result into a scalar register. | |
| s_sleep | s_sleep | SOPP | gfx1100 | Cause a wave to sleep for up to ~8000 clocks. | |
| s_sleep_var | s_sleep_var | SOP1 | Cause a wave to sleep for up to ~8000 clocks, or to sleep until an external event wakes the wave up. | ||
| s_soft_wait_bvhcnt | s_soft_wait_bvhcnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_wait_dscnt | s_soft_wait_dscnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_wait_kmcnt | s_soft_wait_kmcnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_wait_loadcnt | s_soft_wait_loadcnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_wait_samplecnt | s_soft_wait_samplecnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_wait_storecnt | s_soft_wait_storecnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_waitcnt | s_soft_waitcnt | SOPP | AMDGPU SOPP scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_soft_waitcnt_vscnt | s_soft_waitcnt_vscnt | SOPK | AMDGPU SOPK scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_sub_co_ci_u32 | s_sub_co_ci_u32 | SOP2 | gfx1100 | Subtract the second unsigned 32-bit integer input from the first input, subtract the carry-in bit, store the result into a scalar register and store… | |
| s_sub_co_i32 | s_sub_co_i32 | SOP2 | gfx1100 | Subtract the second signed 32-bit integer input from the first input, store the result into a scalar register and store the carry-out bit into SCC. | |
| s_sub_co_u32 | s_sub_co_u32 | SOP2 | gfx1100 | Subtract the second unsigned 32-bit integer input from the first input, store the result into a scalar register and store the carry-out bit into SCC. | |
| s_sub_f16 | s_sub_f16 | SOP2 | gfx1100 | Subtract the second floating point input from the first input and store the result in a scalar register. | |
| s_sub_f32 | s_sub_f32 | SOP2 | gfx1100 | Subtract the second floating point input from the first input and store the result in a scalar register. | |
| s_sub_i32 | s_sub_i32 | SOP2 | gfx1100 | Subtract the second signed 32-bit integer input from the first input, store the result into a scalar register and store the carry-out bit into SCC. | |
| s_sub_nc_u64 | s_sub_nc_u64 | SOP2 | Subtract the second unsigned 64-bit integer input from the first input and store the result into a scalar register. | ||
| s_sub_u32 | s_sub_u32 SDST, S0, S1 | SOP2 | gfx942, gfx1100 | Scalar ALU | Subtract two 32-bit unsigned scalar operands, wavefront-uniform. |
| s_sub_u64 | s_sub_u64 | SOP2 | AMDGPU SOP2 scalar instruction operating on u64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_subb_u32 | s_subb_u32 | SOP2 | gfx1100 | Subtract the second unsigned 32-bit integer input from the first input, subtract the carry-in bit, store the result into a scalar register and store… | |
| s_subvector_loop_begin | s_subvector_loop_begin | SOPK | gfx1100 | Begin execution of a subvector block of code. | |
| s_subvector_loop_end | s_subvector_loop_end | SOPK | gfx1100 | End execution of a subvector block of code. | |
| s_swap_pc_i64 | s_swap_pc_i64 | SOP1 | gfx1100 | AMDGPU SOP1 scalar instruction operating on i64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | |
| s_swappc_b64 | s_swappc_b64 | SOP1 | gfx1100 | Store the address of the next instruction to a scalar register and then jump to an address specified in the scalar input. | |
| s_trap | s_trap | SOPP | gfx1100 | Enter the trap handler. | |
| s_trunc_f16 | s_trunc_f16 | SOP1 | gfx1100 | Compute the integer part of a half-precision float input using round toward zero semantics and store the result in floating point format into a… | |
| s_trunc_f32 | s_trunc_f32 | SOP1 | gfx1100 | Compute the integer part of a single-precision float input using round toward zero semantics and store the result in floating point format into a… | |
| s_ttracedata | s_ttracedata | SOPP | gfx1100 | Send M0 as user data to the thread trace stream. | |
| s_wait_alu | s_wait_alu | SOPP | gfx1100 | Wait for one or more ALU-centric counters to fall below specified values. | |
| s_wait_event | s_wait_event | SOPP | gfx1100 | Wait for an event to occur or a condition to be satisfied before continuing. The SIMM16 argument specifies which event(s) to wait on. | |
| s_waitcnt | s_waitcnt | SOPP | gfx1100 | Wait for the counts of outstanding local data share, vector memory and export instructions to be at or below the specified levels. | |
| s_waitcnt_expcnt | s_waitcnt_expcnt | SOPK | gfx1100 | Wait for the EXPCNT counter to be at or below the specified level. The EXPCNT counter tracks the number of outstanding export events. | |
| s_waitcnt_lgkmcnt | s_waitcnt_lgkmcnt | SOPK | gfx1100 | Wait for the LGKMCNT counter to be at or below the specified level. | |
| s_waitcnt_vmcnt | s_waitcnt_vmcnt | SOPK | gfx1100 | Wait for the VMCNT counter to be at or below the specified level. | |
| s_waitcnt_vscnt | s_waitcnt_vscnt | SOPK | gfx1100 | Wait for the VSCNT counter to be at or below the specified level. | |
| s_wakeup | s_wakeup | SOPP | gfx1100 | Allow a wave to 'ping' all the other waves in its threadgroup to force them to wake up early from an S_SLEEP instruction. | |
| s_wakeup_barrier | s_wakeup_barrier | SOP1 | AMDGPU SOP1 scalar instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| s_wqm_b32 | s_wqm_b32 | SOP1 | gfx1100 | Given an active pixel mask in a scalar input, calculate whole quad mode mask for that input, store the result into a scalar register and set SCC iff… | |
| s_wqm_b64 | s_wqm_b64 | SOP1 | gfx1100 | Given an active pixel mask in a scalar input, calculate whole quad mode mask for that input, store the result into a scalar register and set SCC iff… | |
| s_xnor_b32 | s_xnor_b32 | SOP2 | gfx1100 | Calculate bitwise XNOR on two scalar inputs, store the result into a scalar register and set SCC if the result is nonzero. | |
| s_xnor_b64 | s_xnor_b64 | SOP2 | gfx1100 | Calculate bitwise XNOR on two scalar inputs, store the result into a scalar register and set SCC if the result is nonzero. | |
| s_xnor_saveexec_b32 | s_xnor_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise XNOR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| s_xnor_saveexec_b64 | s_xnor_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise XNOR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| s_xor_b32 | s_xor_b32 | SOP2 | gfx1100 | Calculate bitwise XOR on two scalar inputs, store the result into a scalar register and set SCC iff the result is nonzero. | |
| s_xor_b64 | s_xor_b64 | SOP2 | gfx1100 | Calculate bitwise XOR on two scalar inputs, store the result into a scalar register and set SCC iff the result is nonzero. | |
| s_xor_saveexec_b32 | s_xor_saveexec_b32 | SOP1 | gfx1100 | Calculate bitwise XOR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| s_xor_saveexec_b64 | s_xor_saveexec_b64 | SOP1 | gfx1100 | Calculate bitwise XOR on the scalar input and the EXEC mask, store the calculated result into the EXEC mask, set SCC iff the calculated result is… | |
| scratch_load_block | scratch_load_block | SCRATCH | Load a block of data from the scratch aperture. | ||
| scratch_load_dword | scratch_load_dword | SCRATCH | Load 32 bits of data from the scratch aperture into a vector register. | ||
| scratch_load_dwordx2 | scratch_load_dwordx2 | SCRATCH | Load 64 bits of data from the scratch aperture into a vector register. | ||
| scratch_load_dwordx3 | scratch_load_dwordx3 | SCRATCH | Load 96 bits of data from the scratch aperture into a vector register. | ||
| scratch_load_dwordx4 | scratch_load_dwordx4 | SCRATCH | Load 128 bits of data from the scratch aperture into a vector register. | ||
| scratch_load_lds_dword | scratch_load_lds_dword | SCRATCH | Load 32 bits of untyped data from the scratch aperture and store the result into a data share. |
Source
Normalized from AMD's official ROCm documentation, with the LLVM AMDGPU backend documentation as supplementary compiler-target information. ROCm documentation ↗