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 6d8c33efa2..0700b47c61 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 00728b13a4..32945e452d 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 3d1b689db2..b3b8ee25c5 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 88e1769866..a7e7c3b816 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