AMDGPU / GFX Instructions GPU Native ISA AMD
2,442 instructions - showing 100 per page, page 1 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 |
|---|---|---|---|---|---|
| buffer_atomic_add | buffer_atomic_add | MUBUF | Add two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_add_f32 | buffer_atomic_add_f32 | MUBUF | Add two single-precision float values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | ||
| buffer_atomic_add_f64 | buffer_atomic_add_f64 | MUBUF | Add a double-precision float value in the data register to a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_add_u32 | buffer_atomic_add_u32 | MUBUF | gfx1100 | Add two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_add_u64 | buffer_atomic_add_u64 | MUBUF | gfx1100 | Add two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_add_x2 | buffer_atomic_add_x2 | MUBUF | Add two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_and | buffer_atomic_and | MUBUF | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_and_b32 | buffer_atomic_and_b32 | MUBUF | gfx1100 | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_and_b64 | buffer_atomic_and_b64 | MUBUF | gfx1100 | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_and_x2 | buffer_atomic_and_x2 | MUBUF | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_cmpswap | buffer_atomic_cmpswap | MUBUF | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | ||
| buffer_atomic_cmpswap_b32 | buffer_atomic_cmpswap_b32 | MUBUF | gfx1100 | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | |
| buffer_atomic_cmpswap_b64 | buffer_atomic_cmpswap_b64 | MUBUF | gfx1100 | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | |
| buffer_atomic_cmpswap_f32 | buffer_atomic_cmpswap_f32 | MUBUF | gfx1100 | Compare two single-precision float values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | |
| buffer_atomic_cmpswap_x2 | buffer_atomic_cmpswap_x2 | MUBUF | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | ||
| buffer_atomic_cond_sub_u32 | buffer_atomic_cond_sub_u32 | MUBUF | Subtract an unsigned 32-bit integer value in the data register from a location in a buffer surface only if the memory value is greater than or equal to the data register value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | ||
| buffer_atomic_csub | buffer_atomic_csub | MUBUF | Subtract an unsigned 32-bit integer location in a buffer surface from a value in the data register and clamp the result to zero. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_csub_u32 | buffer_atomic_csub_u32 | MUBUF | Subtract an unsigned 32-bit integer location in a buffer surface from a value in the data register and clamp the result to zero. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_dec | buffer_atomic_dec | MUBUF | Decrement an unsigned 32-bit integer value from a location in a buffer surface with wraparound to a value in the data register if the decrement yields a negative value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_dec_u32 | buffer_atomic_dec_u32 | MUBUF | gfx1100 | Decrement an unsigned 32-bit integer value from a location in a buffer surface with wraparound to a value in the data register if the decrement yields a negative value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_dec_u64 | buffer_atomic_dec_u64 | MUBUF | gfx1100 | Decrement an unsigned 64-bit integer value from a location in a buffer surface with wraparound to a value in the data register if the decrement yields a negative value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_dec_x2 | buffer_atomic_dec_x2 | MUBUF | Decrement an unsigned 64-bit integer value from a location in a buffer surface with wraparound to a value in the data register if the decrement yields a negative value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_fcmpswap | buffer_atomic_fcmpswap | MUBUF | Compare two single-precision float values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | ||
| buffer_atomic_fcmpswap_x2 | buffer_atomic_fcmpswap_x2 | MUBUF | Compare two double-precision float values stored in the data comparison register and a location in a buffer surface. Modify the memory location with a value in the data source register iff the comparison is equal. | ||
| buffer_atomic_fmax | buffer_atomic_fmax | MUBUF | Select the maximum of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_fmax_x2 | buffer_atomic_fmax_x2 | MUBUF | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_fmin | buffer_atomic_fmin | MUBUF | Select the minimum of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_fmin_x2 | buffer_atomic_fmin_x2 | MUBUF | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_inc | buffer_atomic_inc | MUBUF | Increment an unsigned 32-bit integer value from a location in a buffer surface with wraparound to 0 if the value exceeds a value in the data register. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_inc_u32 | buffer_atomic_inc_u32 | MUBUF | gfx1100 | Increment an unsigned 32-bit integer value from a location in a buffer surface with wraparound to 0 if the value exceeds a value in the data register. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_inc_u64 | buffer_atomic_inc_u64 | MUBUF | gfx1100 | Increment an unsigned 64-bit integer value from a location in a buffer surface with wraparound to 0 if the value exceeds a value in the data register. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_inc_x2 | buffer_atomic_inc_x2 | MUBUF | Increment an unsigned 64-bit integer value from a location in a buffer surface with wraparound to 0 if the value exceeds a value in the data register. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_max_f32 | buffer_atomic_max_f32 | MUBUF | Select the maximum of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_max_f64 | buffer_atomic_max_f64 | MUBUF | Select the maximum of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_max_i32 | buffer_atomic_max_i32 | MUBUF | gfx1100 | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_max_i64 | buffer_atomic_max_i64 | MUBUF | gfx1100 | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_max_num_f32 | buffer_atomic_max_num_f32 | MUBUF | gfx1100 | Select the IEEE maximumNumber() of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_max_num_f64 | buffer_atomic_max_num_f64 | MUBUF | Select the IEEE maximumNumber() of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | ||
| buffer_atomic_max_u32 | buffer_atomic_max_u32 | MUBUF | gfx1100 | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_max_u64 | buffer_atomic_max_u64 | MUBUF | gfx1100 | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_min_f32 | buffer_atomic_min_f32 | MUBUF | Select the minimum of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the GLC bit is set. | ||
| buffer_atomic_min_f64 | buffer_atomic_min_f64 | MUBUF | Select the minimum of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_min_i32 | buffer_atomic_min_i32 | MUBUF | gfx1100 | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_min_i64 | buffer_atomic_min_i64 | MUBUF | gfx1100 | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_min_num_f32 | buffer_atomic_min_num_f32 | MUBUF | gfx1100 | Select the IEEE minimumNumber() of two single-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_min_num_f64 | buffer_atomic_min_num_f64 | MUBUF | Select the IEEE minimumNumber() of two double-precision float inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | ||
| buffer_atomic_min_u32 | buffer_atomic_min_u32 | MUBUF | gfx1100 | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_min_u64 | buffer_atomic_min_u64 | MUBUF | gfx1100 | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. | |
| buffer_atomic_or | buffer_atomic_or | MUBUF | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_or_b32 | buffer_atomic_or_b32 | MUBUF | gfx1100 | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_or_b64 | buffer_atomic_or_b64 | MUBUF | gfx1100 | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_or_x2 | buffer_atomic_or_x2 | MUBUF | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_pk_add_bf16 | buffer_atomic_pk_add_bf16 | MUBUF | Add a packed 2-component BF16 float value from the data register to a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | ||
| buffer_atomic_pk_add_f16 | buffer_atomic_pk_add_f16 | MUBUF | Add a packed 2-component half-precision float value from the data register to a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | ||
| buffer_atomic_rsub | buffer_atomic_rsub | MUBUF | AMDGPU MUBUF vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| buffer_atomic_rsub_x2 | buffer_atomic_rsub_x2 | MUBUF | AMDGPU MUBUF vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) | ||
| buffer_atomic_smax | buffer_atomic_smax | MUBUF | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_smax_x2 | buffer_atomic_smax_x2 | MUBUF | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_smin | buffer_atomic_smin | MUBUF | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_smin_x2 | buffer_atomic_smin_x2 | MUBUF | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_sub | buffer_atomic_sub | MUBUF | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_sub_clamp_u32 | buffer_atomic_sub_clamp_u32 | MUBUF | gfx1100 | Subtract an unsigned 32-bit integer location in a buffer surface from a value in the data register and clamp the result to zero. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_sub_u32 | buffer_atomic_sub_u32 | MUBUF | gfx1100 | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_sub_u64 | buffer_atomic_sub_u64 | MUBUF | gfx1100 | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_sub_x2 | buffer_atomic_sub_x2 | MUBUF | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_swap | buffer_atomic_swap | MUBUF | Swap an unsigned 32-bit integer value in the data register with a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_swap_b32 | buffer_atomic_swap_b32 | MUBUF | gfx1100 | Swap an unsigned 32-bit integer value in the data register with a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_swap_b64 | buffer_atomic_swap_b64 | MUBUF | gfx1100 | Swap an unsigned 64-bit integer value in the data register with a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_swap_x2 | buffer_atomic_swap_x2 | MUBUF | Swap an unsigned 64-bit integer value in the data register with a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_umax | buffer_atomic_umax | MUBUF | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_umax_x2 | buffer_atomic_umax_x2 | MUBUF | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_umin | buffer_atomic_umin | MUBUF | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_umin_x2 | buffer_atomic_umin_x2 | MUBUF | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a buffer surface. Update the buffer surface with the selected value. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_xor | buffer_atomic_xor | MUBUF | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_atomic_xor_b32 | buffer_atomic_xor_b32 | MUBUF | gfx1100 | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_xor_b64 | buffer_atomic_xor_b64 | MUBUF | gfx1100 | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the temporal hint enables atomic return. | |
| buffer_atomic_xor_x2 | buffer_atomic_xor_x2 | MUBUF | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. Store the original value from buffer surface into a vector register iff the SC0 bit is set. | ||
| buffer_gl0_inv | buffer_gl0_inv | MUBUF | gfx1100 | Write back and invalidate the shader L0. Returns ACK to shader. | |
| buffer_gl1_inv | buffer_gl1_inv | MUBUF | gfx1100 | Invalidate the GL1 cache only. Returns ACK to shader. | |
| buffer_inv | buffer_inv | MUBUF | Invalidate CU and/or L2 cache depending on sc0 and sc1 bits. Returns ACK to shader. | ||
| buffer_invl2 | buffer_invl2 | MUBUF | Invalidate L2 cache. Returns ACK to shader. | ||
| buffer_load_b128 | buffer_load_b128 | MUBUF | gfx1100 | Load 128 bits of data from a buffer surface into a vector register. | |
| buffer_load_b32 | buffer_load_b32 | MUBUF | gfx1100 | Load 32 bits of data from a buffer surface into a vector register. | |
| buffer_load_b64 | buffer_load_b64 | MUBUF | gfx1100 | Load 64 bits of data from a buffer surface into a vector register. | |
| buffer_load_b96 | buffer_load_b96 | MUBUF | gfx1100 | Load 96 bits of data from a buffer surface into a vector register. | |
| buffer_load_d16_b16 | buffer_load_d16_b16 | MUBUF | gfx1100 | Load 16 bits of unsigned data from a buffer surface and store the result into the low 16 bits of a 32-bit vector register. | |
| buffer_load_d16_format_x | buffer_load_d16_format_x | MUBUF | gfx1100 | Load 1-component formatted data from a buffer surface, convert the data to packed 16 bit integral or floating point format, then store the result into the low 16 bits of a 32-bit vector register. The resource descriptor specifies the data format of the surface. | |
| buffer_load_d16_format_xy | buffer_load_d16_format_xy | MUBUF | gfx1100 | Load 2-component formatted data from a buffer surface, convert the data to packed 16 bit integral or floating point format, then store the result into a vector register. The resource descriptor specifies the data format of the surface. | |
| buffer_load_d16_format_xyz | buffer_load_d16_format_xyz | MUBUF | gfx1100 | Load 3-component formatted data from a buffer surface, convert the data to packed 16 bit integral or floating point format, then store the result into a vector register. The resource descriptor specifies the data format of the surface. | |
| buffer_load_d16_format_xyzw | buffer_load_d16_format_xyzw | MUBUF | gfx1100 | Load 4-component formatted data from a buffer surface, convert the data to packed 16 bit integral or floating point format, then store the result into a vector register. The resource descriptor specifies the data format of the surface. | |
| buffer_load_d16_hi_b16 | buffer_load_d16_hi_b16 | MUBUF | gfx1100 | Load 16 bits of unsigned data from a buffer surface and store the result into the high 16 bits of a 32-bit vector register. | |
| buffer_load_d16_hi_format_x | buffer_load_d16_hi_format_x | MUBUF | gfx1100 | Load 1-component formatted data from a buffer surface, convert the data to packed 16 bit integral or floating point format, then store the result into the high 16 bits of a 32-bit vector register. The resource descriptor specifies the data format of the surface. | |
| buffer_load_d16_hi_i8 | buffer_load_d16_hi_i8 | MUBUF | gfx1100 | Load 8 bits of signed data from a buffer surface, sign extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | |
| buffer_load_d16_hi_u8 | buffer_load_d16_hi_u8 | MUBUF | gfx1100 | Load 8 bits of unsigned data from a buffer surface, zero extend to 16 bits and store the result into the high 16 bits of a 32-bit vector register. | |
| buffer_load_d16_i8 | buffer_load_d16_i8 | MUBUF | gfx1100 | Load 8 bits of signed data from a buffer surface, sign extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | |
| buffer_load_d16_u8 | buffer_load_d16_u8 | MUBUF | gfx1100 | Load 8 bits of unsigned data from a buffer surface, zero extend to 16 bits and store the result into the low 16 bits of a 32-bit vector register. | |
| buffer_load_dword | buffer_load_dword VDST, VADDR, SRSRC, offset | MUBUF | gfx942, gfx1100 | Vector Memory Unit | Load one 32-bit dword per lane through a buffer (raw/structured) resource descriptor. |
| buffer_load_dwordx2 | buffer_load_dwordx2 | MUBUF | Load 64 bits of data from a buffer surface into a vector register. | ||
| buffer_load_dwordx3 | buffer_load_dwordx3 | MUBUF | Load 96 bits of data from a buffer surface into a vector register. | ||
| buffer_load_dwordx4 | buffer_load_dwordx4 | MUBUF | Load 128 bits of data from a buffer surface into a vector register. |
Source
Instruction names, formats and GFX targets come from LLVM's AMDGPU backend. Operands, bit layouts and the instructions that backend's TableGen does not reach come from AMD's machine-readable ISA specification; descriptions and semantics from AMD's own manuals and that specification; examples from LLVM's assembler tests. Each instruction page cites the sources it uses; AMD's ROCm documentation hub is the architecture-level reference. AMD machine-readable ISA specification ↗ · AMD Instinct MI300 ISA manual ↗ · LLVM AMDGPU backend ↗ · ROCm documentation ↗