From: Rhys Perry Date: Fri, 22 Nov 2019 20:58:59 +0000 (+0000) Subject: aco: fix clamp optimization X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edc888ccb1177401a0592b37d822fea98a9905ce;p=mesa.git aco: fix clamp optimization We can't do the optimization if there are neg/abs in-between. No pipeline-db changes. Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Part-of: --- diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 7a16fc176c9..44ce5289ff5 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -1807,11 +1807,11 @@ bool combine_clamp(opt_ctx& ctx, aco_ptr& instr, for (unsigned swap = 0; swap < 2; swap++) { Operand operands[3]; - bool neg[3], abs[3], clamp, inbetween_neg, inbetween_abs; + bool neg[3], abs[3], clamp; uint8_t opsel = 0, omod = 0; if (match_op3_for_vop3(ctx, instr->opcode, other_op, instr.get(), swap, "012", operands, neg, abs, &opsel, - &clamp, &omod, &inbetween_neg, &inbetween_abs, NULL)) { + &clamp, &omod, NULL, NULL, NULL)) { int const0_idx = -1, const1_idx = -1; uint32_t const0 = 0, const1 = 0; for (int i = 0; i < 3; i++) { @@ -1892,11 +1892,6 @@ bool combine_clamp(opt_ctx& ctx, aco_ptr& instr, return false; } - neg[1] ^= inbetween_neg; - neg[2] ^= inbetween_neg; - abs[1] |= inbetween_abs; - abs[2] |= inbetween_abs; - ctx.uses[instr->operands[swap].tempId()]--; create_vop3_for_op3(ctx, med, instr, operands, neg, abs, opsel, clamp, omod); if (omod_clamp & label_omod_success)