diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-08-31 21:59:48 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-31 21:59:48 -0400 |
| commit | 3b9ec4e4df634b17268034a6a5527c11cf67e54b (patch) | |
| tree | b2234a4d097f1586cf32540fa0ae967c33906874 /src/codegen.zig | |
| parent | d522f925b7f2f7f9d4782bb42eed95d5da4f3e0f (diff) | |
| parent | cf9684ce75d4f9a4dc576d9c2cd490edcb8002df (diff) | |
| download | zig-3b9ec4e4df634b17268034a6a5527c11cf67e54b.tar.gz zig-3b9ec4e4df634b17268034a6a5527c11cf67e54b.zip | |
Merge pull request #9655 from nektro/stage2-rem
stage2: implement runtime `%` and `@rem`
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 7fd93369c9..cf51f30fe3 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -809,6 +809,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { .mul => try self.airMul(inst), .mulwrap => try self.airMulWrap(inst), .div => try self.airDiv(inst), + .rem => try self.airRem(inst), .cmp_lt => try self.airCmp(inst, .lt), .cmp_lte => try self.airCmp(inst, .lte), @@ -1266,6 +1267,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); } + fn airRem(self: *Self, inst: Air.Inst.Index) !void { + const bin_op = self.air.instructions.items(.data)[inst].bin_op; + const result: MCValue = if (self.liveness.isUnused(inst)) .dead else switch (arch) { + else => return self.fail("TODO implement rem for {}", .{self.target.cpu.arch}), + }; + return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); + } + fn airBitAnd(self: *Self, inst: Air.Inst.Index) !void { const bin_op = self.air.instructions.items(.data)[inst].bin_op; const result: MCValue = if (self.liveness.isUnused(inst)) .dead else switch (arch) { |
