[Mesa-dev] [PATCH 1/2] nir: fix if condition propagation for alu use

Timothy Arceri tarceri at itsqueeze.com
Wed Oct 31 02:16:28 UTC 2018


From: Timothy Arceri <tarceri at localhost.localdomain>

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")
---
 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 1f2e1f21130..1fe95e53766 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) {
-- 
2.17.2



More information about the mesa-dev mailing list