diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-04-27 17:24:36 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-04-27 17:24:36 -0700 |
| commit | 758ec9bdd4585b28f50cb7beb01b1cfc4e3cf1a9 (patch) | |
| tree | ae1116e81a731304c08bb4944e54a38e1eeb8807 /test/behavior | |
| parent | 09f1d62bdfb5794534b21d1cd9dafc4822697d60 (diff) | |
| download | zig-758ec9bdd4585b28f50cb7beb01b1cfc4e3cf1a9.tar.gz zig-758ec9bdd4585b28f50cb7beb01b1cfc4e3cf1a9.zip | |
enable newly passing behavior tests
closes #11030
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/floatop.zig | 20 | ||||
| -rw-r--r-- | test/behavior/math.zig | 202 | ||||
| -rw-r--r-- | test/behavior/muladd.zig | 21 |
3 files changed, 147 insertions, 96 deletions
diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig index 0700b47c61..cc978f3b8d 100644 --- a/test/behavior/floatop.zig +++ b/test/behavior/floatop.zig @@ -609,16 +609,11 @@ test "negation f64" { } test "negation f80" { - if (builtin.zig_backend != .stage1) { - // This test case exercises @intToFloat f80 in the compiler implementation. - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } - - if (builtin.os.tag == .freebsd) { - // TODO file issue to track this failure - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const S = struct { fn doTheTest() !void { @@ -641,11 +636,6 @@ test "negation f128" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.os.tag == .freebsd) { - // TODO file issue to track this failure - return error.SkipZigTest; - } - const S = struct { fn doTheTest() !void { var a: f128 = 1; diff --git a/test/behavior/math.zig b/test/behavior/math.zig index 942d5f8ca7..0479015eee 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -910,32 +910,52 @@ test "comptime float rem int" { } test "remainder division" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + 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 comptime try remdiv(f16); comptime try remdiv(f32); comptime try remdiv(f64); + comptime try remdiv(f80); comptime try remdiv(f128); try remdiv(f16); try remdiv(f64); + try remdiv(f80); try remdiv(f128); } fn remdiv(comptime T: type) !void { try expect(@as(T, 1) == @as(T, 1) % @as(T, 2)); + try remdivOne(T, 1, 1, 2); + try expect(@as(T, 1) == @as(T, 7) % @as(T, 3)); + try remdivOne(T, 1, 7, 3); +} + +fn remdivOne(comptime T: type, a: T, b: T, c: T) !void { + try expect(a == @rem(b, c)); + try expect(a == @mod(b, c)); } test "float remainder division using @rem" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + 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 comptime try frem(f16); comptime try frem(f32); comptime try frem(f64); + comptime try frem(f80); comptime try frem(f128); try frem(f16); try frem(f32); try frem(f64); + try frem(f80); try frem(f128); } @@ -944,29 +964,40 @@ fn frem(comptime T: type) !void { f16 => 1.0, f32 => 0.001, f64 => 0.00001, + f80 => 0.000001, f128 => 0.0000001, else => unreachable, }; - try expect(@fabs(@rem(@as(T, 6.9), @as(T, 4.0)) - @as(T, 2.9)) < epsilon); - try expect(@fabs(@rem(@as(T, -6.9), @as(T, 4.0)) - @as(T, -2.9)) < epsilon); - try expect(@fabs(@rem(@as(T, -5.0), @as(T, 3.0)) - @as(T, -2.0)) < epsilon); - try expect(@fabs(@rem(@as(T, 3.0), @as(T, 2.0)) - @as(T, 1.0)) < epsilon); - try expect(@fabs(@rem(@as(T, 1.0), @as(T, 2.0)) - @as(T, 1.0)) < epsilon); - try expect(@fabs(@rem(@as(T, 0.0), @as(T, 1.0)) - @as(T, 0.0)) < epsilon); - try expect(@fabs(@rem(@as(T, -0.0), @as(T, 1.0)) - @as(T, -0.0)) < epsilon); + try fremOne(T, 6.9, 4.0, 2.9, epsilon); + try fremOne(T, -6.9, 4.0, -2.9, epsilon); + try fremOne(T, -5.0, 3.0, -2.0, epsilon); + try fremOne(T, 3.0, 2.0, 1.0, epsilon); + try fremOne(T, 1.0, 2.0, 1.0, epsilon); + try fremOne(T, 0.0, 1.0, 0.0, epsilon); + try fremOne(T, -0.0, 1.0, -0.0, epsilon); +} + +fn fremOne(comptime T: type, a: T, b: T, c: T, epsilon: T) !void { + try expect(@fabs(@rem(a, b) - c) < epsilon); } test "float modulo division using @mod" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + 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 comptime try fmod(f16); comptime try fmod(f32); comptime try fmod(f64); + comptime try fmod(f80); comptime try fmod(f128); try fmod(f16); try fmod(f32); try fmod(f64); + try fmod(f80); try fmod(f128); } @@ -975,17 +1006,22 @@ fn fmod(comptime T: type) !void { f16 => 1.0, f32 => 0.001, f64 => 0.00001, + f80 => 0.000001, f128 => 0.0000001, else => unreachable, }; - try expect(@fabs(@mod(@as(T, 6.9), @as(T, 4.0)) - @as(T, 2.9)) < epsilon); - try expect(@fabs(@mod(@as(T, -6.9), @as(T, 4.0)) - @as(T, 1.1)) < epsilon); - try expect(@fabs(@mod(@as(T, -5.0), @as(T, 3.0)) - @as(T, 1.0)) < epsilon); - try expect(@fabs(@mod(@as(T, 3.0), @as(T, 2.0)) - @as(T, 1.0)) < epsilon); - try expect(@fabs(@mod(@as(T, 1.0), @as(T, 2.0)) - @as(T, 1.0)) < epsilon); - try expect(@fabs(@mod(@as(T, 0.0), @as(T, 1.0)) - @as(T, 0.0)) < epsilon); - try expect(@fabs(@mod(@as(T, -0.0), @as(T, 1.0)) - @as(T, -0.0)) < epsilon); + try fmodOne(T, 6.9, 4.0, 2.9, epsilon); + try fmodOne(T, -6.9, 4.0, 1.1, epsilon); + try fmodOne(T, -5.0, 3.0, 1.0, epsilon); + try fmodOne(T, 3.0, 2.0, 1.0, epsilon); + try fmodOne(T, 1.0, 2.0, 1.0, epsilon); + try fmodOne(T, 0.0, 1.0, 0.0, epsilon); + try fmodOne(T, -0.0, 1.0, -0.0, epsilon); +} + +fn fmodOne(comptime T: type, a: T, b: T, c: T, epsilon: T) !void { + try expect(@fabs(@mod(@as(T, a), @as(T, b)) - @as(T, c)) < epsilon); } test "@sqrt" { @@ -1037,10 +1073,11 @@ test "@fabs" { } test "@fabs f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testFabs(f80, 12.0); comptime try testFabs(f80, 12.0); @@ -1053,7 +1090,11 @@ fn testFabs(comptime T: type, x: T) !void { } test "@floor" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testFloor(f64, 12.0); comptime try testFloor(f64, 12.0); @@ -1069,23 +1110,24 @@ test "@floor" { } test "@floor f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO + try testFloor(f80, 12.0); comptime try testFloor(f80, 12.0); } test "@floor f128" { - if (builtin.zig_backend == .stage1) { - // Fails because it incorrectly lowers to a floorl function call. - return error.SkipZigTest; - } - - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO - testFloor(f128, 12.0); + try testFloor(f128, 12.0); comptime try testFloor(f128, 12.0); } @@ -1096,7 +1138,11 @@ fn testFloor(comptime T: type, x: T) !void { } test "@ceil" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testCeil(f64, 12.0); comptime try testCeil(f64, 12.0); @@ -1112,24 +1158,24 @@ test "@ceil" { } test "@ceil f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testCeil(f80, 12.0); comptime try testCeil(f80, 12.0); } test "@ceil f128" { - if (builtin.zig_backend == .stage1) { - // Fails because it incorrectly lowers to a ceill function call. - return error.SkipZigTest; - } - - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO - testCeil(f128, 12.0); + try testCeil(f128, 12.0); comptime try testCeil(f128, 12.0); } @@ -1140,7 +1186,11 @@ fn testCeil(comptime T: type, x: T) !void { } test "@trunc" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testTrunc(f64, 12.0); comptime try testTrunc(f64, 12.0); @@ -1156,10 +1206,11 @@ test "@trunc" { } test "@trunc f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testTrunc(f80, 12.0); comptime try testTrunc(f80, 12.0); @@ -1172,14 +1223,13 @@ test "@trunc f80" { } test "@trunc f128" { - if (builtin.zig_backend == .stage1) { - // Fails because it incorrectly lowers to a truncl function call. - return error.SkipZigTest; - } - - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO - testTrunc(f128, 12.0); + try testTrunc(f128, 12.0); comptime try testTrunc(f128, 12.0); } @@ -1198,7 +1248,11 @@ fn testTrunc(comptime T: type, x: T) !void { } test "@round" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testRound(f64, 12.0); comptime try testRound(f64, 12.0); @@ -1214,24 +1268,24 @@ test "@round" { } test "@round f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO try testRound(f80, 12.0); comptime try testRound(f80, 12.0); } test "@round f128" { - if (builtin.zig_backend == .stage1) { - // Fails because it incorrectly lowers to a roundl function call. - return error.SkipZigTest; - } - - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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_c) return error.SkipZigTest; // TODO - testRound(f128, 12.0); + try testRound(f128, 12.0); comptime try testRound(f128, 12.0); } @@ -1280,10 +1334,12 @@ test "NaN comparison" { } test "NaN comparison f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + 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 + try testNanEqNan(f80); comptime try testNanEqNan(f80); } diff --git a/test/behavior/muladd.zig b/test/behavior/muladd.zig index a7e7c3b816..01ef8c7d29 100644 --- a/test/behavior/muladd.zig +++ b/test/behavior/muladd.zig @@ -32,6 +32,7 @@ test "@mulAdd f16" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + comptime try testMulAdd16(); try testMulAdd16(); } @@ -44,10 +45,12 @@ fn testMulAdd16() !void { } test "@mulAdd f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage1) return error.SkipZigTest; comptime try testMulAdd80(); try testMulAdd80(); @@ -173,10 +176,12 @@ fn vector80() !void { } test "vector f80" { - if (true) { - // https://github.com/ziglang/zig/issues/11030 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage1) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO comptime try vector80(); try vector80(); |
