Mesa (master): nir: Move constant folding of vote to opt_constant_folding

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 3 23:31:09 UTC 2020


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Oct 29 10:08:15 2020 -0500

nir: Move constant folding of vote to opt_constant_folding

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7366>

---

 src/compiler/nir/nir_opt_constant_folding.c | 21 +++++++++++++++++++++
 src/compiler/nir/nir_opt_intrinsics.c       | 19 -------------------
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/src/compiler/nir/nir_opt_constant_folding.c b/src/compiler/nir/nir_opt_constant_folding.c
index 64a5f2583cf..bf9274494d7 100644
--- a/src/compiler/nir/nir_opt_constant_folding.c
+++ b/src/compiler/nir/nir_opt_constant_folding.c
@@ -264,6 +264,27 @@ try_fold_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin,
       return true;
    }
 
+   case nir_intrinsic_vote_any:
+   case nir_intrinsic_vote_all:
+      if (nir_src_is_const(intrin->src[0])) {
+         nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
+                                  nir_src_for_ssa(intrin->src[0].ssa));
+         nir_instr_remove(&intrin->instr);
+         return true;
+      }
+      return false;
+
+   case nir_intrinsic_vote_feq:
+   case nir_intrinsic_vote_ieq:
+      if (nir_src_is_const(intrin->src[0])) {
+         b->cursor = nir_before_instr(&intrin->instr);
+         nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
+                                  nir_src_for_ssa(nir_imm_true(b)));
+         nir_instr_remove(&intrin->instr);
+         return true;
+      }
+      return false;
+
    default:
       return false;
    }
diff --git a/src/compiler/nir/nir_opt_intrinsics.c b/src/compiler/nir/nir_opt_intrinsics.c
index 69b53459824..4111a7c60fc 100644
--- a/src/compiler/nir/nir_opt_intrinsics.c
+++ b/src/compiler/nir/nir_opt_intrinsics.c
@@ -42,20 +42,9 @@ opt_intrinsics_impl(nir_function_impl *impl,
             continue;
 
          nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
-         nir_ssa_def *replacement = NULL;
          b.cursor = nir_before_instr(instr);
 
          switch (intrin->intrinsic) {
-         case nir_intrinsic_vote_any:
-         case nir_intrinsic_vote_all:
-            if (nir_src_is_const(intrin->src[0]))
-               replacement = nir_ssa_for_src(&b, intrin->src[0], 1);
-            break;
-         case nir_intrinsic_vote_feq:
-         case nir_intrinsic_vote_ieq:
-            if (nir_src_is_const(intrin->src[0]))
-               replacement = nir_imm_true(&b);
-            break;
          case nir_intrinsic_load_sample_mask_in:
             /* Transform:
              *   gl_SampleMaskIn == 0 ---> gl_HelperInvocation
@@ -95,14 +84,6 @@ opt_intrinsics_impl(nir_function_impl *impl,
          default:
             break;
          }
-
-         if (!replacement)
-            continue;
-
-         nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
-                                  nir_src_for_ssa(replacement));
-         nir_instr_remove(instr);
-         progress = true;
       }
    }
 



More information about the mesa-commit mailing list