Buffer Memory Instructions
104 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_i16 | buffer_load_i16 | MUBUF | Load 16 bits of signed data from a buffer surface, sign extend to 32 bits and store the result into a vector register. |
| buffer_load_i8 | buffer_load_i8 | MUBUF | Load 8 bits of signed data from a buffer surface, sign extend to 32 bits and store the result into a vector register. |
| buffer_load_u16 | buffer_load_u16 | MUBUF | Load 16 bits of unsigned data from a buffer surface, zero extend to 32 bits and store the result into a vector register. |
| buffer_load_u8 | buffer_load_u8 | MUBUF | Load 8 bits of unsigned data from a buffer surface, zero extend to 32 bits and store the result into a vector register. |
| buffer_store_b128 | buffer_store_b128 | MUBUF | Store 128 bits of data from vector input registers into a buffer surface. |
| buffer_store_b16 | buffer_store_b16 | MUBUF | Store 16 bits of data from a vector register into a buffer surface. |
| buffer_store_b32 | buffer_store_b32 | MUBUF | Store 32 bits of data from vector input registers into a buffer surface. |
| buffer_store_b64 | buffer_store_b64 | MUBUF | Store 64 bits of data from vector input registers into a buffer surface. |
| buffer_store_b8 | buffer_store_b8 | MUBUF | Store 8 bits of data from a vector register into a buffer surface. |
| buffer_store_b96 | buffer_store_b96 | MUBUF | Store 96 bits of data from vector input registers into a buffer surface. |
| buffer_store_d16_format_x | buffer_store_d16_format_x | MUBUF | Convert 16 bits of data from the low 16 bits of a 32-bit vector input register into 1-component formatted data and store the data into a buffer… |
| buffer_store_d16_format_xy | buffer_store_d16_format_xy | MUBUF | Convert 32 bits of data from vector input registers into 2-component formatted data and store the data into a buffer surface. |
| buffer_store_d16_format_xyz | buffer_store_d16_format_xyz | MUBUF | Convert 48 bits of data from vector input registers into 3-component formatted data and store the data into a buffer surface. |
| buffer_store_d16_format_xyzw | buffer_store_d16_format_xyzw | MUBUF | Convert 64 bits of data from vector input registers into 4-component formatted data and store the data into a buffer surface. |
| buffer_store_d16_hi_b16 | buffer_store_d16_hi_b16 | MUBUF | Store 16 bits of data from the high 16 bits of a 32-bit vector register into a buffer surface. |
| buffer_store_d16_hi_b8 | buffer_store_d16_hi_b8 | MUBUF | Store 8 bits of data from the high 16 bits of a 32-bit vector register into a buffer surface. |
| buffer_store_d16_hi_format_x | buffer_store_d16_hi_format_x | MUBUF | Convert 16 bits of data from the high 16 bits of a 32-bit vector input register into 1-component formatted data and store the data into a buffer… |
| buffer_store_lds_dword | buffer_store_lds_dword | MUBUF | Store one DWORD from LDS memory to system memory without utilizing VGPRs. |
| buffer_wbinvl1_sc | buffer_wbinvl1_sc | MUBUF | AMDGPU MUBUF vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| buffer_wbinvl1_vol | buffer_wbinvl1_vol | MUBUF | Write back and invalidate the shader L1 only for lines that are marked volatile. Returns ACK to shader. |
| buffer_wbl2 | buffer_wbl2 | MUBUF | Write back L2 cache. Returns ACK to shader. |
| tbuffer_load_d16_format_x | tbuffer_load_d16_format_x | MTBUF | 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… |
| tbuffer_load_d16_format_xy | tbuffer_load_d16_format_xy | MTBUF | 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… |
| tbuffer_load_d16_format_xyz | tbuffer_load_d16_format_xyz | MTBUF | 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… |
| tbuffer_load_d16_format_xyzw | tbuffer_load_d16_format_xyzw | MTBUF | 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… |
| tbuffer_load_format_d16_x | tbuffer_load_format_d16_x | MTBUF | 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… |
| tbuffer_load_format_d16_xy | tbuffer_load_format_d16_xy | MTBUF | 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… |
| tbuffer_load_format_d16_xyz | tbuffer_load_format_d16_xyz | MTBUF | 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… |
| tbuffer_load_format_d16_xyzw | tbuffer_load_format_d16_xyzw | MTBUF | 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… |
| tbuffer_load_format_x | tbuffer_load_format_x | MTBUF | Load 1-component formatted data from a buffer surface, convert the data to 32 bit integral or floating point format, then store the result into a… |
| tbuffer_load_format_xy | tbuffer_load_format_xy | MTBUF | Load 2-component formatted data from a buffer surface, convert the data to 32 bit integral or floating point format, then store the result into a… |
| tbuffer_load_format_xyz | tbuffer_load_format_xyz | MTBUF | Load 3-component formatted data from a buffer surface, convert the data to 32 bit integral or floating point format, then store the result into a… |
| tbuffer_load_format_xyzw | tbuffer_load_format_xyzw | MTBUF | Load 4-component formatted data from a buffer surface, convert the data to 32 bit integral or floating point format, then store the result into a… |
| tbuffer_store_d16_format_x | tbuffer_store_d16_format_x | MTBUF | Convert 16 bits of data from vector input registers into 1-component formatted data and store the data into a buffer surface. |
| tbuffer_store_d16_format_xy | tbuffer_store_d16_format_xy | MTBUF | Convert 32 bits of data from vector input registers into 2-component formatted data and store the data into a buffer surface. |
| tbuffer_store_d16_format_xyz | tbuffer_store_d16_format_xyz | MTBUF | Convert 48 bits of data from vector input registers into 3-component formatted data and store the data into a buffer surface. |
| tbuffer_store_d16_format_xyzw | tbuffer_store_d16_format_xyzw | MTBUF | Convert 64 bits of data from vector input registers into 4-component formatted data and store the data into a buffer surface. |
| tbuffer_store_format_d16_x | tbuffer_store_format_d16_x | MTBUF | Convert 16 bits of data from vector input registers into 1-component formatted data and store the data into a buffer surface. |
| tbuffer_store_format_d16_xy | tbuffer_store_format_d16_xy | MTBUF | Convert 32 bits of data from vector input registers into 2-component formatted data and store the data into a buffer surface. |
| tbuffer_store_format_d16_xyz | tbuffer_store_format_d16_xyz | MTBUF | Convert 48 bits of data from vector input registers into 3-component formatted data and store the data into a buffer surface. |
| tbuffer_store_format_d16_xyzw | tbuffer_store_format_d16_xyzw | MTBUF | Convert 64 bits of data from vector input registers into 4-component formatted data and store the data into a buffer surface. |