From: Jason Ekstrand Date: Mon, 22 Oct 2018 20:53:14 +0000 (-0500) Subject: nir/constant_folding: Use nir_src_as_bool for discard_if X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=249e32ab17bdbe1f26449079b0eafd3391b52d0f;p=mesa.git nir/constant_folding: Use nir_src_as_bool for discard_if Missed one while converting to the nir_src_as_* helpers. Reviewed-by: Ian Romanick Reviewed-by: Eric Anholt --- diff --git a/src/compiler/nir/nir_opt_constant_folding.c b/src/compiler/nir/nir_opt_constant_folding.c index 05b47d4c0fe..5929a60aee8 100644 --- a/src/compiler/nir/nir_opt_constant_folding.c +++ b/src/compiler/nir/nir_opt_constant_folding.c @@ -131,12 +131,9 @@ constant_fold_intrinsic_instr(nir_intrinsic_instr *instr) { bool progress = false; - if (instr->intrinsic == nir_intrinsic_discard_if) { - nir_const_value *src_val = nir_src_as_const_value(instr->src[0]); - if (src_val && src_val->u32[0] == NIR_FALSE) { - nir_instr_remove(&instr->instr); - progress = true; - } else if (src_val && src_val->u32[0] == NIR_TRUE) { + if (instr->intrinsic == nir_intrinsic_discard_if && + nir_src_is_const(instr->src[0])) { + if (nir_src_as_bool(instr->src[0])) { /* This method of getting a nir_shader * from a nir_instr is * admittedly gross, but given the rarity of hitting this case I think * it's preferable to plumbing an otherwise unused nir_shader * @@ -151,6 +148,10 @@ constant_fold_intrinsic_instr(nir_intrinsic_instr *instr) nir_instr_insert_before(&instr->instr, &discard->instr); nir_instr_remove(&instr->instr); progress = true; + } else { + /* We're not discarding, just delete the instruction */ + nir_instr_remove(&instr->instr); + progress = true; } }