nir: add _safe variants of nir_foreach_reg_load/store

Signed-off-by: Job Noorman <jnoorman@igalia.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26175>
This commit is contained in:
Job Noorman
2023-11-12 20:18:12 +01:00
committed by Marge Bot
parent 5057eb90a1
commit 6e7a61df4c
2 changed files with 14 additions and 0 deletions

View File

@@ -121,7 +121,9 @@ ForEachMacros:
- nir_foreach_reg_decl
- nir_foreach_reg_decl_safe
- nir_foreach_reg_load
- nir_foreach_reg_load_safe
- nir_foreach_reg_store
- nir_foreach_reg_store_safe
- nir_foreach_if_use
- nir_foreach_if_use_safe

View File

@@ -6575,12 +6575,24 @@ nir_is_store_reg(nir_intrinsic_instr *intr)
nir_foreach_use(load, &reg->def) \
if (nir_is_load_reg(nir_instr_as_intrinsic(nir_src_parent_instr(load))))
#define nir_foreach_reg_load_safe(load, reg) \
assert(reg->intrinsic == nir_intrinsic_decl_reg); \
\
nir_foreach_use_safe(load, &reg->def) \
if (nir_is_load_reg(nir_instr_as_intrinsic(nir_src_parent_instr(load))))
#define nir_foreach_reg_store(store, reg) \
assert(reg->intrinsic == nir_intrinsic_decl_reg); \
\
nir_foreach_use(store, &reg->def) \
if (nir_is_store_reg(nir_instr_as_intrinsic(nir_src_parent_instr(store))))
#define nir_foreach_reg_store_safe(store, reg) \
assert(reg->intrinsic == nir_intrinsic_decl_reg); \
\
nir_foreach_use_safe(store, &reg->def) \
if (nir_is_store_reg(nir_instr_as_intrinsic(nir_src_parent_instr(store))))
static inline nir_intrinsic_instr *
nir_load_reg_for_def(const nir_def *def)
{