aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/vector.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-09 18:32:15 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-11 18:00:05 +0200
commit40a2dfc12a611082ba6810c566a6a46acdb864fc (patch)
tree566aaa3511c394dbd47fb15cd24bab720dbefea4 /test/behavior/vector.zig
parent9b832e7f530833de93857444a86e34c8d99e4755 (diff)
downloadzig-40a2dfc12a611082ba6810c566a6a46acdb864fc.tar.gz
zig-40a2dfc12a611082ba6810c566a6a46acdb864fc.zip
Sema: coerce array operands to shuffle
Closes #13494
Diffstat (limited to 'test/behavior/vector.zig')
-rw-r--r--test/behavior/vector.zig15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig
index 1f4faae636..36a51d8275 100644
--- a/test/behavior/vector.zig
+++ b/test/behavior/vector.zig
@@ -3,6 +3,7 @@ const builtin = @import("builtin");
const mem = std.mem;
const math = std.math;
const expect = std.testing.expect;
+const expectEqual = std.testing.expectEqual;
test "implicit cast vector to array - bool" {
if (builtin.zig_backend == .stage1) {
@@ -1231,3 +1232,17 @@ test "modRem with zero divisor" {
_ = zeros[0];
}
}
+
+test "array operands to shuffle are coerced to vectors" {
+ 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_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+
+ const mask = [5]i32{ -1, 0, 1, 2, 3 };
+
+ var a = [5]u32{ 3, 5, 7, 9, 0 };
+ var b = @shuffle(u32, a, @splat(5, @as(u24, 0)), mask);
+ try expectEqual([_]u32{ 0, 3, 5, 7, 9 }, b);
+}