From 870724d43ba0f2784bb9bb575cb114ca43f00b25 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 2 Dec 2020 16:03:32 +0000 Subject: [PATCH] nir/opt_sink: use common instruction removal/insertion helpers Signed-off-by: Rhys Perry Reviewed-by: Eric Anholt Part-of: --- src/compiler/nir/nir_opt_sink.c | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/src/compiler/nir/nir_opt_sink.c b/src/compiler/nir/nir_opt_sink.c index e86ca3c..ff78fd8 100644 --- a/src/compiler/nir/nir_opt_sink.c +++ b/src/compiler/nir/nir_opt_sink.c @@ -181,26 +181,6 @@ get_preferred_block(nir_ssa_def *def, bool sink_out_of_loops) return lca; } -/* insert before first non-phi instruction: */ -static void -insert_after_phi(nir_instr *instr, nir_block *block) -{ - nir_foreach_instr(instr2, block) { - if (instr2->type == nir_instr_type_phi) - continue; - - exec_node_insert_node_before(&instr2->node, - &instr->node); - - return; - } - - /* if haven't inserted it, push to tail (ie. empty block or possibly - * a block only containing phi's?) - */ - exec_list_push_tail(&block->instr_list, &instr->node); -} - bool nir_opt_sink(nir_shader *shader, nir_move_options options) { @@ -233,11 +213,8 @@ nir_opt_sink(nir_shader *shader, nir_move_options options) if (!use_block || use_block == instr->block) continue; - exec_node_remove(&instr->node); - - insert_after_phi(instr, use_block); - - instr->block = use_block; + nir_instr_remove(instr); + nir_instr_insert(nir_after_phis(use_block), instr); progress = true; } -- 2.7.4