aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-24 14:39:27 -0400
committerGitHub <noreply@github.com>2021-10-24 14:39:27 -0400
commitf80fd7e1a6bd3d4f9094301a3815909ce64a3696 (patch)
tree54e423d7053945cadb7a76a3af46baf64e9f817f /src/codegen
parent94879506ea8fe51310f38b3db1bc1ea1e71a4389 (diff)
parent2a733051bb5da245ac377f8771a482a85fb88519 (diff)
downloadzig-f80fd7e1a6bd3d4f9094301a3815909ce64a3696.tar.gz
zig-f80fd7e1a6bd3d4f9094301a3815909ce64a3696.zip
Merge pull request #10022 from LemonBoy/fix-10001
stage1/stage2: Simplify divTrunc impl
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index aa0a99ea6c..80f2d8b653 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -2874,13 +2874,8 @@ pub const FuncGen = struct {
const inst_ty = self.air.typeOfIndex(inst);
if (inst_ty.isRuntimeFloat()) {
- const result_llvm_ty = try self.dg.llvmType(inst_ty);
- const zero = result_llvm_ty.constNull();
const result = self.builder.buildFDiv(lhs, rhs, "");
- const ceiled = try self.callCeil(result, inst_ty);
- const floored = try self.callFloor(result, inst_ty);
- const ltz = self.builder.buildFCmp(.OLT, lhs, zero, "");
- return self.builder.buildSelect(ltz, ceiled, floored, "");
+ return self.callTrunc(result, inst_ty);
}
if (inst_ty.isSignedInt()) return self.builder.buildSDiv(lhs, rhs, "");
return self.builder.buildUDiv(lhs, rhs, "");
@@ -3641,6 +3636,10 @@ pub const FuncGen = struct {
return self.callFloatUnary(arg, ty, "ceil");
}
+ fn callTrunc(self: *FuncGen, arg: *const llvm.Value, ty: Type) !*const llvm.Value {
+ return self.callFloatUnary(arg, ty, "trunc");
+ }
+
fn callFloatUnary(self: *FuncGen, arg: *const llvm.Value, ty: Type, name: []const u8) !*const llvm.Value {
const target = self.dg.module.getTarget();