Mesa (master): nir/opt_sink: use common instruction removal/insertion helpers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Dec 3 11:18:00 UTC 2020


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

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Wed Dec  2 16:03:32 2020 +0000

nir/opt_sink: use common instruction removal/insertion helpers

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7880>

---

 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 e86ca3c0a5d..ff78fd8b2b7 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;
          }



More information about the mesa-commit mailing list