From 194f6235b32cd0c54547a3913e463cf691d011d6 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 20 Jan 2015 16:30:14 -0800 Subject: [PATCH] nir: Add a nir_foreach_phi_src helper macro Reviewed-by: Connor Abbott --- src/glsl/nir/nir.c | 4 ++-- src/glsl/nir/nir.h | 3 +++ src/glsl/nir/nir_from_ssa.c | 4 ++-- src/glsl/nir/nir_live_variables.c | 2 +- src/glsl/nir/nir_opt_cse.c | 4 ++-- src/glsl/nir/nir_opt_peephole_select.c | 2 +- src/glsl/nir/nir_print.c | 2 +- src/glsl/nir/nir_to_ssa.c | 2 +- src/glsl/nir/nir_validate.c | 2 +- 9 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c index 81dec1c54c6..89e21fddeb9 100644 --- a/src/glsl/nir/nir.c +++ b/src/glsl/nir/nir.c @@ -731,7 +731,7 @@ rewrite_phi_preds(nir_block *block, nir_block *old_pred, nir_block *new_pred) break; nir_phi_instr *phi = nir_instr_as_phi(instr); - foreach_list_typed_safe(nir_phi_src, src, node, &phi->srcs) { + nir_foreach_phi_src(phi, src) { if (src->pred == old_pred) { src->pred = new_pred; break; @@ -1585,7 +1585,7 @@ visit_load_const_src(nir_load_const_instr *instr, nir_foreach_src_cb cb, static bool visit_phi_src(nir_phi_instr *instr, nir_foreach_src_cb cb, void *state) { - foreach_list_typed(nir_phi_src, src, node, &instr->srcs) { + nir_foreach_phi_src(instr, src) { if (!visit_src(&src->src, cb, state)) return false; } diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h index d5fa0e32623..5ebfc5a1bbc 100644 --- a/src/glsl/nir/nir.h +++ b/src/glsl/nir/nir.h @@ -990,6 +990,9 @@ typedef struct { nir_src src; } nir_phi_src; +#define nir_foreach_phi_src(phi, entry) \ + foreach_list_typed(nir_phi_src, entry, node, &(phi)->srcs) + typedef struct { nir_instr instr; diff --git a/src/glsl/nir/nir_from_ssa.c b/src/glsl/nir/nir_from_ssa.c index 025869921f7..9728b9980cc 100644 --- a/src/glsl/nir/nir_from_ssa.c +++ b/src/glsl/nir/nir_from_ssa.c @@ -343,7 +343,7 @@ isolate_phi_nodes_block(nir_block *block, void *void_state) nir_phi_instr *phi = nir_instr_as_phi(instr); assert(phi->dest.is_ssa); - foreach_list_typed(nir_phi_src, src, node, &phi->srcs) { + nir_foreach_phi_src(phi, src) { nir_parallel_copy_instr *pcopy = get_parallel_copy_at_end_of_block(src->pred); assert(pcopy); @@ -412,7 +412,7 @@ coalesce_phi_nodes_block(nir_block *block, void *void_state) assert(phi->dest.is_ssa); merge_node *dest_node = get_merge_node(&phi->dest.ssa, state); - foreach_list_typed(nir_phi_src, src, node, &phi->srcs) { + nir_foreach_phi_src(phi, src) { assert(src->src.is_ssa); merge_node *src_node = get_merge_node(src->src.ssa, state); if (src_node->set != dest_node->set) diff --git a/src/glsl/nir/nir_live_variables.c b/src/glsl/nir/nir_live_variables.c index f110c5e47ab..7402dc0877e 100644 --- a/src/glsl/nir/nir_live_variables.c +++ b/src/glsl/nir/nir_live_variables.c @@ -147,7 +147,7 @@ propagate_across_edge(nir_block *pred, nir_block *succ, break; nir_phi_instr *phi = nir_instr_as_phi(instr); - foreach_list_typed(nir_phi_src, src, node, &phi->srcs) { + nir_foreach_phi_src(phi, src) { if (src->pred == pred) { set_src_live(&src->src, live); break; diff --git a/src/glsl/nir/nir_opt_cse.c b/src/glsl/nir/nir_opt_cse.c index e7dba1d4581..89d78c8d34e 100644 --- a/src/glsl/nir/nir_opt_cse.c +++ b/src/glsl/nir/nir_opt_cse.c @@ -99,8 +99,8 @@ nir_instrs_equal(nir_instr *instr1, nir_instr *instr2) if (phi1->instr.block != phi2->instr.block) return false; - foreach_list_typed(nir_phi_src, src1, node, &phi1->srcs) { - foreach_list_typed(nir_phi_src, src2, node, &phi2->srcs) { + nir_foreach_phi_src(phi1, src1) { + nir_foreach_phi_src(phi2, src2) { if (src1->pred == src2->pred) { if (!nir_srcs_equal(src1->src, src2->src)) return false; diff --git a/src/glsl/nir/nir_opt_peephole_select.c b/src/glsl/nir/nir_opt_peephole_select.c index 3e8c93882d2..5d2f5d6208d 100644 --- a/src/glsl/nir/nir_opt_peephole_select.c +++ b/src/glsl/nir/nir_opt_peephole_select.c @@ -140,7 +140,7 @@ nir_opt_peephole_select_block(nir_block *block, void *void_state) memset(sel->src[0].swizzle, 0, sizeof sel->src[0].swizzle); assert(exec_list_length(&phi->srcs) == 2); - foreach_list_typed(nir_phi_src, src, node, &phi->srcs) { + nir_foreach_phi_src(phi, src) { assert(src->pred == then_block || src->pred == else_block); assert(src->src.is_ssa); diff --git a/src/glsl/nir/nir_print.c b/src/glsl/nir/nir_print.c index 84bb97957ba..1a50ae92fe2 100644 --- a/src/glsl/nir/nir_print.c +++ b/src/glsl/nir/nir_print.c @@ -543,7 +543,7 @@ print_phi_instr(nir_phi_instr *instr, FILE *fp) { print_dest(&instr->dest, fp); fprintf(fp, " = phi "); - foreach_list_typed(nir_phi_src, src, node, &instr->srcs) { + nir_foreach_phi_src(instr, src) { if (&src->node != exec_list_get_head(&instr->srcs)) fprintf(fp, ", "); diff --git a/src/glsl/nir/nir_to_ssa.c b/src/glsl/nir/nir_to_ssa.c index 3e7521163f6..b9b1cff9cf2 100644 --- a/src/glsl/nir/nir_to_ssa.c +++ b/src/glsl/nir/nir_to_ssa.c @@ -386,7 +386,7 @@ rewrite_phi_sources(nir_block *block, nir_block *pred, rewrite_state *state) state->parent_instr = instr; - foreach_list_typed(nir_phi_src, src, node, &phi_instr->srcs) { + nir_foreach_phi_src(phi_instr, src) { if (src->pred == pred) { rewrite_use(&src->src, state); break; diff --git a/src/glsl/nir/nir_validate.c b/src/glsl/nir/nir_validate.c index 228dce2d0b7..7c801b27440 100644 --- a/src/glsl/nir/nir_validate.c +++ b/src/glsl/nir/nir_validate.c @@ -486,7 +486,7 @@ validate_phi_src(nir_phi_instr *instr, nir_block *pred, validate_state *state) assert(instr->dest.is_ssa); exec_list_validate(&instr->srcs); - foreach_list_typed(nir_phi_src, src, node, &instr->srcs) { + nir_foreach_phi_src(instr, src) { if (src->pred == pred) { unsigned num_components; if (src->src.is_ssa) -- 2.30.2