From: Ilia Mirkin Date: Thu, 2 Jul 2015 04:13:36 +0000 (-0400) Subject: nv50/ir: don't emit src2 in immediate form X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c3215ef204c0fdfc44230adbd423720169d44dcb;p=mesa.git nv50/ir: don't emit src2 in immediate form In the immediate form, src2 == dst, so it does not need to be emitted. Otherwise it overlaps with the immediate value's low bits. Fixes: 09ee907266 (nv50/ir: Fold IMM into MAD) Cc: "10.6" Signed-off-by: Ilia Mirkin --- diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nv50.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nv50.cpp index 6de8f45047a..67ea6df773c 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nv50.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nv50.cpp @@ -550,7 +550,7 @@ CodeEmitterNV50::emitForm_MUL(const Instruction *i) } // usual immediate form -// - 1 to 3 sources where last is immediate (rir, gir) +// - 1 to 3 sources where second is immediate (rir, gir) // - no address or predicate possible void CodeEmitterNV50::emitForm_IMM(const Instruction *i) @@ -566,7 +566,7 @@ CodeEmitterNV50::emitForm_IMM(const Instruction *i) if (Target::operationSrcNr[i->op] > 1) { setSrc(i, 0, 0); setImmediate(i, 1); - setSrc(i, 2, 1); + // If there is another source, it has to be the same as the dest reg. } else { setImmediate(i, 0); }