summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Gunger <kgunger12@gmail.com>2026-07-08 02:43:52 -0400
committerKai Gunger <kgunger12@gmail.com>2026-07-08 02:43:52 -0400
commitf0f441ed214e72980db254d3f5b238ec17c42420 (patch)
treed4076317089272cfa46b76611e50b255a955c30f
parentb45c3e6a23f659d62e02ad420f7cecd86ff07df5 (diff)
[tnslc] issue with cmov, cset
-rw-r--r--tnslc/compile/var.tnsl21
1 files changed, 10 insertions, 11 deletions
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")