diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-12-10 13:44:12 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-12-10 16:28:49 -0700 |
| commit | 74718a11831ea82b20bfe4e2f9211ccf322ead33 (patch) | |
| tree | d0e4af709a189f1107d94e8cb7e9d5aa68cc7ea4 /test/behavior | |
| parent | c029a98f1c601f4ff1369b49a4402d5c94fbb168 (diff) | |
| download | zig-74718a11831ea82b20bfe4e2f9211ccf322ead33.tar.gz zig-74718a11831ea82b20bfe4e2f9211ccf322ead33.zip | |
disable failing CBE behavior tests failing on aarch64-windows
Also start to move redundant tests next to each other to make them
slightly more obvious that they need to be cleaned up.
See tracking issue #13876
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/align.zig | 16 | ||||
| -rw-r--r-- | test/behavior/cast.zig | 7 | ||||
| -rw-r--r-- | test/behavior/floatop.zig | 276 | ||||
| -rw-r--r-- | test/behavior/math.zig | 283 | ||||
| -rw-r--r-- | test/behavior/muladd.zig | 7 | ||||
| -rw-r--r-- | test/behavior/widening.zig | 14 |
6 files changed, 343 insertions, 260 deletions
diff --git a/test/behavior/align.zig b/test/behavior/align.zig index b536ffc6aa..780ee06875 100644 --- a/test/behavior/align.zig +++ b/test/behavior/align.zig @@ -275,10 +275,20 @@ test "page aligned array on stack" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - // https://github.com/ziglang/zig/issues/13679 + if (builtin.zig_backend == .stage2_llvm and - builtin.cpu.arch == .aarch64 and - builtin.os.tag == .windows) return error.SkipZigTest; + builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) + { + // https://github.com/ziglang/zig/issues/13679 + return error.SkipZigTest; + } + + if (builtin.zig_backend == .stage2_c and + builtin.os.tag == .windows and builtin.cpu.arch == .aarch64) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } // Large alignment value to make it hard to accidentally pass. var array align(0x1000) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 }; diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 894138edf4..1822922ec2 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -1351,6 +1351,13 @@ test "cast f128 to narrower types" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + const S = struct { fn doTheTest() !void { var x: f128 = 1234.0; diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig index ed3ff983b3..7befa41380 100644 --- a/test/behavior/floatop.zig +++ b/test/behavior/floatop.zig @@ -185,6 +185,32 @@ test "more @sqrt f16 tests" { try expect(math.isNan(@sqrt(@as(f16, math.nan(f16))))); } +test "another, possibly redundant @sqrt test" { + 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 testSqrtLegacy(f64, 12.0); + comptime try testSqrtLegacy(f64, 12.0); + try testSqrtLegacy(f32, 13.0); + comptime try testSqrtLegacy(f32, 13.0); + try testSqrtLegacy(f16, 13.0); + comptime try testSqrtLegacy(f16, 13.0); + + // TODO: make this pass + if (false) { + const x = 14.0; + const y = x * x; + const z = @sqrt(y); + comptime try expect(z == x); + } +} + +fn testSqrtLegacy(comptime T: type, x: T) !void { + try expect(@sqrt(x * x) == x); +} + test "@sin" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @@ -529,6 +555,85 @@ fn testFabsWithVectors() !void { try expect(math.approxEqAbs(f32, @fabs(@as(f32, -0.4)), result[3], epsilon)); } +test "another, possibly redundant, @fabs test" { + 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.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + + try testFabsLegacy(f128, 12.0); + comptime try testFabsLegacy(f128, 12.0); + try testFabsLegacy(f64, 12.0); + comptime try testFabsLegacy(f64, 12.0); + try testFabsLegacy(f32, 12.0); + comptime try testFabsLegacy(f32, 12.0); + try testFabsLegacy(f16, 12.0); + comptime try testFabsLegacy(f16, 12.0); + + const x = 14.0; + const y = -x; + const z = @fabs(y); + comptime try std.testing.expectEqual(x, z); +} + +test "@fabs f80" { + 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 testFabsLegacy(f80, 12.0); + comptime try testFabsLegacy(f80, 12.0); +} + +fn testFabsLegacy(comptime T: type, x: T) !void { + const y = -x; + const z = @fabs(y); + try expect(x == z); +} + +test "a third @fabs test, surely there should not be three fabs tests" { + 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.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + + inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { + // normals + try expect(@fabs(@as(T, 1.0)) == 1.0); + try expect(@fabs(@as(T, -1.0)) == 1.0); + try expect(@fabs(math.floatMin(T)) == math.floatMin(T)); + try expect(@fabs(-math.floatMin(T)) == math.floatMin(T)); + try expect(@fabs(math.floatMax(T)) == math.floatMax(T)); + try expect(@fabs(-math.floatMax(T)) == math.floatMax(T)); + + // subnormals + try expect(@fabs(@as(T, 0.0)) == 0.0); + try expect(@fabs(@as(T, -0.0)) == 0.0); + try expect(@fabs(math.floatTrueMin(T)) == math.floatTrueMin(T)); + try expect(@fabs(-math.floatTrueMin(T)) == math.floatTrueMin(T)); + + // non-finite numbers + try expect(math.isPositiveInf(@fabs(math.inf(T)))); + try expect(math.isPositiveInf(@fabs(-math.inf(T)))); + try expect(math.isNan(@fabs(math.nan(T)))); + } +} + test "@floor" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @@ -573,6 +678,56 @@ fn testFloorWithVectors() !void { try expect(math.approxEqAbs(f32, @floor(@as(f32, -0.4)), result[3], epsilon)); } +test "another, possibly redundant, @floor test" { + 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 testFloorLegacy(f64, 12.0); + comptime try testFloorLegacy(f64, 12.0); + try testFloorLegacy(f32, 12.0); + comptime try testFloorLegacy(f32, 12.0); + try testFloorLegacy(f16, 12.0); + comptime try testFloorLegacy(f16, 12.0); + + const x = 14.0; + const y = x + 0.7; + const z = @floor(y); + comptime try expect(x == z); +} + +test "@floor f80" { + 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_llvm and builtin.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12602 + return error.SkipZigTest; + } + + try testFloorLegacy(f80, 12.0); + comptime try testFloorLegacy(f80, 12.0); +} + +test "@floor f128" { + 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 testFloorLegacy(f128, 12.0); + comptime try testFloorLegacy(f128, 12.0); +} + +fn testFloorLegacy(comptime T: type, x: T) !void { + const y = x + 0.6; + const z = @floor(y); + try expect(x == z); +} + test "@ceil" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @@ -617,6 +772,56 @@ fn testCeilWithVectors() !void { try expect(math.approxEqAbs(f32, @ceil(@as(f32, -0.4)), result[3], epsilon)); } +test "another, possibly redundant, @ceil test" { + 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 testCeilLegacy(f64, 12.0); + comptime try testCeilLegacy(f64, 12.0); + try testCeilLegacy(f32, 12.0); + comptime try testCeilLegacy(f32, 12.0); + try testCeilLegacy(f16, 12.0); + comptime try testCeilLegacy(f16, 12.0); + + const x = 14.0; + const y = x - 0.7; + const z = @ceil(y); + comptime try expect(x == z); +} + +test "@ceil f80" { + 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_llvm and builtin.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12602 + return error.SkipZigTest; + } + + try testCeilLegacy(f80, 12.0); + comptime try testCeilLegacy(f80, 12.0); +} + +test "@ceil f128" { + 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 testCeilLegacy(f128, 12.0); + comptime try testCeilLegacy(f128, 12.0); +} + +fn testCeilLegacy(comptime T: type, x: T) !void { + const y = x - 0.8; + const z = @ceil(y); + try expect(x == z); +} + test "@trunc" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @@ -661,6 +866,70 @@ fn testTruncWithVectors() !void { try expect(math.approxEqAbs(f32, @trunc(@as(f32, -0.4)), result[3], epsilon)); } +test "another, possibly redundant, @trunc test" { + 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 testTruncLegacy(f64, 12.0); + comptime try testTruncLegacy(f64, 12.0); + try testTruncLegacy(f32, 12.0); + comptime try testTruncLegacy(f32, 12.0); + try testTruncLegacy(f16, 12.0); + comptime try testTruncLegacy(f16, 12.0); + + const x = 14.0; + const y = x + 0.7; + const z = @trunc(y); + comptime try expect(x == z); +} + +test "@trunc f80" { + 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_llvm and builtin.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12602 + return error.SkipZigTest; + } + + try testTruncLegacy(f80, 12.0); + comptime try testTruncLegacy(f80, 12.0); + comptime { + const x: f80 = 12.0; + const y = x + 0.8; + const z = @trunc(y); + try expect(x == z); + } +} + +test "@trunc f128" { + 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 testTruncLegacy(f128, 12.0); + comptime try testTruncLegacy(f128, 12.0); +} + +fn testTruncLegacy(comptime T: type, x: T) !void { + { + const y = x + 0.8; + const z = @trunc(y); + try expect(x == z); + } + + { + const y = -x - 0.8; + const z = @trunc(y); + try expect(-x == z); + } +} + test "negation f16" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @@ -757,6 +1026,13 @@ test "negation f128" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + 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 88cc373adb..d352457bbb 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -578,6 +578,13 @@ test "f128" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + try test_f128(); comptime try test_f128(); } @@ -1150,7 +1157,18 @@ test "remainder division" { 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_x86_64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 + + if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12602 + return error.SkipZigTest; + } + + if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows and + builtin.cpu.arch == .aarch64) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } comptime try remdiv(f16); comptime try remdiv(f32); @@ -1262,233 +1280,6 @@ 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" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testSqrt(f64, 12.0); - comptime try testSqrt(f64, 12.0); - try testSqrt(f32, 13.0); - comptime try testSqrt(f32, 13.0); - try testSqrt(f16, 13.0); - comptime try testSqrt(f16, 13.0); - - // TODO: make this pass - if (false) { - const x = 14.0; - const y = x * x; - const z = @sqrt(y); - comptime try expect(z == x); - } -} - -fn testSqrt(comptime T: type, x: T) !void { - try expect(@sqrt(x * x) == x); -} - -test "@fabs" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testFabs(f128, 12.0); - comptime try testFabs(f128, 12.0); - try testFabs(f64, 12.0); - comptime try testFabs(f64, 12.0); - try testFabs(f32, 12.0); - comptime try testFabs(f32, 12.0); - try testFabs(f16, 12.0); - comptime try testFabs(f16, 12.0); - - const x = 14.0; - const y = -x; - const z = @fabs(y); - comptime try expectEqual(x, z); -} - -test "@fabs f80" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testFabs(f80, 12.0); - comptime try testFabs(f80, 12.0); -} - -fn testFabs(comptime T: type, x: T) !void { - const y = -x; - const z = @fabs(y); - try expect(x == z); -} - -test "@floor" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testFloor(f64, 12.0); - comptime try testFloor(f64, 12.0); - try testFloor(f32, 12.0); - comptime try testFloor(f32, 12.0); - try testFloor(f16, 12.0); - comptime try testFloor(f16, 12.0); - - const x = 14.0; - const y = x + 0.7; - const z = @floor(y); - comptime try expect(x == z); -} - -test "@floor f80" { - 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_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 - - try testFloor(f80, 12.0); - comptime try testFloor(f80, 12.0); -} - -test "@floor f128" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testFloor(f128, 12.0); - comptime try testFloor(f128, 12.0); -} - -fn testFloor(comptime T: type, x: T) !void { - const y = x + 0.6; - const z = @floor(y); - try expect(x == z); -} - -test "@ceil" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testCeil(f64, 12.0); - comptime try testCeil(f64, 12.0); - try testCeil(f32, 12.0); - comptime try testCeil(f32, 12.0); - try testCeil(f16, 12.0); - comptime try testCeil(f16, 12.0); - - const x = 14.0; - const y = x - 0.7; - const z = @ceil(y); - comptime try expect(x == z); -} - -test "@ceil f80" { - 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_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 - - try testCeil(f80, 12.0); - comptime try testCeil(f80, 12.0); -} - -test "@ceil f128" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testCeil(f128, 12.0); - comptime try testCeil(f128, 12.0); -} - -fn testCeil(comptime T: type, x: T) !void { - const y = x - 0.8; - const z = @ceil(y); - try expect(x == z); -} - -test "@trunc" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testTrunc(f64, 12.0); - comptime try testTrunc(f64, 12.0); - try testTrunc(f32, 12.0); - comptime try testTrunc(f32, 12.0); - try testTrunc(f16, 12.0); - comptime try testTrunc(f16, 12.0); - - const x = 14.0; - const y = x + 0.7; - const z = @trunc(y); - comptime try expect(x == z); -} - -test "@trunc f80" { - 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_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602 - - try testTrunc(f80, 12.0); - comptime try testTrunc(f80, 12.0); - comptime { - const x: f80 = 12.0; - const y = x + 0.8; - const z = @trunc(y); - try expect(x == z); - } -} - -test "@trunc f128" { - 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_sparc64) return error.SkipZigTest; // TODO - - try testTrunc(f128, 12.0); - comptime try testTrunc(f128, 12.0); -} - -fn testTrunc(comptime T: type, x: T) !void { - { - const y = x + 0.8; - const z = @trunc(y); - try expect(x == z); - } - - { - const y = -x - 0.8; - const z = @trunc(y); - try expect(-x == z); - } -} - test "@round" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO @@ -1567,6 +1358,13 @@ test "NaN comparison" { 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_c and builtin.os.tag == .windows and + builtin.cpu.arch == .aarch64) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + try testNanEqNan(f16); try testNanEqNan(f32); try testNanEqNan(f64); @@ -1667,35 +1465,6 @@ test "comptime sin and ln" { try expect(v == @sin(@as(f32, 1)) + @log(@as(f32, 5))); } -test "fabs" { - 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_sparc64) return error.SkipZigTest; // TODO - - inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| { - // normals - try expect(@fabs(@as(T, 1.0)) == 1.0); - try expect(@fabs(@as(T, -1.0)) == 1.0); - try expect(@fabs(math.floatMin(T)) == math.floatMin(T)); - try expect(@fabs(-math.floatMin(T)) == math.floatMin(T)); - try expect(@fabs(math.floatMax(T)) == math.floatMax(T)); - try expect(@fabs(-math.floatMax(T)) == math.floatMax(T)); - - // subnormals - try expect(@fabs(@as(T, 0.0)) == 0.0); - try expect(@fabs(@as(T, -0.0)) == 0.0); - try expect(@fabs(math.floatTrueMin(T)) == math.floatTrueMin(T)); - try expect(@fabs(-math.floatTrueMin(T)) == math.floatTrueMin(T)); - - // non-finite numbers - try expect(math.isPositiveInf(@fabs(math.inf(T)))); - try expect(math.isPositiveInf(@fabs(-math.inf(T)))); - try expect(math.isNan(@fabs(math.nan(T)))); - } -} - test "absFloat" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO diff --git a/test/behavior/muladd.zig b/test/behavior/muladd.zig index 16f7e551a8..da00355b35 100644 --- a/test/behavior/muladd.zig +++ b/test/behavior/muladd.zig @@ -70,6 +70,13 @@ test "@mulAdd f128" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + comptime try testMulAdd128(); try testMulAdd128(); } diff --git a/test/behavior/widening.zig b/test/behavior/widening.zig index ff38df382b..ddd438d5d3 100644 --- a/test/behavior/widening.zig +++ b/test/behavior/widening.zig @@ -44,6 +44,13 @@ test "float widening" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + var a: f16 = 12.34; var b: f32 = a; var c: f64 = b; @@ -64,6 +71,13 @@ test "float widening f16 to f128" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64 and + builtin.zig_backend == .stage2_c) + { + // https://github.com/ziglang/zig/issues/13876 + return error.SkipZigTest; + } + var x: f16 = 12.34; var y: f128 = x; try expect(x == y); |
