From d50360bb8630ea309898a733a597195ce1736fbe Mon Sep 17 00:00:00 2001 From: christopherngutierrez Date: Wed, 19 Mar 2025 10:34:07 -0700 Subject: [PATCH 1/2] added current_rns into immediate naming to enable non-fresh multi-ops --- kerngen/pisa_generators/mod.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kerngen/pisa_generators/mod.py b/kerngen/pisa_generators/mod.py index dabeecc6..4c01e069 100644 --- a/kerngen/pisa_generators/mod.py +++ b/kerngen/pisa_generators/mod.py @@ -40,10 +40,12 @@ def to_pisa(self) -> list[PIsaOp]: # Immediates last_q = self.input0.rns - 1 - it = Immediate(name="it" + self.var_suffix) + it = Immediate(name="it" + self.var_suffix + f"_{self.context.current_rns}") t = Immediate(name="t", rns=last_q) one, r2, iq = common_immediates( - r2_rns=last_q, iq_rns=last_q, iq_suffix=self.var_suffix + r2_rns=last_q, + iq_rns=last_q, + iq_suffix=self.var_suffix + f"_{self.context.current_rns}", ) # Drop down input rns From 51a995c1f5a1fc5e154820809d6ddf773736ad98 Mon Sep 17 00:00:00 2001 From: christopherngutierrez Date: Fri, 21 Mar 2025 09:42:37 -0700 Subject: [PATCH 2/2] Fixed qiLastHalf to use current_rns in naming to avoid collisions in multi-ops --- kerngen/pisa_generators/rescale.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kerngen/pisa_generators/rescale.py b/kerngen/pisa_generators/rescale.py index 5b7441f3..4907b2b6 100644 --- a/kerngen/pisa_generators/rescale.py +++ b/kerngen/pisa_generators/rescale.py @@ -39,14 +39,17 @@ def to_pisa(self) -> list[PIsaOp]: # Immediates last_q = self.input0.rns - 1 - one, r2, iq = common_immediates(r2_rns=last_q, iq_rns=last_q) one, r2, iq = common_immediates( - r2_rns=last_q, iq_rns=last_q, iq_suffix=self.var_suffix + r2_rns=last_q, + iq_rns=last_q, + iq_suffix=self.var_suffix + f"_{self.context.current_rns}", ) q_last_half = Polys("qLastHalf", 1, self.input0.rns) - q_i_last_half = Polys("qiLastHalf", 1, rns=last_q) + q_i_last_half = Polys( + "qiLastHalf" + f"_{self.context.current_rns}", 1, rns=last_q + ) # split input input_last_rns, input_remaining_rns = split_last_rns_polys(