aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/math.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-09-23 06:21:03 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-10-01 15:09:52 -0400
commit3bd1b9e15f04128fa3a2c0c3c3969852b7cde9f2 (patch)
tree8845f2091d6aa7755de86427718472e5972337ae /test/behavior/math.zig
parentaf40bce08adf232c9f6b9016810a24f7d0260399 (diff)
downloadzig-3bd1b9e15f04128fa3a2c0c3c3969852b7cde9f2.tar.gz
zig-3bd1b9e15f04128fa3a2c0c3c3969852b7cde9f2.zip
x86_64: implement and test unary float builtins
Diffstat (limited to 'test/behavior/math.zig')
-rw-r--r--test/behavior/math.zig27
1 files changed, 18 insertions, 9 deletions
diff --git a/test/behavior/math.zig b/test/behavior/math.zig
index 18c39e7b8e..9c32a604b2 100644
--- a/test/behavior/math.zig
+++ b/test/behavior/math.zig
@@ -7,6 +7,8 @@ const maxInt = std.math.maxInt;
const minInt = std.math.minInt;
const mem = std.mem;
const math = std.math;
+const no_x86_64_hardware_f16_support = builtin.zig_backend == .stage2_x86_64 and
+ !std.Target.x86.featureSetHas(builtin.cpu.features, .f16c);
test "assignment operators" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
@@ -1437,19 +1439,29 @@ fn fmodOne(comptime T: type, a: T, b: T, c: T, epsilon: T) !void {
try expect(@abs(@mod(@as(T, a), @as(T, b)) - @as(T, c)) < epsilon);
}
-test "@round" {
+test "@round f16" {
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
+ if (no_x86_64_hardware_f16_support) return error.SkipZigTest; // TODO
+
+ try testRound(f16, 12.0);
+ try comptime testRound(f16, 12.0);
+}
+
+test "@round f32/f64" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
- if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
try testRound(f64, 12.0);
try comptime testRound(f64, 12.0);
try testRound(f32, 12.0);
try comptime testRound(f32, 12.0);
- try testRound(f16, 12.0);
- try comptime testRound(f16, 12.0);
const x = 14.0;
const y = x + 0.4;
@@ -1464,6 +1476,7 @@ test "@round f80" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
try testRound(f80, 12.0);
try comptime testRound(f80, 12.0);
@@ -1476,6 +1489,7 @@ test "@round f128" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
try testRound(f128, 12.0);
try comptime testRound(f128, 12.0);
@@ -1608,11 +1622,6 @@ test "signed zeros are represented properly" {
try comptime S.doTheTest();
}
-test "comptime sin and ln" {
- const v = comptime (@sin(@as(f32, 1)) + @log(@as(f32, 5)));
- try expect(v == @sin(@as(f32, 1)) + @log(@as(f32, 5)));
-}
-
test "absFloat" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO