Signed-off-by: Connor Abbott <cwabbo...@gmail.com> --- src/glsl/nir/nir.c | 16 ++++++++++++++++ src/glsl/nir/nir.h | 2 ++ 2 files changed, 18 insertions(+)
diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c index efc3f01..e3c37dd 100644 --- a/src/glsl/nir/nir.c +++ b/src/glsl/nir/nir.c @@ -2097,6 +2097,22 @@ nir_block_get_following_if(nir_block *block) return nir_cf_node_as_if(next_node); } +nir_loop * +nir_block_get_following_loop(nir_block *block) +{ + if (exec_node_is_tail_sentinel(&block->cf_node.node)) + return NULL; + + if (nir_cf_node_is_last(&block->cf_node)) + return NULL; + + nir_cf_node *next_node = nir_cf_node_next(&block->cf_node); + + if (next_node->type != nir_cf_node_loop) + return NULL; + + return nir_cf_node_as_loop(next_node); +} static bool index_block(nir_block *block, void *state) { diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h index d2bf3d7..69daa14 100644 --- a/src/glsl/nir/nir.h +++ b/src/glsl/nir/nir.h @@ -1607,6 +1607,8 @@ bool nir_foreach_block_reverse(nir_function_impl *impl, nir_foreach_block_cb cb, */ nir_if *nir_block_get_following_if(nir_block *block); +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); -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev