Module: Mesa
Branch: main
Commit: 5335a59bff43a3605ad48b58a7b2beee2f78a571
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5335a59bff43a3605ad48b58a7b2beee2f78a571

Author: Faith Ekstrand <[email protected]>
Date:   Tue Dec  5 23:57:03 2023 -0600

nak/legalize: Handle the src0/1 source mod condition for OpIAdd3X

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26535>

---

 src/nouveau/compiler/nak_legalize.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/nouveau/compiler/nak_legalize.rs 
b/src/nouveau/compiler/nak_legalize.rs
index 41afeecdcde..2d61bf29a39 100644
--- a/src/nouveau/compiler/nak_legalize.rs
+++ b/src/nouveau/compiler/nak_legalize.rs
@@ -140,6 +140,16 @@ fn legalize_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(OpIAdd3X {
+                    srcs: [Src::new_zero(), *src0, Src::new_zero()],
+                    overflow: [Dst::None; 2],
+                    dst: val.into(),
+                    carry: [false.into(); 2],
+                });
+                *src0 = val.into();
+            }
             copy_src_if_not_reg(b, src0, RegFile::GPR);
             copy_src_if_not_reg(b, src2, RegFile::GPR);
         }

Reply via email to