Mesa (master): nir: fix if condition propagation for alu use

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 31 22:23:48 UTC 2018


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

Author: Timothy Arceri <tarceri at localhost.localdomain>
Date:   Wed Oct 31 13:16:28 2018 +1100

nir: fix if condition propagation for alu use

We need to update the cursor before we check if the alu use is
dominated by the if condition. Previously we were checking if
the current location of the alu instruction was dominated by
the if condition which would miss some optimisation opportunities.

Fixes: a3b4cb34589e ("nir/opt_if: Rework condition propagation")

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/compiler/nir/nir_opt_if.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/compiler/nir/nir_opt_if.c b/src/compiler/nir/nir_opt_if.c
index 1f2e1f2113..1fe95e5376 100644
--- a/src/compiler/nir/nir_opt_if.c
+++ b/src/compiler/nir/nir_opt_if.c
@@ -444,11 +444,10 @@ propagate_condition_eval(nir_builder *b, nir_if *nif, nir_src *use_src,
                          bool is_if_condition)
 {
    bool bool_value;
+   b->cursor = nir_before_src(alu_use, is_if_condition);
    if (!evaluate_if_condition(nif, b->cursor, &bool_value))
       return false;
 
-   b->cursor = nir_before_src(alu_use, is_if_condition);
-
    nir_ssa_def *def[2] = {0};
    for (unsigned i = 0; i < nir_op_infos[alu->op].num_inputs; i++) {
       if (alu->src[i].src.ssa == use_src->ssa) {




More information about the mesa-commit mailing list