aco: don't CSE v_permlane across exec
With bc=1 and fi=0 it needs to return 0 for inactive lanes. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26045>
This commit is contained in:
@@ -166,15 +166,17 @@ struct InstrPred {
|
||||
}
|
||||
}
|
||||
|
||||
if (a->opcode == aco_opcode::v_readfirstlane_b32)
|
||||
return a->pass_flags == b->pass_flags;
|
||||
|
||||
if (a->isVALU()) {
|
||||
VALU_instruction& aV = a->valu();
|
||||
VALU_instruction& bV = b->valu();
|
||||
if (aV.abs != bV.abs || aV.neg != bV.neg || aV.clamp != bV.clamp || aV.omod != bV.omod ||
|
||||
aV.opsel != bV.opsel || aV.opsel_lo != bV.opsel_lo || aV.opsel_hi != bV.opsel_hi)
|
||||
return false;
|
||||
|
||||
if (a->opcode == aco_opcode::v_permlane16_b32 ||
|
||||
a->opcode == aco_opcode::v_permlanex16_b32 ||
|
||||
a->opcode == aco_opcode::v_readfirstlane_b32)
|
||||
return aV.pass_flags == bV.pass_flags;
|
||||
}
|
||||
if (a->isDPP16()) {
|
||||
DPP16_instruction& aDPP = a->dpp16();
|
||||
|
||||
Reference in New Issue
Block a user