[Mesa-dev] [PATCH 17/21] nir/cf: add split_block_before_instr()

Connor Abbott cwabbott0 at gmail.com
Tue Jul 21 19:54:31 PDT 2015


Signed-off-by: Connor Abbott <connor.w.abbott at intel.com>
---
 src/glsl/nir/nir_control_flow.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/glsl/nir/nir_control_flow.c b/src/glsl/nir/nir_control_flow.c
index 9ae113f..fcdabc7 100644
--- a/src/glsl/nir/nir_control_flow.c
+++ b/src/glsl/nir/nir_control_flow.c
@@ -376,6 +376,24 @@ split_block_end(nir_block *block)
    return new_block;
 }
 
+static nir_block *
+split_block_before_instr(nir_instr *instr)
+{
+   assert(instr->type != nir_instr_type_phi);
+   nir_block *new_block = split_block_beginning(instr->block);
+
+   nir_foreach_instr_safe(instr->block, cur_instr) {
+      if (cur_instr == instr)
+         break;
+
+      exec_node_remove(&cur_instr->node);
+      cur_instr->block = new_block;
+      exec_list_push_tail(&new_block->instr_list, &cur_instr->node);
+   }
+
+   return new_block;
+}
+
 /**
  * Inserts a non-basic block between two basic blocks and links them together.
  */
-- 
2.4.3



More information about the mesa-dev mailing list