From 2199eea31bdc880298e68ab63e5ffe8a5dbfea9c Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Sat, 9 Dec 2023 10:38:55 -0600 Subject: [PATCH] nak/sm50: Fix legalization of OpIAdd Most of them specified bits 20..40 which is wrong because it's actually 19 bits with the sign bit off in bit 56 for some reason. Part-of: --- src/nouveau/compiler/nak/legalize.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index c027ad365f5..cccc9368806 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -147,7 +147,9 @@ fn legalize_sm50_instr( } Op::Vote(_) => (), Op::IAdd2(op) => { - copy_src_if_not_reg(b, &mut op.srcs[1], RegFile::GPR); + let [ref mut src0, ref mut src1] = op.srcs; + swap_srcs_if_not_reg(src0, src1); + copy_src_if_not_reg(b, src0, RegFile::GPR); } Op::I2F(op) => { copy_src_if_not_reg(b, &mut op.src, RegFile::GPR);