From 86c7bcc9e326af56ec7bad64548a75e2b96e842b Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 6 Sep 2023 18:20:28 -0500 Subject: [PATCH] nak/legalize: Fix too many IADD3 source modifiers Part-of: --- src/nouveau/compiler/nak_legalize.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/nouveau/compiler/nak_legalize.rs b/src/nouveau/compiler/nak_legalize.rs index e539d9ee170..c8e1fb1178d 100644 --- a/src/nouveau/compiler/nak_legalize.rs +++ b/src/nouveau/compiler/nak_legalize.rs @@ -108,6 +108,14 @@ fn legalize_instr(b: &mut impl SSABuilder, instr: &mut Instr) { let [ref mut src0, ref mut src1, ref mut src2] = op.srcs; swap_srcs_if_not_reg(src0, src1); swap_srcs_if_not_reg(src2, src1); + if !src0.src_mod.is_none() && !src1.src_mod.is_none() { + let val = b.alloc_ssa(RegFile::GPR, 1); + b.push_op(OpIAdd3 { + srcs: [Src::new_zero(), *src0, Src::new_zero()], + dst: val.into(), + }); + *src0 = val.into(); + } copy_src_if_not_reg(b, src0, RegFile::GPR); copy_src_if_not_reg(b, src2, RegFile::GPR); }