AMDGPU / GFX Instructions GPU Native ISA AMD
1960 instructions - showing 100 per page, page 5 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 |
|---|---|---|---|---|---|
| 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. | |
| flat_load_u16 | flat_load_u16 | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture, zero extend to 32 bits and store the result into a vector register. | |
| flat_load_u8 | flat_load_u8 | FLAT | gfx1100 | Load 8 bits of unsigned data from the flat aperture, zero extend to 32 bits and store the result into a vector register. | |
| flat_load_ubyte | flat_load_ubyte | FLAT | gfx1100 | Load 8 bits of unsigned data from the flat aperture, zero extend to 32 bits and store the result into a vector register. | |
| flat_load_ubyte_d16 | flat_load_ubyte_d16 | 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_ubyte_d16_hi | flat_load_ubyte_d16_hi | 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_ushort | flat_load_ushort | FLAT | gfx1100 | Load 16 bits of unsigned data from the flat aperture, zero extend to 32 bits and store the result into a vector register. | |
| flat_prefetch_b8 | flat_prefetch_b8 | FLAT | AMDGPU FLAT vector instruction operating on b8 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| flat_store_b128 | flat_store_b128 | FLAT | gfx1100 | Store 128 bits of data from vector input registers into the flat aperture. | |
| flat_store_b16 | flat_store_b16 | FLAT | gfx1100 | Store 16 bits of data from a vector register into the flat aperture. | |
| flat_store_b32 | flat_store_b32 | FLAT | gfx1100 | Store 32 bits of data from vector input registers into the flat aperture. | |
| flat_store_b64 | flat_store_b64 | FLAT | gfx1100 | Store 64 bits of data from vector input registers into the flat aperture. | |
| flat_store_b8 | flat_store_b8 | FLAT | gfx1100 | Store 8 bits of data from a vector register into the flat aperture. | |
| flat_store_b96 | flat_store_b96 | FLAT | gfx1100 | Store 96 bits of data from vector input registers into the flat aperture. | |
| flat_store_byte | flat_store_byte | FLAT | gfx1100 | Store 8 bits of data from a vector register into the flat aperture. | |
| flat_store_byte_d16_hi | flat_store_byte_d16_hi | FLAT | gfx1100 | Store 8 bits of data from the high 16 bits of a 32-bit vector register into the flat aperture. | |
| flat_store_d16_hi_b16 | flat_store_d16_hi_b16 | FLAT | gfx1100 | Store 16 bits of data from the high 16 bits of a 32-bit vector register into the flat aperture. | |
| flat_store_d16_hi_b8 | flat_store_d16_hi_b8 | FLAT | gfx1100 | Store 8 bits of data from the high 16 bits of a 32-bit vector register into the flat aperture. | |
| flat_store_dword | flat_store_dword | FLAT | gfx1100 | Store 32 bits of data from vector input registers into the flat aperture. | |
| flat_store_dwordx2 | flat_store_dwordx2 | FLAT | gfx1100 | Store 64 bits of data from vector input registers into the flat aperture. | |
| flat_store_dwordx3 | flat_store_dwordx3 | FLAT | gfx1100 | Store 96 bits of data from vector input registers into the flat aperture. | |
| flat_store_dwordx4 | flat_store_dwordx4 | FLAT | gfx1100 | Store 128 bits of data from vector input registers into the flat aperture. | |
| flat_store_short | flat_store_short | FLAT | gfx1100 | Store 16 bits of data from a vector register into the flat aperture. | |
| flat_store_short_d16_hi | flat_store_short_d16_hi | FLAT | gfx1100 | Store 16 bits of data from the high 16 bits of a 32-bit vector register into the flat aperture. | |
| global_atomic_add | global_atomic_add VDST, VADDR, VDATA, SADDR | GLOBAL | gfx942, gfx1100 | Vector Memory Unit | Atomically add a per-lane value to a global-memory location. |
| global_atomic_add_f64 | global_atomic_add_f64 | GLOBAL | gfx942 | Add a double-precision float value in the data register to a location in the global aperture. | |
| global_atomic_add_x2 | global_atomic_add_x2 | GLOBAL | Add two unsigned 64-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_and | global_atomic_and | GLOBAL | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_and_x2 | global_atomic_and_x2 | GLOBAL | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_cmpswap | global_atomic_cmpswap | GLOBAL | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in the global aperture. | ||
| global_atomic_cmpswap_x2 | global_atomic_cmpswap_x2 | GLOBAL | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in the global aperture. | ||
| global_atomic_cond_sub_u32 | global_atomic_cond_sub_u32 | GLOBAL | Subtract an unsigned 32-bit integer value in the data register from a location in the global aperture only if the memory value is greater than or… | ||
| global_atomic_csub | global_atomic_csub | GLOBAL | Subtract an unsigned 32-bit integer location in the global aperture from a value in the data register and clamp the result to zero. | ||
| global_atomic_dec | global_atomic_dec | GLOBAL | Decrement an unsigned 32-bit integer value from a location in the global aperture with wraparound to a value in the data register if the decrement… | ||
| global_atomic_dec_x2 | global_atomic_dec_x2 | GLOBAL | Decrement an unsigned 64-bit integer value from a location in the global aperture with wraparound to a value in the data register if the decrement… | ||
| global_atomic_fmax_x2 | global_atomic_fmax_x2 | GLOBAL | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_fmin_x2 | global_atomic_fmin_x2 | GLOBAL | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_inc | global_atomic_inc | GLOBAL | Increment an unsigned 32-bit integer value from a location in the global aperture with wraparound to 0 if the value exceeds a value in the data… | ||
| global_atomic_inc_x2 | global_atomic_inc_x2 | GLOBAL | Increment an unsigned 64-bit integer value from a location in the global aperture with wraparound to 0 if the value exceeds a value in the data… | ||
| global_atomic_max_f64 | global_atomic_max_f64 | GLOBAL | gfx942 | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in the global aperture. | |
| global_atomic_min_f64 | global_atomic_min_f64 | GLOBAL | gfx942 | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in the global aperture. | |
| global_atomic_or | global_atomic_or | GLOBAL | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_or_x2 | global_atomic_or_x2 | GLOBAL | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_ordered_add_b64 | global_atomic_ordered_add_b64 | GLOBAL | Given an (ID, value) pair in memory, increment the value by a given amount if the ID matches an ID provided by the shader. | ||
| global_atomic_pk_add_bf16 | global_atomic_pk_add_bf16 | GLOBAL | Add a packed 2-component BF16 float value in the data register to a location in the global aperture. | ||
| global_atomic_smax | global_atomic_smax | GLOBAL | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_smax_x2 | global_atomic_smax_x2 | GLOBAL | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_smin | global_atomic_smin | GLOBAL | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_smin_x2 | global_atomic_smin_x2 | GLOBAL | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_sub | global_atomic_sub | GLOBAL | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in the global aperture. | ||
| global_atomic_sub_x2 | global_atomic_sub_x2 | GLOBAL | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in the global aperture. | ||
| global_atomic_swap | global_atomic_swap | GLOBAL | Swap an unsigned 32-bit integer value in the data register with a location in the global aperture. | ||
| global_atomic_swap_x2 | global_atomic_swap_x2 | GLOBAL | Swap an unsigned 64-bit integer value in the data register with a location in the global aperture. | ||
| global_atomic_umax | global_atomic_umax | GLOBAL | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_umax_x2 | global_atomic_umax_x2 | GLOBAL | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_umin | global_atomic_umin | GLOBAL | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_umin_x2 | global_atomic_umin_x2 | GLOBAL | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the global aperture. | ||
| global_atomic_xor | global_atomic_xor | GLOBAL | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in the global aperture. | ||
| global_atomic_xor_x2 | global_atomic_xor_x2 | GLOBAL | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in the global aperture. | ||
| global_inv | global_inv | GLOBAL | Invalidate cache lines based on the SCOPE field. Increments/decrements LOAD_CNT. | ||
| global_load_async_to_lds_b128 | global_load_async_to_lds_b128 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b128 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_async_to_lds_b32 | global_load_async_to_lds_b32 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b32 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_async_to_lds_b64 | global_load_async_to_lds_b64 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_async_to_lds_b8 | global_load_async_to_lds_b8 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b8 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_block | global_load_block | GLOBAL | Load a block of data from the global aperture. | ||
| global_load_dword | global_load_dword VDST, VADDR, SADDR, offset | GLOBAL | gfx942, gfx1100 | Vector Memory Unit | Load one 32-bit dword per lane from the global address space using a 64-bit per-lane address. |
| global_load_dword_addtid | global_load_dword_addtid | GLOBAL | Load 32 bits of data from the global aperture into a vector register. | ||
| global_load_dwordx2 | global_load_dwordx2 | GLOBAL | Load 64 bits of data from the global aperture into a vector register. | ||
| global_load_dwordx3 | global_load_dwordx3 | GLOBAL | Load 96 bits of data from the global aperture into a vector register. | ||
| global_load_dwordx4 | global_load_dwordx4 | GLOBAL | Load 128 bits of data from the global aperture into a vector register. | ||
| global_load_lds_dword | global_load_lds_dword | GLOBAL | Load 32 bits of untyped data from the global aperture and store the result into a data share. | ||
| global_load_lds_dwordx3 | global_load_lds_dwordx3 | GLOBAL | Untyped buffer load 3 dwords, store result into data share. | ||
| global_load_lds_dwordx4 | global_load_lds_dwordx4 | GLOBAL | Untyped buffer load 4 dwords, store result into data share. | ||
| global_load_lds_sbyte | global_load_lds_sbyte | GLOBAL | Load 8 bits of untyped data from the global aperture, sign extend to 32 bits and store the result into a data share. | ||
| global_load_lds_sshort | global_load_lds_sshort | GLOBAL | Load 16 bits of untyped data from the global aperture, sign extend to 32 bits and store the result into a data share. | ||
| global_load_lds_ubyte | global_load_lds_ubyte | GLOBAL | Load 8 bits of untyped data from the global aperture, zero extend to 32 bits and store the result into a data share. | ||
| global_load_lds_ushort | global_load_lds_ushort | GLOBAL | Load 16 bits of untyped data from the global aperture, zero extend to 32 bits and store the result into a data share. | ||
| global_load_monitor_b128 | global_load_monitor_b128 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b128 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_monitor_b32 | global_load_monitor_b32 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b32 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_monitor_b64 | global_load_monitor_b64 | GLOBAL | AMDGPU GLOBAL vector instruction operating on b64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| global_load_sbyte | global_load_sbyte | GLOBAL | Load 8 bits of signed data from the global aperture, sign extend to 32 bits and store the result into a vector register. | ||
| global_load_sbyte_d16 | global_load_sbyte_d16 | GLOBAL | Load 8 bits of signed data from the global aperture, sign extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | ||
| global_load_sbyte_d16_hi | global_load_sbyte_d16_hi | GLOBAL | Load 8 bits of signed data from the global aperture, sign extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | ||
| global_load_short_d16 | global_load_short_d16 | GLOBAL | Load 16 bits of unsigned data from the global aperture and store the result into the low 16 bits of a 32-bit vector register. | ||
| global_load_short_d16_hi | global_load_short_d16_hi | GLOBAL | Load 16 bits of unsigned data from the global aperture and store the result into the high 16 bits of a 32-bit vector register. | ||
| global_load_sshort | global_load_sshort | GLOBAL | Load 16 bits of signed data from the global 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 ↗