diff --git a/src/.clang-format b/src/.clang-format index 8b806c4d972..b19bb8a68f1 100644 --- a/src/.clang-format +++ b/src/.clang-format @@ -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 diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 497a5717855..23246e1577d 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -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) {