Buffer Memory Instructions
182 AMDGPU instructions in this category - showing 100 per page, page 1 of 2 - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | 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. |
| 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. |
| 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. |
| buffer_atomic_add_u32 | buffer_atomic_add_u32 | MUBUF | Add two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. |
| buffer_atomic_add_u64 | buffer_atomic_add_u64 | MUBUF | Add two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. |
| 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. |
| 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. |
| buffer_atomic_and_b32 | buffer_atomic_and_b32 | MUBUF | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. |
| buffer_atomic_and_b64 | buffer_atomic_and_b64 | MUBUF | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. |
| 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. |
| 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. |
| buffer_atomic_cmpswap_b32 | buffer_atomic_cmpswap_b32 | MUBUF | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in a buffer surface. |
| buffer_atomic_cmpswap_b64 | buffer_atomic_cmpswap_b64 | MUBUF | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in a buffer surface. |
| buffer_atomic_cmpswap_f32 | buffer_atomic_cmpswap_f32 | MUBUF | Compare two single-precision float values stored in the data comparison register and a location in a buffer surface. |
| 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. |
| 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… |
| 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. |
| 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. |
| 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… |
| buffer_atomic_dec_u32 | buffer_atomic_dec_u32 | 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… |
| buffer_atomic_dec_u64 | buffer_atomic_dec_u64 | 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… |
| 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… |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| buffer_atomic_inc_u32 | buffer_atomic_inc_u32 | 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. |
| buffer_atomic_inc_u64 | buffer_atomic_inc_u64 | 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. |
| 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. |
| 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. |
| 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. |
| buffer_atomic_max_i32 | buffer_atomic_max_i32 | 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. |
| buffer_atomic_max_i64 | buffer_atomic_max_i64 | 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. |
| buffer_atomic_max_num_f32 | buffer_atomic_max_num_f32 | MUBUF | 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. |
| buffer_atomic_max_num_f64 | buffer_atomic_max_num_f64 | MUBUF | AMDGPU MUBUF vector instruction operating on f64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| buffer_atomic_max_u32 | buffer_atomic_max_u32 | 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. |
| buffer_atomic_max_u64 | buffer_atomic_max_u64 | 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. |
| 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. |
| 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. |
| buffer_atomic_min_i32 | buffer_atomic_min_i32 | 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. |
| buffer_atomic_min_i64 | buffer_atomic_min_i64 | 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. |
| buffer_atomic_min_num_f32 | buffer_atomic_min_num_f32 | MUBUF | 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. |
| buffer_atomic_min_num_f64 | buffer_atomic_min_num_f64 | MUBUF | AMDGPU MUBUF vector instruction operating on f64 data. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| buffer_atomic_min_u32 | buffer_atomic_min_u32 | 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. |
| buffer_atomic_min_u64 | buffer_atomic_min_u64 | 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. |
| 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. |
| buffer_atomic_or_b32 | buffer_atomic_or_b32 | MUBUF | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. |
| buffer_atomic_or_b64 | buffer_atomic_or_b64 | MUBUF | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| buffer_atomic_sub_clamp_u32 | buffer_atomic_sub_clamp_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. |
| buffer_atomic_sub_u32 | buffer_atomic_sub_u32 | MUBUF | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in a buffer surface. |
| buffer_atomic_sub_u64 | buffer_atomic_sub_u64 | MUBUF | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in a buffer surface. |
| 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. |
| 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. |
| buffer_atomic_swap_b32 | buffer_atomic_swap_b32 | MUBUF | Swap an unsigned 32-bit integer value in the data register with a location in a buffer surface. |
| buffer_atomic_swap_b64 | buffer_atomic_swap_b64 | MUBUF | Swap an unsigned 64-bit integer value in the data register with a location in a buffer surface. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| buffer_atomic_xor_b32 | buffer_atomic_xor_b32 | MUBUF | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a buffer surface. |
| buffer_atomic_xor_b64 | buffer_atomic_xor_b64 | MUBUF | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a buffer surface. |
| 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. |
| buffer_gl0_inv | buffer_gl0_inv | MUBUF | Write back and invalidate the shader L0. Returns ACK to shader. |
| buffer_gl1_inv | buffer_gl1_inv | MUBUF | 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 | Load 128 bits of data from a buffer surface into a vector register. |
| buffer_load_b32 | buffer_load_b32 | MUBUF | Load 32 bits of data from a buffer surface into a vector register. |
| buffer_load_b64 | buffer_load_b64 | MUBUF | Load 64 bits of data from a buffer surface into a vector register. |
| buffer_load_b96 | buffer_load_b96 | MUBUF | Load 96 bits of data from a buffer surface into a vector register. |
| buffer_load_d16_b16 | buffer_load_d16_b16 | MUBUF | 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 | 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… |
| buffer_load_d16_format_xy | buffer_load_d16_format_xy | MUBUF | 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… |
| buffer_load_d16_format_xyz | buffer_load_d16_format_xyz | MUBUF | 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… |
| buffer_load_d16_format_xyzw | buffer_load_d16_format_xyzw | MUBUF | 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… |
| buffer_load_d16_hi_b16 | buffer_load_d16_hi_b16 | MUBUF | 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 | 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… |
| buffer_load_d16_hi_i8 | buffer_load_d16_hi_i8 | MUBUF | 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 | 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 | 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 | 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 | 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. |