From eb5f333606448792f010add79c0ebb7e894ff59b Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 26 Jul 2024 22:09:43 -0500 Subject: [PATCH] nak: Assert no overflow when legalizing iadd with too many ineg modifiers Part-of: --- src/nouveau/compiler/nak/sm50.rs | 1 + src/nouveau/compiler/nak/sm70.rs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/nouveau/compiler/nak/sm50.rs b/src/nouveau/compiler/nak/sm50.rs index 7816f6f84d6..d1a8a86c9ab 100644 --- a/src/nouveau/compiler/nak/sm50.rs +++ b/src/nouveau/compiler/nak/sm50.rs @@ -1133,6 +1133,7 @@ impl SM50Op for OpIAdd2 { let [src0, src1] = &mut self.srcs; swap_srcs_if_not_reg(src0, src1, GPR); if src0.src_mod.is_ineg() && src1.src_mod.is_ineg() { + assert!(self.carry_out.is_none()); let val = b.alloc_ssa(GPR, 1); b.push_op(OpIAdd2 { dst: val.into(), diff --git a/src/nouveau/compiler/nak/sm70.rs b/src/nouveau/compiler/nak/sm70.rs index 1c0f8a1616e..47519391aa8 100644 --- a/src/nouveau/compiler/nak/sm70.rs +++ b/src/nouveau/compiler/nak/sm70.rs @@ -1442,6 +1442,8 @@ impl SM70Op for OpIAdd3 { swap_srcs_if_not_reg(src0, src1, gpr); swap_srcs_if_not_reg(src2, src1, gpr); if !src0.src_mod.is_none() && !src1.src_mod.is_none() { + assert!(self.overflow[0].is_none()); + assert!(self.overflow[1].is_none()); let val = b.alloc_ssa(gpr, 1); b.push_op(OpIAdd3 { srcs: [Src::new_zero(), *src0, Src::new_zero()],