mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
nv50/ir: allow to swap sources for OP_SUB
This allows the load-propagation pass to swap the sources in presence
of immediate values.
Maxwell (GM107):
total instructions in shared programs :1928187 -> 1927634 (-0.03%)
total gprs used in shared programs :330741 -> 330154 (-0.18%)
total local used in shared programs :28032 -> 28032 (0.00%)
local gpr inst bytes
helped 0 271 425 425
hurt 0 0 194 194
Fermi (GF114):
total instructions in shared programs :2334474 -> 2333829 (-0.03%)
total gprs used in shared programs :380934 -> 380215 (-0.19%)
total local used in shared programs :33304 -> 33264 (-0.12%)
local gpr inst bytes
helped 5 314 521 521
hurt 0 4 195 195
No regressions on GM107 and GF114 with full piglit.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
2e890b5350
commit
3f5cf8c488
1 changed files with 6 additions and 1 deletions
|
|
@ -192,7 +192,7 @@ LoadPropagation::checkSwapSrc01(Instruction *insn)
|
|||
{
|
||||
const Target *targ = prog->getTarget();
|
||||
if (!targ->getOpInfo(insn).commutative)
|
||||
if (insn->op != OP_SET && insn->op != OP_SLCT)
|
||||
if (insn->op != OP_SET && insn->op != OP_SLCT && insn->op != OP_SUB)
|
||||
return;
|
||||
if (insn->src(1).getFile() != FILE_GPR)
|
||||
return;
|
||||
|
|
@ -232,6 +232,11 @@ LoadPropagation::checkSwapSrc01(Instruction *insn)
|
|||
else
|
||||
if (insn->op == OP_SLCT)
|
||||
insn->asCmp()->setCond = inverseCondCode(insn->asCmp()->setCond);
|
||||
else
|
||||
if (insn->op == OP_SUB) {
|
||||
insn->src(0).mod = insn->src(0).mod ^ Modifier(NV50_IR_MOD_NEG);
|
||||
insn->src(1).mod = insn->src(1).mod ^ Modifier(NV50_IR_MOD_NEG);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue