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); }