nv50/ir: fix 64-bit integer shifts

TGSI was adjusted to always pass in 64-bit integers but nouveau was left
with the old semantics. Update to the new thing.

Fixes: d10fbe5159 (st/glsl_to_tgsi: fix 64-bit integer bit shifts)
Reported-by: Karol Herbst <karolherbst@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit ce6da2a026)
This commit is contained in:
Ilia Mirkin 2017-10-09 20:42:59 -04:00 committed by Emil Velikov
parent 077f925473
commit 2eae2a6f0e

View file

@ -4090,7 +4090,9 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn)
tmp[0] = fetchSrc(0, c);
tmp[1] = fetchSrc(0, c + 1);
mkOp2(OP_MERGE, TYPE_U64, src0, tmp[0], tmp[1]);
src1 = fetchSrc(1, c / 2);
// Theoretically src1 is a 64-bit value but in practice only the low
// bits matter. The IR expects this to be a 32-bit value.
src1 = fetchSrc(1, c);
mkOp2(op, dstTy, dst, src0, src1);
mkSplit(&dst0[c], 4, dst);
c++;