From a0a587ff85d3785f99c475d9e0d5f1eb9e27bd26 Mon Sep 17 00:00:00 2001 From: Luuk de Gram Date: Sat, 2 Apr 2022 19:09:51 +0200 Subject: [PATCH] wasm: Enable passing behavior tests This shuffles some tests do ensure the new instructions are tested for the wasm backend, by moving vectors into their own tests as well as move the f16 test cases as those require special operating also. --- test/behavior/floatop.zig | 1 + test/behavior/math.zig | 2 -- test/behavior/maximum_minimum.zig | 42 ++++++++++++++++++++++++++----- test/behavior/muladd.zig | 24 ++++++++++++------ 4 files changed, 54 insertions(+), 15 deletions(-) diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig index 6d8c33efa248ca921d60e333f28073a5d74bbad3..0700b47c61dfb09d6d808cb5315d2cc87ce59b84 100644 --- a/test/behavior/floatop.zig +++ b/test/behavior/floatop.zig @@ -544,6 +544,7 @@ fn testTrunc() !void { } test "negation f16" { + 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 diff --git a/test/behavior/math.zig b/test/behavior/math.zig index 00728b13a4b1b7636c3e58c094ad02622ad5e9d7..32945e452dd96f200314297e2c0b391e3beaaa0e 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -60,7 +60,6 @@ fn assertFalse(b: bool) !void { } test "@clz" { - 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_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO @@ -137,7 +136,6 @@ fn expectVectorsEqual(a: anytype, b: anytype) !void { } test "@ctz" { - 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_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO diff --git a/test/behavior/maximum_minimum.zig b/test/behavior/maximum_minimum.zig index 3d1b689db2694173b9e336f6991a16012582e10f..b3b8ee25c582322c69a29d88107d294c2c6b32d6 100644 --- a/test/behavior/maximum_minimum.zig +++ b/test/behavior/maximum_minimum.zig @@ -5,6 +5,24 @@ const expect = std.testing.expect; const expectEqual = std.testing.expectEqual; test "@maximum" { + if (builtin.zig_backend == .stage2_x86_64) 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 + + const S = struct { + fn doTheTest() !void { + var x: i32 = 10; + var y: f32 = 0.68; + try expect(@as(i32, 10) == @maximum(@as(i32, -3), x)); + try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), y)); + } + }; + try S.doTheTest(); + comptime try S.doTheTest(); +} + +test "@maximum on vectors" { 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_c) return error.SkipZigTest; // TODO @@ -13,9 +31,6 @@ test "@maximum" { const S = struct { fn doTheTest() !void { - try expect(@as(i32, 10) == @maximum(@as(i32, -3), @as(i32, 10))); - try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), @as(f32, 0.68))); - var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; var x = @maximum(a, b); @@ -37,6 +52,24 @@ test "@maximum" { } test "@minimum" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + + const S = struct { + fn doTheTest() !void { + var x: i32 = 10; + var y: f32 = 0.68; + try expect(@as(i32, -3) == @minimum(@as(i32, -3), x)); + try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), y)); + } + }; + try S.doTheTest(); + comptime try S.doTheTest(); +} + +test "@minimum for vectors" { 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_aarch64) return error.SkipZigTest; // TODO @@ -45,9 +78,6 @@ test "@minimum" { const S = struct { fn doTheTest() !void { - try expect(@as(i32, -3) == @minimum(@as(i32, -3), @as(i32, 10))); - try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), @as(f32, 0.68))); - var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; var x = @minimum(a, b); diff --git a/test/behavior/muladd.zig b/test/behavior/muladd.zig index 88e1769866f74af26c75a0b13cc83b78e884a019..a7e7c3b816a3eb49c0cf0decc6a864c0d82b2572 100644 --- a/test/behavior/muladd.zig +++ b/test/behavior/muladd.zig @@ -3,7 +3,6 @@ const expect = @import("std").testing.expect; test "@mulAdd" { 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 @@ -13,12 +12,6 @@ test "@mulAdd" { } fn testMulAdd() !void { - { - var a: f16 = 5.5; - var b: f16 = 2.5; - var c: f16 = 6.25; - try expect(@mulAdd(f16, a, b, c) == 20); - } { var a: f32 = 5.5; var b: f32 = 2.5; @@ -33,6 +26,23 @@ fn testMulAdd() !void { } } +test "@mulAdd f16" { + 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 + comptime try testMulAdd16(); + try testMulAdd16(); +} + +fn testMulAdd16() !void { + var a: f16 = 5.5; + var b: f16 = 2.5; + var c: f16 = 6.25; + try expect(@mulAdd(f16, a, b, c) == 20); +} + test "@mulAdd f80" { if (true) { // https://github.com/ziglang/zig/issues/11030 -- 2.54.0