Scalar Memory Instructions
110 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 |
|---|---|---|---|
| s_atc_probe | s_atc_probe | SMEM | Probe or prefetch an address into the scalar data cache. |
| s_atc_probe_buffer | s_atc_probe_buffer | SMEM | Probe or prefetch an address into the scalar data cache. |
| s_atomic_add | s_atomic_add | SMEM | Add two unsigned 32-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_add_x2 | s_atomic_add_x2 | SMEM | Add two unsigned 64-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_and | s_atomic_and | SMEM | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_and_x2 | s_atomic_and_x2 | SMEM | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_cmpswap | s_atomic_cmpswap | SMEM | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in the scalar memory. |
| s_atomic_cmpswap_x2 | s_atomic_cmpswap_x2 | SMEM | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in the scalar memory. |
| s_atomic_dec | s_atomic_dec | SMEM | Decrement an unsigned 32-bit integer value from a location in the scalar memory with wraparound to a value in the data register if the decrement… |
| s_atomic_dec_x2 | s_atomic_dec_x2 | SMEM | Decrement an unsigned 64-bit integer value from a location in the scalar memory with wraparound to a value in the data register if the decrement… |
| s_atomic_inc | s_atomic_inc | SMEM | Increment an unsigned 32-bit integer value from a location in the scalar memory with wraparound to 0 if the value exceeds a value in the data… |
| s_atomic_inc_x2 | s_atomic_inc_x2 | SMEM | Increment an unsigned 64-bit integer value from a location in the scalar memory with wraparound to 0 if the value exceeds a value in the data… |
| s_atomic_or | s_atomic_or | SMEM | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_or_x2 | s_atomic_or_x2 | SMEM | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_smax | s_atomic_smax | SMEM | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_smax_x2 | s_atomic_smax_x2 | SMEM | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_smin | s_atomic_smin | SMEM | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_smin_x2 | s_atomic_smin_x2 | SMEM | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_sub | s_atomic_sub | SMEM | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in the scalar memory. |
| s_atomic_sub_x2 | s_atomic_sub_x2 | SMEM | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in the scalar memory. |
| s_atomic_swap | s_atomic_swap | SMEM | Swap an unsigned 32-bit integer value in the data register with a location in the scalar memory. |
| s_atomic_swap_x2 | s_atomic_swap_x2 | SMEM | Swap an unsigned 64-bit integer value in the data register with a location in the scalar memory. |
| s_atomic_umax | s_atomic_umax | SMEM | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_umax_x2 | s_atomic_umax_x2 | SMEM | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_umin | s_atomic_umin | SMEM | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_umin_x2 | s_atomic_umin_x2 | SMEM | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in the scalar memory. |
| s_atomic_xor | s_atomic_xor | SMEM | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in the scalar memory. |
| s_atomic_xor_x2 | s_atomic_xor_x2 | SMEM | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in the scalar memory. |
| s_buffer_atomic_add | s_buffer_atomic_add | SMEM | Add two unsigned 32-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_add_x2 | s_buffer_atomic_add_x2 | SMEM | Add two unsigned 64-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_and | s_buffer_atomic_and | SMEM | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_and_x2 | s_buffer_atomic_and_x2 | SMEM | Calculate bitwise AND given two unsigned 64-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_cmpswap | s_buffer_atomic_cmpswap | SMEM | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in a scalar buffer surface. |
| s_buffer_atomic_cmpswap_x2 | s_buffer_atomic_cmpswap_x2 | SMEM | Compare two unsigned 64-bit integer values stored in the data comparison register and a location in a scalar buffer surface. |
| s_buffer_atomic_dec | s_buffer_atomic_dec | SMEM | Decrement an unsigned 32-bit integer value from a location in a scalar buffer surface with wraparound to a value in the data register if the… |
| s_buffer_atomic_dec_x2 | s_buffer_atomic_dec_x2 | SMEM | Decrement an unsigned 64-bit integer value from a location in a scalar buffer surface with wraparound to a value in the data register if the… |
| s_buffer_atomic_inc | s_buffer_atomic_inc | SMEM | Increment an unsigned 32-bit integer value from a location in a scalar buffer surface with wraparound to 0 if the value exceeds a value in the data… |
| s_buffer_atomic_inc_x2 | s_buffer_atomic_inc_x2 | SMEM | Increment an unsigned 64-bit integer value from a location in a scalar buffer surface with wraparound to 0 if the value exceeds a value in the data… |
| s_buffer_atomic_or | s_buffer_atomic_or | SMEM | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_or_x2 | s_buffer_atomic_or_x2 | SMEM | Calculate bitwise OR given two unsigned 64-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_smax | s_buffer_atomic_smax | SMEM | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_smax_x2 | s_buffer_atomic_smax_x2 | SMEM | Select the maximum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_smin | s_buffer_atomic_smin | SMEM | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_smin_x2 | s_buffer_atomic_smin_x2 | SMEM | Select the minimum of two signed 64-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_sub | s_buffer_atomic_sub | SMEM | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in a scalar buffer surface. |
| s_buffer_atomic_sub_x2 | s_buffer_atomic_sub_x2 | SMEM | Subtract an unsigned 64-bit integer value stored in the data register from a value stored in a location in a scalar buffer surface. |
| s_buffer_atomic_swap | s_buffer_atomic_swap | SMEM | Swap an unsigned 32-bit integer value in the data register with a location in a scalar buffer surface. |
| s_buffer_atomic_swap_x2 | s_buffer_atomic_swap_x2 | SMEM | Swap an unsigned 64-bit integer value in the data register with a location in a scalar buffer surface. |
| s_buffer_atomic_umax | s_buffer_atomic_umax | SMEM | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_umax_x2 | s_buffer_atomic_umax_x2 | SMEM | Select the maximum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_umin | s_buffer_atomic_umin | SMEM | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_umin_x2 | s_buffer_atomic_umin_x2 | SMEM | Select the minimum of two unsigned 64-bit integer inputs, given two values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_xor | s_buffer_atomic_xor | SMEM | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_atomic_xor_x2 | s_buffer_atomic_xor_x2 | SMEM | Calculate bitwise XOR given two unsigned 64-bit integer values stored in the data register and a location in a scalar buffer surface. |
| s_buffer_load_b128 | s_buffer_load_b128 | SMEM | Load 128 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_b256 | s_buffer_load_b256 | SMEM | Load 256 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_b32 | s_buffer_load_b32 | SMEM | Load 32 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_b512 | s_buffer_load_b512 | SMEM | Load 512 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_b64 | s_buffer_load_b64 | SMEM | Load 64 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_b96 | s_buffer_load_b96 | SMEM | Load 96 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_dword | s_buffer_load_dword | SMEM | Load 32 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_dwordx16 | s_buffer_load_dwordx16 | SMEM | Load 512 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_dwordx2 | s_buffer_load_dwordx2 | SMEM | Load 64 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_dwordx4 | s_buffer_load_dwordx4 | SMEM | Load 128 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_dwordx8 | s_buffer_load_dwordx8 | SMEM | Load 256 bits of data from a scalar buffer surface into a scalar register. |
| s_buffer_load_i16 | s_buffer_load_i16 | SMEM | Load 16 bits of signed data from a scalar buffer surface, sign extend to 32 bits and store the result into a scalar register. |
| s_buffer_load_i8 | s_buffer_load_i8 | SMEM | Load 8 bits of signed data from a scalar buffer surface, sign extend to 32 bits and store the result into a scalar register. |
| s_buffer_load_u16 | s_buffer_load_u16 | SMEM | Load 16 bits of unsigned data from a scalar buffer surface, zero extend to 32 bits and store the result into a scalar register. |
| s_buffer_load_u8 | s_buffer_load_u8 | SMEM | Load 8 bits of unsigned data from a scalar buffer surface, zero extend to 32 bits and store the result into a scalar register. |
| s_buffer_prefetch_data | s_buffer_prefetch_data | SMEM | Prefetch data into the scalar data cache, relative to a base address provided in a resource descriptor constant. |
| s_buffer_store_dword | s_buffer_store_dword | SMEM | Store 32 bits of data from a scalar register into a scalar buffer surface. |
| s_buffer_store_dwordx2 | s_buffer_store_dwordx2 | SMEM | Store 64 bits of data from a scalar register into a scalar buffer surface. |
| s_buffer_store_dwordx4 | s_buffer_store_dwordx4 | SMEM | Store 128 bits of data from a scalar register into a scalar buffer surface. |
| s_dcache_discard | s_dcache_discard | SMEM | Discard one dirty scalar data L0 cache line. A cache line is 64 bytes. |
| s_dcache_discard_x2 | s_dcache_discard_x2 | SMEM | Discard two consecutive dirty scalar data L0 cache lines. A cache line is 64 bytes. |
| s_dcache_inv | s_dcache_inv | SMEM | Invalidate the scalar (L0) data cache. |
| s_dcache_inv_vol | s_dcache_inv_vol | SMEM | Invalidate the scalar (L0) data cache volatile lines. |
| s_dcache_wb | s_dcache_wb | SMEM | Write back dirty data in the scalar (L0) data cache. |
| s_dcache_wb_vol | s_dcache_wb_vol | SMEM | Write back dirty data in the scalar (L0) data cache volatile lines. |
| s_get_waveid_in_workgroup | s_get_waveid_in_workgroup | SMEM | Return the wave's ID within a workgroup 0-(N-1). |
| s_gl1_inv | s_gl1_inv | SMEM | Invalidate the GL1 cache only. |
| s_load_b128 | s_load_b128 | SMEM | Load 128 bits of data from the scalar memory into a scalar register. |
| s_load_b256 | s_load_b256 | SMEM | Load 256 bits of data from the scalar memory into a scalar register. |
| s_load_b512 | s_load_b512 | SMEM | Load 512 bits of data from the scalar memory into a scalar register. |
| s_load_b64 | s_load_b64 | SMEM | Load 64 bits of data from the scalar memory into a scalar register. |
| s_load_b96 | s_load_b96 | SMEM | Load 96 bits of data from the scalar memory into a scalar register. |
| s_load_dword | s_load_dword SDST, SBASE, offset | SMEM | Load one 32-bit dword from memory into a scalar register, wavefront-uniform. |
| s_load_dwordx16 | s_load_dwordx16 | SMEM | Load 512 bits of data from the scalar memory into a scalar register. |
| s_load_dwordx2 | s_load_dwordx2 | SMEM | Load 64 bits of data from the scalar memory into a scalar register. |
| s_load_dwordx4 | s_load_dwordx4 | SMEM | Load 128 bits of data from the scalar memory into a scalar register. |
| s_load_dwordx8 | s_load_dwordx8 | SMEM | Load 256 bits of data from the scalar memory into a scalar register. |
| s_load_i16 | s_load_i16 | SMEM | Load 16 bits of signed data from the scalar memory, sign extend to 32 bits and store the result into a scalar register. |
| s_load_i8 | s_load_i8 | SMEM | Load 8 bits of signed data from the scalar memory, sign extend to 32 bits and store the result into a scalar register. |
| s_load_u16 | s_load_u16 | SMEM | Load 16 bits of unsigned data from the scalar memory, zero extend to 32 bits and store the result into a scalar register. |
| s_load_u8 | s_load_u8 | SMEM | Load 8 bits of unsigned data from the scalar memory, zero extend to 32 bits and store the result into a scalar register. |
| s_memrealtime | s_memrealtime | SMEM | Return current 64-bit RTC. |
| s_memtime | s_memtime | SMEM | Return current 64-bit timestamp. |
| s_prefetch_data | s_prefetch_data | SMEM | Prefetch data into the scalar data cache, relative to a base address provided. |
| s_prefetch_data_pc_rel | s_prefetch_data_pc_rel | SMEM | Prefetch data into the scalar data cache, relative to the current PC address. |
| s_prefetch_inst | s_prefetch_inst | SMEM | Prefetch instructions into the shader instruction cache, relative to a base address provided. |