nir: Add a nir_foreach_phi_src helper macro
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 21 Jan 2015 00:30:14 +0000 (16:30 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 21 Jan 2015 00:53:29 +0000 (16:53 -0800)
Reviewed-by: Connor Abbott <cwabbott02gmail.com>
src/glsl/nir/nir.c
src/glsl/nir/nir.h
src/glsl/nir/nir_from_ssa.c
src/glsl/nir/nir_live_variables.c
src/glsl/nir/nir_opt_cse.c
src/glsl/nir/nir_opt_peephole_select.c
src/glsl/nir/nir_print.c
src/glsl/nir/nir_to_ssa.c
src/glsl/nir/nir_validate.c

index 81dec1c54c69afaaf416e14c5558995bd91aadf9..89e21fddeb997bee915bf4b03047a409460c5570 100644 (file)
@@ -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;
    }
index d5fa0e32623a12599b9b31ecb1c6fcfc5aa9aeef..5ebfc5a1bbc25b9df63a27efe0796fc17471403d 100644 (file)
@@ -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;
 
index 025869921f76c2cca14537ae1fc03501cf97018a..9728b9980cce2faac7631102d879b791c45b5fc2 100644 (file)
@@ -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)
index f110c5e47ab959ef688185b57fcfb82302e570aa..7402dc0877e5c91e426142139204a157e585606d 100644 (file)
@@ -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;
index e7dba1d45813a99f41d426a008e8d875d5796d7f..89d78c8d34e483d224ab38a3a9a5d7fea791c87b 100644 (file)
@@ -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;
index 3e8c93882d243339ab3d14f1249724821fd48dca..5d2f5d6208dffeddebce73594ddfc62ddf32a030 100644 (file)
@@ -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);
 
index 84bb97957bac9824f9ae90e148b72c9188cdc81d..1a50ae92fe27734266e548fb26eadf9d7201c259 100644 (file)
@@ -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, ", ");
 
index 3e7521163f6c4ecba05ae0cc9a82dba1fe7e951f..b9b1cff9cf27f2ee30602d7e7c40b05411ca53fb 100644 (file)
@@ -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;
index 228dce2d0b7aed5ee0caad8b2cc68f6fd63c98cb..7c801b2744026ca6efd9976f6a78d3ba72ff2905 100644 (file)
@@ -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)