AMDGPU / GFX Instructions GPU Native ISA AMD
1960 instructions - showing 100 per page, page 4 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 |
|---|---|---|---|---|---|
| ds_write_b16 | ds_write_b16 | DS | gfx1100 | Store 16 bits of data from a vector register into a data share. | |
| ds_write_b16_d16_hi | ds_write_b16_d16_hi | DS | gfx1100 | Store 16 bits of data from the high bits of a vector register into a data share. | |
| ds_write_b32 | ds_write_b32 ADDR, DATA, offset | DS | gfx942, gfx1100 | LDS Unit | Write one 32-bit value per lane to the Local Data Share (LDS). |
| ds_write_b64 | ds_write_b64 | DS | gfx1100 | Store 64 bits of data from a vector input register into a data share. | |
| ds_write_b8 | ds_write_b8 | DS | gfx1100 | Store 8 bits of data from a vector register into a data share. | |
| ds_write_b8_d16_hi | ds_write_b8_d16_hi | DS | gfx1100 | Store 8 bits of data from the high bits of a vector register into a data share. | |
| ds_write_b96 | ds_write_b96 | DS | gfx1100 | Store 96 bits of data from a vector input register into a data share. | |
| ds_write_src2_b32 | ds_write_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_write_src2_b64 | ds_write_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.) | ||
| ds_wrxchg2_rtn_b32 | ds_wrxchg2_rtn_b32 | DS | gfx1100 | Swap two unsigned 32-bit integer values in the data registers with two locations in a data share. | |
| ds_wrxchg2_rtn_b64 | ds_wrxchg2_rtn_b64 | DS | gfx1100 | Swap two unsigned 64-bit integer values in the data registers with two locations in a data share. | |
| ds_wrxchg2st64_rtn_b32 | ds_wrxchg2st64_rtn_b32 | DS | gfx1100 | Swap two unsigned 32-bit integer values in the data registers with two locations in a data share. | |
| ds_wrxchg2st64_rtn_b64 | ds_wrxchg2st64_rtn_b64 | DS | gfx1100 | Swap two unsigned 64-bit integer values in the data registers with two locations in a data share. | |
| ds_wrxchg_rtn_b32 | ds_wrxchg_rtn_b32 | DS | gfx1100 | Swap an unsigned 32-bit integer value in the data register with a location in a data share. | |
| ds_wrxchg_rtn_b64 | ds_wrxchg_rtn_b64 | DS | gfx1100 | Swap an unsigned 64-bit integer value in the data register with a location in a data share. | |
| ds_xor_b32 | ds_xor_b32 | DS | gfx1100 | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a data share. | |
| ds_xor_b64 | ds_xor_b64 | DS | gfx1100 | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a data share. | |
| ds_xor_rtn_b32 | ds_xor_rtn_b32 | DS | gfx1100 | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a data share. | |
| ds_xor_rtn_b64 | ds_xor_rtn_b64 | DS | gfx1100 | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a data share. | |
| 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.) | ||
| 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_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_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. |
Source
Normalized from AMD's official ROCm documentation, with the LLVM AMDGPU backend documentation as supplementary compiler-target information. ROCm documentation ↗