diff options
Diffstat (limited to 'src/codegen.zig')
-rw-r--r-- | src/codegen.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 7ade3fd..701a4e8 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -642,6 +642,14 @@ const Context = struct { switch (bin_op.op) { .add => try self.emit(.add(reg, lhs, rhs)), .sub => try self.emit(.sub(reg, lhs, rhs)), + .less_than => try self.emit(.sltu(reg, lhs, rhs)), + .greater_than => try self.emit(.sltu(reg, rhs, lhs)), + .less_or_equal, .greater_or_equal => { + const l, const r = if (bin_op.op == .less_or_equal) .{ lhs, rhs } else .{ rhs, lhs }; + + try self.emit(.sltu(reg, r, l)); + try self.emit(.xori(reg, reg, 1)); + }, } } |