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