diff options
| author | John Schmidt <john.schmidt.h@gmail.com> | 2022-03-24 23:27:23 +0100 |
|---|---|---|
| committer | John Schmidt <john.schmidt.h@gmail.com> | 2022-03-25 19:14:11 +0100 |
| commit | cd46daf7d047eeceb7690e2739af5952d60c3884 (patch) | |
| tree | d7aa543ebca4fb0edb1738617e703f90bbaaf2e5 /test/behavior/select.zig | |
| parent | f47db0a0dbf64f1fef0ba86bd9f684a5df29bc3d (diff) | |
| download | zig-cd46daf7d047eeceb7690e2739af5952d60c3884.tar.gz zig-cd46daf7d047eeceb7690e2739af5952d60c3884.zip | |
sema: coerce inputs to vectors in zirSelect
Diffstat (limited to 'test/behavior/select.zig')
| -rw-r--r-- | test/behavior/select.zig | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/test/behavior/select.zig b/test/behavior/select.zig index a1fcfb761a..f731ded09e 100644 --- a/test/behavior/select.zig +++ b/test/behavior/select.zig @@ -3,18 +3,18 @@ const builtin = @import("builtin"); const mem = std.mem; const expect = std.testing.expect; -test "@select" { +test "@select vectors" { 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 - try doTheTest(); - comptime try doTheTest(); + comptime try selectVectors(); + try selectVectors(); } -fn doTheTest() !void { +fn selectVectors() !void { var a = @Vector(4, bool){ true, false, true, false }; var b = @Vector(4, i32){ -1, 4, 999, -31 }; var c = @Vector(4, i32){ -5, 1, 0, 1234 }; @@ -30,3 +30,32 @@ fn doTheTest() !void { var xyz = @select(f32, x, y, z); try expect(mem.eql(f32, &@as([4]f32, xyz), &[4]f32{ 0.0, 312.1, -145.9, -3381.233 })); } + +test "@select arrays" { + if (builtin.zig_backend == .stage1) return error.SkipZigTest; // TODO + 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 + + comptime try selectArrays(); + try selectArrays(); +} + +fn selectArrays() !void { + var a = [4]bool{ false, true, false, true }; + var b = [4]usize{ 0, 1, 2, 3 }; + var c = [4]usize{ 4, 5, 6, 7 }; + var abc = @select(usize, a, b, c); + try expect(abc[0] == 4); + try expect(abc[1] == 1); + try expect(abc[2] == 6); + try expect(abc[3] == 3); + + var x = [4]bool{ false, false, false, true }; + var y = [4]f32{ 0.001, 33.4, 836, -3381.233 }; + var z = [4]f32{ 0.0, 312.1, -145.9, 9993.55 }; + var xyz = @select(f32, x, y, z); + try expect(mem.eql(f32, &@as([4]f32, xyz), &[4]f32{ 0.0, 312.1, -145.9, -3381.233 })); +} |
