authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-04-02 19:09:51+02:00
committergravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-04-02 21:54:01+02:00
loga0a587ff85d3785f99c475d9e0d5f1eb9e27bd26
tree87465456c5d1c11249ab7a4e01102d57f67ad8f1
parent2c40b37f79b1b40b5f22e13131064bcab2191f64

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.

4 files changed, 54 insertions(+), 15 deletions(-)

test/behavior/floatop.zig+1
...@@ -544,6 +544,7 @@ fn testTrunc() !void {...@@ -544,6 +544,7 @@ fn testTrunc() !void {
544}544}
545545
546test "negation f16" {546test "negation f16" {
547 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
547 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO548 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
548 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO549 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/math.zig-2
...@@ -60,7 +60,6 @@ fn assertFalse(b: bool) !void {...@@ -60,7 +60,6 @@ fn assertFalse(b: bool) !void {
60}60}
6161
62test "@clz" {62test "@clz" {
63 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -137,7 +136,6 @@ fn expectVectorsEqual(a: anytype, b: anytype) !void {...@@ -137,7 +136,6 @@ fn expectVectorsEqual(a: anytype, b: anytype) !void {
137}136}
138137
139test "@ctz" {138test "@ctz" {
140 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO139 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/maximum_minimum.zig+36-6
...@@ -5,7 +5,6 @@ const expect = std.testing.expect;...@@ -5,7 +5,6 @@ const expect = std.testing.expect;
5const expectEqual = std.testing.expectEqual;5const expectEqual = std.testing.expectEqual;
66
7test "@maximum" {7test "@maximum" {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -13,9 +12,25 @@ test "@maximum" {...@@ -13,9 +12,25 @@ test "@maximum" {
1312
14 const S = struct {13 const S = struct {
15 fn doTheTest() !void {14 fn doTheTest() !void {
16 try expect(@as(i32, 10) == @maximum(@as(i32, -3), @as(i32, 10)));15 var x: i32 = 10;
17 try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), @as(f32, 0.68)));16 var y: f32 = 0.68;
17 try expect(@as(i32, 10) == @maximum(@as(i32, -3), x));
18 try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), y));
19 }
20 };
21 try S.doTheTest();
22 comptime try S.doTheTest();
23}
24
25test "@maximum on vectors" {
26 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1831
32 const S = struct {
33 fn doTheTest() !void {
19 var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };34 var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
20 var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };35 var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
21 var x = @maximum(a, b);36 var x = @maximum(a, b);
...@@ -37,7 +52,6 @@ test "@maximum" {...@@ -37,7 +52,6 @@ test "@maximum" {
37}52}
3853
39test "@minimum" {54test "@minimum" {
40 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -45,9 +59,25 @@ test "@minimum" {...@@ -45,9 +59,25 @@ test "@minimum" {
4559
46 const S = struct {60 const S = struct {
47 fn doTheTest() !void {61 fn doTheTest() !void {
48 try expect(@as(i32, -3) == @minimum(@as(i32, -3), @as(i32, 10)));62 var x: i32 = 10;
49 try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), @as(f32, 0.68)));63 var y: f32 = 0.68;
64 try expect(@as(i32, -3) == @minimum(@as(i32, -3), x));
65 try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), y));
66 }
67 };
68 try S.doTheTest();
69 comptime try S.doTheTest();
70}
71
72test "@minimum for vectors" {
73 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
5078
79 const S = struct {
80 fn doTheTest() !void {
51 var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };81 var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
52 var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };82 var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
53 var x = @minimum(a, b);83 var x = @minimum(a, b);
test/behavior/muladd.zig+17-7
...@@ -3,7 +3,6 @@ const expect = @import("std").testing.expect;...@@ -3,7 +3,6 @@ const expect = @import("std").testing.expect;
33
4test "@mulAdd" {4test "@mulAdd" {
5 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -13,12 +12,6 @@ test "@mulAdd" {...@@ -13,12 +12,6 @@ test "@mulAdd" {
13}12}
1413
15fn testMulAdd() !void {14fn testMulAdd() !void {
16 {
17 var a: f16 = 5.5;
18 var b: f16 = 2.5;
19 var c: f16 = 6.25;
20 try expect(@mulAdd(f16, a, b, c) == 20);
21 }
22 {15 {
23 var a: f32 = 5.5;16 var a: f32 = 5.5;
24 var b: f32 = 2.5;17 var b: f32 = 2.5;
...@@ -33,6 +26,23 @@ fn testMulAdd() !void {...@@ -33,6 +26,23 @@ fn testMulAdd() !void {
33 }26 }
34}27}
3528
29test "@mulAdd f16" {
30 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
35 comptime try testMulAdd16();
36 try testMulAdd16();
37}
38
39fn testMulAdd16() !void {
40 var a: f16 = 5.5;
41 var b: f16 = 2.5;
42 var c: f16 = 6.25;
43 try expect(@mulAdd(f16, a, b, c) == 20);
44}
45
36test "@mulAdd f80" {46test "@mulAdd f80" {
37 if (true) {47 if (true) {
38 // https://github.com/ziglang/zig/issues/1103048 // https://github.com/ziglang/zig/issues/11030