mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-25 13:40:24 +01:00
nvc0/ir: unlink values pre- and post-call to division function
While technically correct, this can lead to e.g. getImmediate assuming that it can walk up the value chain. It could be fixed to not do this, but it seems easier and less error-prone to just not link the two values to save on one LValue object. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
22e1d8832c
commit
ea22ac23e0
1 changed files with 3 additions and 4 deletions
|
|
@ -45,11 +45,10 @@ NVC0LegalizeSSA::handleDIV(Instruction *i)
|
|||
{
|
||||
FlowInstruction *call;
|
||||
int builtin;
|
||||
Value *def[2];
|
||||
|
||||
bld.setPosition(i, false);
|
||||
def[0] = bld.mkMovToReg(0, i->getSrc(0))->getDef(0);
|
||||
def[1] = bld.mkMovToReg(1, i->getSrc(1))->getDef(0);
|
||||
bld.mkMovToReg(0, i->getSrc(0));
|
||||
bld.mkMovToReg(1, i->getSrc(1));
|
||||
switch (i->dType) {
|
||||
case TYPE_U32: builtin = NVC0_BUILTIN_DIV_U32; break;
|
||||
case TYPE_S32: builtin = NVC0_BUILTIN_DIV_S32; break;
|
||||
|
|
@ -57,7 +56,7 @@ NVC0LegalizeSSA::handleDIV(Instruction *i)
|
|||
return;
|
||||
}
|
||||
call = bld.mkFlow(OP_CALL, NULL, CC_ALWAYS, NULL);
|
||||
bld.mkMov(i->getDef(0), def[(i->op == OP_DIV) ? 0 : 1]);
|
||||
bld.mkMovFromReg(i->getDef(0), i->op == OP_DIV ? 0 : 1);
|
||||
bld.mkClobber(FILE_GPR, (i->op == OP_DIV) ? 0xe : 0xd, 2);
|
||||
bld.mkClobber(FILE_PREDICATE, (i->dType == TYPE_S32) ? 0xf : 0x3, 0);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue