AMDGPU / GFX Instructions GPU Native ISA AMD
2442 instructions - showing 100 per page, page 5 of 25 - 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 |
|---|---|---|---|---|---|
| ds_xor_src2_b32 | ds_xor_src2_b32 | DS | AMDGPU DS vector instruction operating on b32 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| ds_xor_src2_b64 | ds_xor_src2_b64 | DS | AMDGPU DS vector instruction operating on b64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| exp | exp | EXP | Export graphics data to the next stage of the render pipeline. The target and up to four channels of data are specified as operands. | ||
| export | export | EXP | Export graphics data to the next stage of the render pipeline. The target and up to four channels of data are specified as operands. | ||
| flat_atomic_add | flat_atomic_add | FLAT | gfx1100 | Add two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_add_f32 | flat_atomic_add_f32 | FLAT | gfx1100 | Add a single-precision float value in the data register to a location in the flat aperture. | |
| flat_atomic_add_f64 | flat_atomic_add_f64 | FLAT | gfx942 | Add a double-precision float value in the data register to a location in the flat aperture. | |
| flat_atomic_add_u32 | flat_atomic_add_u32 | FLAT | gfx1100 | Add two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_add_u64 | flat_atomic_add_u64 | FLAT | gfx1100 | Add two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_add_x2 | flat_atomic_add_x2 | FLAT | gfx1100 | Add two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_and | flat_atomic_and | FLAT | gfx1100 | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_and_b32 | flat_atomic_and_b32 | FLAT | gfx1100 | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_and_b64 | flat_atomic_and_b64 | FLAT | gfx1100 | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_and_x2 | flat_atomic_and_x2 | FLAT | gfx1100 | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_cmpswap | flat_atomic_cmpswap | FLAT | gfx1100 | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_cmpswap_b32 | flat_atomic_cmpswap_b32 | FLAT | gfx1100 | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_cmpswap_b64 | flat_atomic_cmpswap_b64 | FLAT | gfx1100 | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_cmpswap_f32 | flat_atomic_cmpswap_f32 | FLAT | gfx1100 | Compare two single-precision float values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_cmpswap_x2 | flat_atomic_cmpswap_x2 | FLAT | gfx1100 | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_cond_sub_u32 | flat_atomic_cond_sub_u32 | FLAT | Subtract an unsigned 32-bit integer value in the data register from a location in the flat aperture only if the memory value is greater than or equal… | ||
| flat_atomic_csub_u32 | flat_atomic_csub_u32 | FLAT | AMDGPU FLAT vector instruction operating on u32 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| flat_atomic_dec | flat_atomic_dec | FLAT | gfx1100 | Decrement an unsigned 32-bit integer value from a location in the flat aperture with wraparound to a value in the data register if the decrement… | |
| flat_atomic_dec_u32 | flat_atomic_dec_u32 | FLAT | gfx1100 | Decrement an unsigned 32-bit integer value from a location in the flat aperture with wraparound to a value in the data register if the decrement… | |
| flat_atomic_dec_u64 | flat_atomic_dec_u64 | FLAT | gfx1100 | Decrement an unsigned 64-bit integer value from a location in the flat aperture with wraparound to a value in the data register if the decrement… | |
| flat_atomic_dec_x2 | flat_atomic_dec_x2 | FLAT | gfx1100 | Decrement an unsigned 64-bit integer value from a location in the flat aperture with wraparound to a value in the data register if the decrement… | |
| flat_atomic_fcmpswap | flat_atomic_fcmpswap | FLAT | gfx1100 | Compare two single-precision float values stored in the data comparison register and a location in the flat aperture. | |
| flat_atomic_fcmpswap_x2 | flat_atomic_fcmpswap_x2 | FLAT | Compare two double-precision float values stored in the data comparison register and a location in the flat aperture. | ||
| flat_atomic_fmax | flat_atomic_fmax | FLAT | gfx1100 | Select the maximum of two single-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_fmax_x2 | flat_atomic_fmax_x2 | FLAT | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in the flat aperture. | ||
| flat_atomic_fmin | flat_atomic_fmin | FLAT | gfx1100 | Select the minimum of two single-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_fmin_x2 | flat_atomic_fmin_x2 | FLAT | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in the flat aperture. | ||
| flat_atomic_inc | flat_atomic_inc | FLAT | gfx1100 | Increment an unsigned 32-bit integer value from a location in the flat aperture with wraparound to 0 if the value exceeds a value in the data… | |
| flat_atomic_inc_u32 | flat_atomic_inc_u32 | FLAT | gfx1100 | Increment an unsigned 32-bit integer value from a location in the flat aperture with wraparound to 0 if the value exceeds a value in the data… | |
| flat_atomic_inc_u64 | flat_atomic_inc_u64 | FLAT | gfx1100 | Increment an unsigned 64-bit integer value from a location in the flat aperture with wraparound to 0 if the value exceeds a value in the data… | |
| flat_atomic_inc_x2 | flat_atomic_inc_x2 | FLAT | gfx1100 | Increment an unsigned 64-bit integer value from a location in the flat aperture with wraparound to 0 if the value exceeds a value in the data… | |
| flat_atomic_max_f32 | flat_atomic_max_f32 | FLAT | gfx1100 | Select the maximum of two single-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_max_f64 | flat_atomic_max_f64 | FLAT | gfx942 | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_max_i32 | flat_atomic_max_i32 | FLAT | gfx1100 | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_max_i64 | flat_atomic_max_i64 | FLAT | gfx1100 | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_max_num_f64 | flat_atomic_max_num_f64 | FLAT | Select the IEEE maximumNumber() of two double-precision float inputs, given two values stored in the data register and a location in the flat… | ||
| flat_atomic_max_u32 | flat_atomic_max_u32 | FLAT | gfx1100 | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_max_u64 | flat_atomic_max_u64 | FLAT | gfx1100 | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_f32 | flat_atomic_min_f32 | FLAT | gfx1100 | Select the minimum of two single-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_f64 | flat_atomic_min_f64 | FLAT | gfx942 | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_i32 | flat_atomic_min_i32 | FLAT | gfx1100 | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_i64 | flat_atomic_min_i64 | FLAT | gfx1100 | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_num_f64 | flat_atomic_min_num_f64 | FLAT | Select the IEEE minimumNumber() of two double-precision float inputs, given two values stored in the data register and a location in the flat… | ||
| flat_atomic_min_u32 | flat_atomic_min_u32 | FLAT | gfx1100 | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_min_u64 | flat_atomic_min_u64 | FLAT | gfx1100 | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_or | flat_atomic_or | FLAT | gfx1100 | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_or_b32 | flat_atomic_or_b32 | FLAT | gfx1100 | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_or_b64 | flat_atomic_or_b64 | FLAT | gfx1100 | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_or_x2 | flat_atomic_or_x2 | FLAT | gfx1100 | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_pk_add_bf16 | flat_atomic_pk_add_bf16 | FLAT | Add a packed 2-component BF16 float value in the data register to a location in the flat aperture. | ||
| flat_atomic_pk_add_f16 | flat_atomic_pk_add_f16 | FLAT | Add a packed 2-component half-precision float value in the data register to a location in the flat aperture. | ||
| flat_atomic_smax | flat_atomic_smax | FLAT | gfx1100 | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_smax_x2 | flat_atomic_smax_x2 | FLAT | gfx1100 | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_smin | flat_atomic_smin | FLAT | gfx1100 | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_smin_x2 | flat_atomic_smin_x2 | FLAT | gfx1100 | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_sub | flat_atomic_sub | FLAT | gfx1100 | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in the flat aperture. | |
| flat_atomic_sub_u32 | flat_atomic_sub_u32 | FLAT | gfx1100 | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in the flat aperture. | |
| flat_atomic_sub_u64 | flat_atomic_sub_u64 | FLAT | gfx1100 | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in the flat aperture. | |
| flat_atomic_sub_x2 | flat_atomic_sub_x2 | FLAT | gfx1100 | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in the flat aperture. | |
| flat_atomic_swap | flat_atomic_swap | FLAT | gfx1100 | Swap an unsigned 32-bit integer value in the data register with a location in the flat aperture. | |
| flat_atomic_swap_b32 | flat_atomic_swap_b32 | FLAT | gfx1100 | Swap an unsigned 32-bit integer value in the data register with a location in the flat aperture. | |
| flat_atomic_swap_b64 | flat_atomic_swap_b64 | FLAT | gfx1100 | Swap an unsigned 64-bit integer value in the data register with a location in the flat aperture. | |
| flat_atomic_swap_x2 | flat_atomic_swap_x2 | FLAT | gfx1100 | Swap an unsigned 64-bit integer value in the data register with a location in the flat aperture. | |
| flat_atomic_umax | flat_atomic_umax | FLAT | gfx1100 | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_umax_x2 | flat_atomic_umax_x2 | FLAT | gfx1100 | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_umin | flat_atomic_umin | FLAT | gfx1100 | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_umin_x2 | flat_atomic_umin_x2 | FLAT | gfx1100 | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the flat aperture. | |
| flat_atomic_xor | flat_atomic_xor | FLAT | gfx1100 | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_xor_b32 | flat_atomic_xor_b32 | FLAT | gfx1100 | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_xor_b64 | flat_atomic_xor_b64 | FLAT | gfx1100 | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_atomic_xor_x2 | flat_atomic_xor_x2 | FLAT | gfx1100 | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in the flat aperture. | |
| flat_load_b128 | flat_load_b128 | FLAT | gfx1100 | Load 128 bits of data from the flat aperture into a vector register. | |
| flat_load_b32 | flat_load_b32 | FLAT | gfx1100 | Load 32 bits of data from the flat aperture into a vector register. | |
| flat_load_b64 | flat_load_b64 | FLAT | gfx1100 | Load 64 bits of data from the flat aperture into a vector register. | |
| flat_load_b96 | flat_load_b96 | FLAT | gfx1100 | Load 96 bits of data from the flat aperture into a vector register. | |
| flat_load_d16_b16 | flat_load_d16_b16 | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture and store the result into the low 16 bits of a 32-bit vector register. | |
| flat_load_d16_hi_b16 | flat_load_d16_hi_b16 | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture and store the result into the high 16 bits of a 32-bit vector register. | |
| flat_load_d16_hi_i8 | flat_load_d16_hi_i8 | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | |
| flat_load_d16_hi_u8 | flat_load_d16_hi_u8 | FLAT | gfx1100 | Load 8 bits of unsigned data from the flat aperture, zero extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | |
| flat_load_d16_i8 | flat_load_d16_i8 | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | |
| flat_load_d16_u8 | flat_load_d16_u8 | FLAT | gfx1100 | Load 8 bits of unsigned data from the flat aperture, zero extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | |
| flat_load_dword | flat_load_dword VDST, VADDR | FLAT | gfx942, gfx1100 | Vector Memory Unit | Load one 32-bit dword per lane through the flat (generic) address space, resolved to global/scratch/LDS at runtime. |
| flat_load_dwordx2 | flat_load_dwordx2 | FLAT | gfx1100 | Load 64 bits of data from the flat aperture into a vector register. | |
| flat_load_dwordx3 | flat_load_dwordx3 | FLAT | gfx1100 | Load 96 bits of data from the flat aperture into a vector register. | |
| flat_load_dwordx4 | flat_load_dwordx4 | FLAT | gfx1100 | Load 128 bits of data from the flat aperture into a vector register. | |
| flat_load_i16 | flat_load_i16 | FLAT | gfx1100 | Load 16 bits of signed data from the flat aperture, sign extend to 32 bits and store the result into a vector register. | |
| flat_load_i8 | flat_load_i8 | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 32 bits and store the result into a vector register. | |
| flat_load_monitor_b128 | flat_load_monitor_b128 | FLAT | AMDGPU FLAT vector instruction operating on b128 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| flat_load_monitor_b32 | flat_load_monitor_b32 | FLAT | AMDGPU FLAT vector instruction operating on b32 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| flat_load_monitor_b64 | flat_load_monitor_b64 | FLAT | AMDGPU FLAT vector instruction operating on b64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| flat_load_sbyte | flat_load_sbyte | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 32 bits and store the result into a vector register. | |
| flat_load_sbyte_d16 | flat_load_sbyte_d16 | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | |
| flat_load_sbyte_d16_hi | flat_load_sbyte_d16_hi | FLAT | gfx1100 | Load 8 bits of signed data from the flat aperture, sign extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | |
| flat_load_short_d16 | flat_load_short_d16 | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture and store the result into the low 16 bits of a 32-bit vector register. | |
| flat_load_short_d16_hi | flat_load_short_d16_hi | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture and store the result into the high 16 bits of a 32-bit vector register. | |
| flat_load_sshort | flat_load_sshort | FLAT | gfx1100 | Load 16 bits of signed data from the flat aperture, sign extend to 32 bits and store the result into a vector register. |
Source
Normalized from AMD's official ROCm documentation, with the LLVM AMDGPU backend documentation as supplementary compiler-target information. ROCm documentation ↗