diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index ea764217001..90e1ab95ce1 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -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); diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c index 042649ef7b8..2ec77a09722 100644 --- a/src/compiler/nir/nir_lower_io.c +++ b/src/compiler/nir/nir_lower_io.c @@ -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) {