Mesa (master): nir: add nir_block_get_following_loop() helper

Kenneth Graunke kwg at kemper.freedesktop.org
Tue Sep 1 08:51:47 UTC 2015


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

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Fri May  8 13:17:10 2015 -0400

nir: add nir_block_get_following_loop() helper

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

---

 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 bf00131..acb251a 100644
--- a/src/glsl/nir/nir.c
+++ b/src/glsl/nir/nir.c
@@ -1335,6 +1335,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 c65d090..6853b0e 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -1732,6 +1732,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);




More information about the mesa-commit mailing list