diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-09-23 06:21:03 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-10-01 15:09:52 -0400 |
| commit | 3bd1b9e15f04128fa3a2c0c3c3969852b7cde9f2 (patch) | |
| tree | 8845f2091d6aa7755de86427718472e5972337ae /test/behavior/math.zig | |
| parent | af40bce08adf232c9f6b9016810a24f7d0260399 (diff) | |
| download | zig-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.zig | 27 |
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 |
