mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
nv50/ir/opt: Add isOptSupported() check in logical arith optimization.
This commit is contained in:
parent
f4dbdcbfcf
commit
93508b5b0d
1 changed files with 5 additions and 8 deletions
|
|
@ -1042,6 +1042,10 @@ AlgebraicOpt::handleLOGOP(Instruction *logop)
|
|||
if (set1->op != OP_SET)
|
||||
return;
|
||||
}
|
||||
operation redOp = (logop->op == OP_AND ? OP_SET_AND :
|
||||
logop->op == OP_XOR ? OP_SET_XOR : OP_SET_OR);
|
||||
if (!prog->getTarget()->isOpSupported(redOp, set1->sType))
|
||||
return;
|
||||
if (set0->op != OP_SET &&
|
||||
set0->op != OP_SET_AND &&
|
||||
set0->op != OP_SET_OR &&
|
||||
|
|
@ -1067,14 +1071,7 @@ AlgebraicOpt::handleLOGOP(Instruction *logop)
|
|||
set0->getDef(0)->reg.file = FILE_PREDICATE;
|
||||
set0->getDef(0)->reg.size = 1;
|
||||
set1->setSrc(2, set0->getDef(0));
|
||||
switch (logop->op) {
|
||||
case OP_AND: set1->op = OP_SET_AND; break;
|
||||
case OP_OR: set1->op = OP_SET_OR; break;
|
||||
case OP_XOR: set1->op = OP_SET_XOR; break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
set1->op = redOp;
|
||||
set1->setDef(0, logop->getDef(0));
|
||||
delete_Instruction(prog, logop);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue