nir: use nir_foreach_ssa_def for indexing ssa defs
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 4 Feb 2015 05:04:57 +0000 (21:04 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 20 Feb 2015 01:06:17 +0000 (17:06 -0800)
This is both simpler and more correct.  The old code didn't properly index
load_const instructions.

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/glsl/nir/nir.c

index 0d8c80ae55b19cbd6526d63cd81481c48af5ff25..3b78766e6a224a389c2633008fd38d389cf72076 100644 (file)
@@ -2004,38 +2004,20 @@ nir_index_blocks(nir_function_impl *impl)
    impl->num_blocks = index;
 }
 
-static void
-index_ssa_def(nir_ssa_def *def, unsigned *index)
+static bool
+index_ssa_def_cb(nir_ssa_def *def, void *state)
 {
+   unsigned *index = (unsigned *) state;
    def->index = (*index)++;
-}
 
-static bool
-index_ssa_def_cb(nir_dest *dest, void *state)
-{
-   unsigned *index = state;
-   if (dest->is_ssa)
-      index_ssa_def(&dest->ssa, index);
    return true;
 }
 
-static void
-index_ssa_undef(nir_ssa_undef_instr *instr, unsigned *index)
-{
-   index_ssa_def(&instr->def, index);
-}
-
 static bool
 index_ssa_block(nir_block *block, void *state)
 {
-   unsigned *index = state;
-
-   nir_foreach_instr(block, instr) {
-      if (instr->type == nir_instr_type_ssa_undef)
-         index_ssa_undef(nir_instr_as_ssa_undef(instr), index);
-      else
-         nir_foreach_dest(instr, index_ssa_def_cb, state);
-   }
+   nir_foreach_instr(block, instr)
+      nir_foreach_ssa_def(instr, index_ssa_def_cb, state);
 
    return true;
 }