Mesa (master): nir: Add a generic instruction index

Jason Ekstrand jekstrand at kemper.freedesktop.org
Thu Sep 17 15:22:01 UTC 2015


Module: Mesa
Branch: master
Commit: 8ecaef967d6f2775bf7114d857baf3aaa13643a7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ecaef967d6f2775bf7114d857baf3aaa13643a7

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Tue Sep  8 16:43:51 2015 -0700

nir: Add a generic instruction index

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/glsl/nir/nir.c |   18 ++++++++++++++++++
 src/glsl/nir/nir.h |    4 ++++
 2 files changed, 22 insertions(+)

diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c
index 96cf94c..1ff8f21 100644
--- a/src/glsl/nir/nir.c
+++ b/src/glsl/nir/nir.c
@@ -1435,6 +1435,24 @@ nir_index_ssa_defs(nir_function_impl *impl)
    impl->ssa_alloc = index;
 }
 
+static bool
+index_instrs_block(nir_block *block, void *state)
+{
+   unsigned *index = state;
+   nir_foreach_instr(block, instr)
+      instr->index = (*index)++;
+
+   return true;
+}
+
+unsigned
+nir_index_instrs(nir_function_impl *impl)
+{
+   unsigned index = 0;
+   nir_foreach_block(impl, index_instrs_block, &index);
+   return index;
+}
+
 gl_system_value
 nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
 {
diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
index 3a19bd3..37d3682 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -418,6 +418,9 @@ typedef struct nir_instr {
    nir_instr_type type;
    struct nir_block *block;
 
+   /** generic instruction index. */
+   unsigned index;
+
    /* A temporary for optimization and analysis passes to use for storing
     * flags.  For instance, DCE uses this to store the "dead/live" info.
     */
@@ -1773,6 +1776,7 @@ nir_loop *nir_block_get_following_loop(nir_block *block);
 void nir_index_local_regs(nir_function_impl *impl);
 void nir_index_global_regs(nir_shader *shader);
 void nir_index_ssa_defs(nir_function_impl *impl);
+unsigned nir_index_instrs(nir_function_impl *impl);
 
 void nir_index_blocks(nir_function_impl *impl);
 




More information about the mesa-commit mailing list