diff options
author | Jason Ekstrand <[email protected]> | 2015-09-08 16:43:51 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-09-17 08:16:01 -0700 |
commit | 8ecaef967d6f2775bf7114d857baf3aaa13643a7 (patch) | |
tree | 215bdbecec7cfb27606a4a4ee8a0944cd0667c70 /src/glsl/nir | |
parent | bd016a2601a741799bc76734deae0cb9ebcb2b8f (diff) |
nir: Add a generic instruction index
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/glsl/nir')
-rw-r--r-- | src/glsl/nir/nir.c | 18 | ||||
-rw-r--r-- | src/glsl/nir/nir.h | 4 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c index 96cf94c11d5..1ff8f217407 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 3a19bd34ef0..37d36822679 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); |