nir: add nir_is_shared_access helper

This is helpful to identify shared mem access for writing more generic code
operating on nir intrinsics.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39219>
This commit is contained in:
Alyssa Rosenzweig 2026-01-08 14:46:51 -05:00 committed by Marge Bot
parent d160b7726a
commit 4e59199cbb
2 changed files with 17 additions and 0 deletions

View file

@ -5559,6 +5559,7 @@ nir_src *nir_get_io_index_src(nir_intrinsic_instr *instr);
nir_src *nir_get_io_arrayed_index_src(nir_intrinsic_instr *instr);
nir_src *nir_get_shader_call_payload_src(nir_intrinsic_instr *call);
bool nir_is_shared_access(nir_intrinsic_instr *intr);
bool nir_is_output_load(nir_intrinsic_instr *intr);
bool nir_is_input_load(nir_intrinsic_instr *intr);
bool nir_is_arrayed_io(const nir_variable *var, mesa_shader_stage stage);

View file

@ -1168,6 +1168,22 @@ nir_get_io_arrayed_index_src_number(const nir_intrinsic_instr *instr)
}
}
bool
nir_is_shared_access(nir_intrinsic_instr *intr)
{
return intr->intrinsic == nir_intrinsic_load_shared ||
intr->intrinsic == nir_intrinsic_store_shared ||
intr->intrinsic == nir_intrinsic_shared_atomic ||
intr->intrinsic == nir_intrinsic_shared_atomic_swap ||
intr->intrinsic == nir_intrinsic_load_shared_block_intel ||
intr->intrinsic == nir_intrinsic_store_shared_block_intel ||
intr->intrinsic == nir_intrinsic_load_shared_uniform_block_intel ||
intr->intrinsic == nir_intrinsic_load_shared2_amd ||
intr->intrinsic == nir_intrinsic_store_shared2_amd ||
intr->intrinsic == nir_intrinsic_shared_append_amd ||
intr->intrinsic == nir_intrinsic_shared_consume_amd;
}
bool
nir_is_output_load(nir_intrinsic_instr *intr)
{