From f0f441ed214e72980db254d3f5b238ec17c42420 Mon Sep 17 00:00:00 2001 From: Kai Gunger Date: Wed, 8 Jul 2026 02:43:52 -0400 Subject: [tnslc] issue with cmov, cset --- tnslc/compile/var.tnsl | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'tnslc') diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl index 4735021..d12a85c 100644 --- a/tnslc/compile/var.tnsl +++ b/tnslc/compile/var.tnsl @@ -1817,12 +1817,13 @@ struct Var { /; cmov (~CompBuf buf, ~Var a, ~Var b, ~uint8 cc) - buf`.add_c(" cmp \0") + ~uint8 b_str = b`._set_prim_r(buf, a) ~uint8 a_str = a`._set_prim_l(buf) + + buf`.add_c(" cmp \0") buf`.add_c(a_str) _delete(a_str) buf`.add_c(", \0") - ~uint8 b_str = b`._set_prim_r(buf, a) buf`.add_c(b_str) _delete(b_str) buf`.add_c("\n\0") @@ -1833,17 +1834,16 @@ struct Var { buf`.add_c(cc) buf`.add_c(" ax, cx ; Compare set\n\0") - ~uint8 to_str = self._set_prim_l(buf) - Var ax = self.copy() ax.loc = 1 - buf`.add_c(" mov \0") + ~uint8 ax_str = ax._set_prim_r(buf, ~self) ~uint8 to_str = self._set_prim_l(buf) + + buf`.add_c(" mov \0") buf`.add_c(to_str) _delete(to_str) buf`.add_c(", \0") - ~uint8 ax_str = ax._set_prim_r(buf, ~self) buf`.add_c(ax_str) _delete(ax_str) buf`.add_c(" ; Mov after compare\n\0") @@ -1856,17 +1856,16 @@ struct Var { buf`.add_c(cc) buf`.add_c(" ax, cx ; Compare set\n\0") - ~uint8 to_str = self._set_prim_l(buf) - Var ax = self.copy() ax.loc = 1 - buf`.add_c(" mov \0") + ~uint8 ax_str = ax._set_prim_r(buf, ~self) ~uint8 to_str = self._set_prim_l(buf) - buf`.add_c(to_str)scope + + buf`.add_c(" mov \0") + buf`.add_c(to_str) _delete(to_str) buf`.add_c(", \0") - ~uint8 ax_str = ax._set_prim_r(buf, ~self) buf`.add_c(ax_str) _delete(ax_str) buf`.add_c(" ; Mov after compare\n\0") -- cgit v1.2.3