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:
@@ -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
|
||||
|
@@ -6575,12 +6575,24 @@ nir_is_store_reg(nir_intrinsic_instr *intr)
|
||||
nir_foreach_use(load, ®->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, ®->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, ®->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, ®->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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user