diff --git a/.pick_status.json b/.pick_status.json index abc2c47a9ed..08d71c9402f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1784,7 +1784,7 @@ "description": "nir/divergence: ignore boolean phis for ignore_undef_if_phi_srcs", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index f0e2a5742f1..4a8102436f6 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -1371,7 +1371,11 @@ visit_if(nir_if *if_stmt, struct divergence_state *state) phi->def.loop_invariant = invariant && nir_foreach_src(&phi->instr, src_invariant, state->loop); } - bool ignore_undef = state->options & nir_divergence_ignore_undef_if_phi_srcs; + + /* The only user of this option (ACO) only supports it for non-boolean phis. */ + bool ignore_undef = + (state->options & nir_divergence_ignore_undef_if_phi_srcs) && phi->def.bit_size != 1; + progress |= visit_if_merge_phi(phi, cond_divergent, ignore_undef); }