mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-22 21:30:31 +01:00
nv50/ir: fix emission of 8-byte wide interp instruction
This can come up if the target register number is > 63, which is fairly rare. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91551 Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "11.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
641eda0c79
commit
ce28ca7133
1 changed files with 6 additions and 5 deletions
|
|
@ -884,7 +884,7 @@ CodeEmitterNV50::emitINTERP(const Instruction *i)
|
|||
defId(i->def(0), 2);
|
||||
srcAddr8(i->src(0), 16);
|
||||
|
||||
if (i->getInterpMode() == NV50_IR_INTERP_FLAT) {
|
||||
if (i->encSize != 8 && i->getInterpMode() == NV50_IR_INTERP_FLAT) {
|
||||
code[0] |= 1 << 8;
|
||||
} else {
|
||||
if (i->op == OP_PINTERP) {
|
||||
|
|
@ -896,10 +896,11 @@ CodeEmitterNV50::emitINTERP(const Instruction *i)
|
|||
}
|
||||
|
||||
if (i->encSize == 8) {
|
||||
code[1] =
|
||||
(code[0] & (3 << 24)) >> (24 - 16) |
|
||||
(code[0] & (1 << 8)) << (18 - 8);
|
||||
code[0] &= ~0x03000100;
|
||||
if (i->getInterpMode() == NV50_IR_INTERP_FLAT)
|
||||
code[1] = 4 << 16;
|
||||
else
|
||||
code[1] = (code[0] & (3 << 24)) >> (24 - 16);
|
||||
code[0] &= ~0x03000000;
|
||||
code[0] |= 1;
|
||||
emitFlagsRd(i);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue