mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 12:30:11 +01:00
nvc0/ir: fix SET and SLCT emission
We were never emitting a .X flag for consuming condition code on SET, and weren't emitting a signed type for SLCT comparison. Discovered while working on int64 logic. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
eac5099c11
commit
2e986fa806
2 changed files with 6 additions and 0 deletions
|
|
@ -1142,6 +1142,8 @@ CodeEmitterGK110::emitSET(const CmpInstruction *i)
|
|||
} else {
|
||||
code[1] |= 0x7 << 10;
|
||||
}
|
||||
if (i->flagsSrc >= 0)
|
||||
code[1] |= 1 << 14;
|
||||
emitCondCode(i->setCond,
|
||||
isFloatType(i->sType) ? 0x33 : 0x34,
|
||||
isFloatType(i->sType) ? 0xf : 0x7);
|
||||
|
|
@ -1161,6 +1163,8 @@ CodeEmitterGK110::emitSLCT(const CmpInstruction *i)
|
|||
} else {
|
||||
emitForm_21(i, 0x1a0, 0xb20);
|
||||
emitCondCode(cc, 0x34, 0x7);
|
||||
if (i->dType == TYPE_S32)
|
||||
code[1] |= 1 << 19;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1194,6 +1194,8 @@ CodeEmitterNVC0::emitSET(const CmpInstruction *i)
|
|||
|
||||
if (i->ftz)
|
||||
code[1] |= 1 << 27;
|
||||
if (i->flagsSrc >= 0)
|
||||
code[0] |= 1 << 6;
|
||||
|
||||
emitCondCode(i->setCond, 32 + 23);
|
||||
emitNegAbs12(i);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue