zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit a0a587ff85d3785f99c475d9e0d5f1eb9e27bd26 (tree)
parent 2c40b37f79b1b40b5f22e13131064bcab2191f64
Author: Luuk de Gram <luuk@degram.dev>
Date:   Sat,  2 Apr 2022 19:09:51 +0200

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.

Diffstat:
Mtest/behavior/floatop.zig | 1+
Mtest/behavior/math.zig | 2--
Mtest/behavior/maximum_minimum.zig | 42++++++++++++++++++++++++++++++++++++------
Mtest/behavior/muladd.zig | 24+++++++++++++++++-------
4 files changed, 54 insertions(+), 15 deletions(-)

diff --git 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 @@ -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 @@ -5,7 +5,6 @@ const expect = std.testing.expect; const expectEqual = std.testing.expectEqual; test "@maximum" { - 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 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO @@ -13,9 +12,25 @@ 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 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 + 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 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,7 +52,6 @@ test "@maximum" { } test "@minimum" { - 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 @@ -45,9 +59,25 @@ 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 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 + 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 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 @@ -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 @@ -14,12 +13,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; var c: f32 = 6.25; @@ -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