Image / Texture Memory Instructions
42 AMDGPU instructions in this category - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Summary |
|---|---|---|---|
| image_atomic_add | image_atomic_add | MIMG | Add two unsigned 32-bit integer values stored in the data register and a location in an image surface. |
| image_atomic_add_flt | image_atomic_add_flt | MIMG | Add two single-precision float values stored in the data register and a location in an image surface. |
| image_atomic_and | image_atomic_and | MIMG | Calculate bitwise AND given two unsigned 32-bit integer values stored in the data register and a location in an image surface. |
| image_atomic_cmpswap | image_atomic_cmpswap | MIMG | Compare two unsigned 32-bit integer values stored in the data comparison register and a location in an image surface. |
| image_atomic_dec | image_atomic_dec | MIMG | Decrement an unsigned 32-bit integer value from a location in an image surface with wraparound to a value in the data register if the decrement… |
| image_atomic_fcmpswap | image_atomic_fcmpswap | MIMG | Compare two single-precision float values stored in the data comparison register and a location in an image surface. |
| image_atomic_fmax | image_atomic_fmax | MIMG | Select the maximum of two single-precision float inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_fmin | image_atomic_fmin | MIMG | Select the minimum of two single-precision float inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_inc | image_atomic_inc | MIMG | Increment an unsigned 32-bit integer value from a location in an image surface with wraparound to 0 if the value exceeds a value in the data register. |
| image_atomic_max_flt | image_atomic_max_flt | MIMG | Select the IEEE maximumNumber() of two single-precision float inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_max_num_flt | image_atomic_max_num_flt | MIMG | AMDGPU MIMG vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| image_atomic_min_flt | image_atomic_min_flt | MIMG | Select the IEEE minimumNumber() of two single-precision float inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_min_num_flt | image_atomic_min_num_flt | MIMG | AMDGPU MIMG vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| image_atomic_or | image_atomic_or | MIMG | Calculate bitwise OR given two unsigned 32-bit integer values stored in the data register and a location in an image surface. |
| image_atomic_pk_add_bf16 | image_atomic_pk_add_bf16 | MIMG | Add a packed 2-component BF16 float value from the data register to a location in an image surface. |
| image_atomic_pk_add_f16 | image_atomic_pk_add_f16 | MIMG | Add a packed 2-component half-precision float value from the data register to a location in an image surface. |
| image_atomic_rsub | image_atomic_rsub | MIMG | AMDGPU MIMG vector instruction. (Format and name extracted from LLVM's AMDGPU backend source - semantics not yet curated.) |
| image_atomic_smax | image_atomic_smax | MIMG | Select the maximum of two signed 32-bit integer inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_smin | image_atomic_smin | MIMG | Select the minimum of two signed 32-bit integer inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_sub | image_atomic_sub | MIMG | Subtract an unsigned 32-bit integer value stored in the data register from a value stored in a location in an image surface. |
| image_atomic_swap | image_atomic_swap | MIMG | Swap an unsigned 32-bit integer value in the data register with a location in an image surface. |
| image_atomic_umax | image_atomic_umax | MIMG | Select the maximum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_umin | image_atomic_umin | MIMG | Select the minimum of two unsigned 32-bit integer inputs, given two values stored in the data register and a location in an image surface. |
| image_atomic_xor | image_atomic_xor | MIMG | Calculate bitwise XOR given two unsigned 32-bit integer values stored in the data register and a location in an image surface. |
| image_bvh64_intersect_ray | image_bvh64_intersect_ray | MIMG | Test the intersection of rays with either box nodes or triangle nodes within a bounded volume hierarchy using 64 bit node pointers. |
| image_bvh8_intersect_ray | image_bvh8_intersect_ray | MIMG | This instruction supports testing one BVH8 node against one ray per lane using both intersection engines. |
| image_bvh_dual_intersect_ray | image_bvh_dual_intersect_ray | MIMG | This instruction supports testing two QBVH nodes against the same ray per lane using both intersection engines. |
| image_bvh_intersect_ray | image_bvh_intersect_ray | MIMG | Test the intersection of rays with either box nodes or triangle nodes within a bounded volume hierarchy using 32 bit node pointers. |
| image_gather4h | image_gather4h | MIMG | Gather 4 single-component texels from a 4x1 row vector on an image surface. |
| image_get_lod | image_get_lod | MIMG | Return the calculated level of detail (LOD) for the provided input as two single-precision float values. No memory access is performed. |
| image_get_resinfo | image_get_resinfo | MIMG | Gather resource information for a given miplevel provided in the address register. |
| image_load | image_load | MIMG | Load a texel from the largest miplevel in an image surface and store the result into a vector register. |
| image_load_mip | image_load_mip | MIMG | Load a texel from a user-specified miplevel in an image surface and store the result into a vector register. |
| image_load_mip_pck | image_load_mip_pck | MIMG | Load a texel from a user-specified miplevel in an image surface and store the result into a vector register. |
| image_load_mip_pck_sgn | image_load_mip_pck_sgn | MIMG | Load a texel from a user-specified miplevel in an image surface and store the result into a vector register. |
| image_load_pck | image_load_pck | MIMG | Load a texel from the largest miplevel in an image surface and store the result into a vector register. |
| image_load_pck_sgn | image_load_pck_sgn | MIMG | Load a texel from the largest miplevel in an image surface and store the result into a vector register. |
| image_msaa_load | image_msaa_load | MIMG | Load up to 4 samples of 1 component from an MSAA resource with a user-specified fragment ID. No sampling is performed. |
| image_store | image_store | MIMG | Store a texel from a vector register to the largest miplevel in an image surface. |
| image_store_mip | image_store_mip | MIMG | Store a texel from a vector register to a user-specified miplevel in an image surface. |
| image_store_mip_pck | image_store_mip_pck | MIMG | Store a texel from a vector register to a user-specified miplevel in an image surface. |
| image_store_pck | image_store_pck | MIMG | Store a texel from a vector register to the largest miplevel in an image surface. |