mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 11:20:20 +01:00
nv50/ir: optimize mad/fma with third argument 0 to mul
Very modest effect, but it's clearly the right thing to do.
total instructions in shared programs : 6131491 -> 6131398 (-0.00%)
total gprs used in shared programs : 910157 -> 910131 (-0.00%)
total local used in shared programs : 15328 -> 15328 (0.00%)
local gpr inst bytes
helped 0 55 85 85
hurt 0 26 20 20
Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
3aa681449e
commit
29d09f8747
1 changed files with 21 additions and 0 deletions
|
|
@ -336,6 +336,7 @@ private:
|
|||
void expr(Instruction *, ImmediateValue&, ImmediateValue&);
|
||||
void expr(Instruction *, ImmediateValue&, ImmediateValue&, ImmediateValue&);
|
||||
void opnd(Instruction *, ImmediateValue&, int s);
|
||||
void opnd3(Instruction *, ImmediateValue&);
|
||||
|
||||
void unary(Instruction *, const ImmediateValue&);
|
||||
|
||||
|
|
@ -388,6 +389,8 @@ ConstantFolding::visit(BasicBlock *bb)
|
|||
else
|
||||
if (i->srcExists(1) && i->src(1).getImmediate(src1))
|
||||
opnd(i, src1, 1);
|
||||
if (i->srcExists(2) && i->src(2).getImmediate(src2))
|
||||
opnd3(i, src2);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -872,6 +875,24 @@ ConstantFolding::tryCollapseChainedMULs(Instruction *mul2,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
ConstantFolding::opnd3(Instruction *i, ImmediateValue &imm2)
|
||||
{
|
||||
switch (i->op) {
|
||||
case OP_MAD:
|
||||
case OP_FMA:
|
||||
if (imm2.isInteger(0)) {
|
||||
i->op = OP_MUL;
|
||||
i->setSrc(2, NULL);
|
||||
foldCount++;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ConstantFolding::opnd(Instruction *i, ImmediateValue &imm0, int s)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue