aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/vector.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-02-25 21:43:20 -0800
committerGitHub <noreply@github.com>2024-02-25 21:43:20 -0800
commit91fb211faa3f37d08da55b0c8df92a6475624316 (patch)
treead824c8fcdd386e378669c21a3e65923b52d0133 /test/behavior/vector.zig
parentd656c2a7abe90d00ef6dbc3731b82bd26180038a (diff)
parent4fcc750ba58f51606c49310bdd7c81c156d48cfc (diff)
downloadzig-91fb211faa3f37d08da55b0c8df92a6475624316.tar.gz
zig-91fb211faa3f37d08da55b0c8df92a6475624316.zip
Merge pull request #18906 from jacobly0/x86_64-tests
x86_64: pass more tests
Diffstat (limited to 'test/behavior/vector.zig')
-rw-r--r--test/behavior/vector.zig42
1 files changed, 29 insertions, 13 deletions
diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig
index cb9cd4a87a..9d21f8fdb0 100644
--- a/test/behavior/vector.zig
+++ b/test/behavior/vector.zig
@@ -29,7 +29,7 @@ test "vector wrap operators" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64 and
- !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
+ !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
const S = struct {
fn doTheTest() !void {
@@ -906,22 +906,26 @@ test "vector @reduce comptime" {
}
test "mask parameter of @shuffle is comptime scope" {
- 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_sparc64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64 and
+ !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .ssse3)) return error.SkipZigTest;
const __v4hi = @Vector(4, i16);
- var v4_a = __v4hi{ 0, 0, 0, 0 };
- var v4_b = __v4hi{ 0, 0, 0, 0 };
+ var v4_a = __v4hi{ 1, 2, 3, 4 };
+ var v4_b = __v4hi{ 5, 6, 7, 8 };
_ = .{ &v4_a, &v4_b };
const shuffled: __v4hi = @shuffle(i16, v4_a, v4_b, @Vector(4, i32){
std.zig.c_translation.shuffleVectorIndex(0, @typeInfo(@TypeOf(v4_a)).Vector.len),
- std.zig.c_translation.shuffleVectorIndex(0, @typeInfo(@TypeOf(v4_a)).Vector.len),
- std.zig.c_translation.shuffleVectorIndex(0, @typeInfo(@TypeOf(v4_a)).Vector.len),
- std.zig.c_translation.shuffleVectorIndex(0, @typeInfo(@TypeOf(v4_a)).Vector.len),
+ std.zig.c_translation.shuffleVectorIndex(2, @typeInfo(@TypeOf(v4_a)).Vector.len),
+ std.zig.c_translation.shuffleVectorIndex(4, @typeInfo(@TypeOf(v4_a)).Vector.len),
+ std.zig.c_translation.shuffleVectorIndex(6, @typeInfo(@TypeOf(v4_a)).Vector.len),
});
- _ = shuffled;
+ try expect(shuffled[0] == 1);
+ try expect(shuffled[1] == 3);
+ try expect(shuffled[2] == 5);
+ try expect(shuffled[3] == 7);
}
test "saturating add" {
@@ -1177,10 +1181,22 @@ test "@shlWithOverflow" {
}
test "alignment of vectors" {
- try expect(@alignOf(@Vector(2, u8)) == 2);
- try expect(@alignOf(@Vector(2, u1)) == 1);
- try expect(@alignOf(@Vector(1, u1)) == 1);
- try expect(@alignOf(@Vector(2, u16)) == 4);
+ try expect(@alignOf(@Vector(2, u8)) == switch (builtin.zig_backend) {
+ else => 2,
+ .stage2_x86_64 => 16,
+ });
+ try expect(@alignOf(@Vector(2, u1)) == switch (builtin.zig_backend) {
+ else => 1,
+ .stage2_x86_64 => 16,
+ });
+ try expect(@alignOf(@Vector(1, u1)) == switch (builtin.zig_backend) {
+ else => 1,
+ .stage2_x86_64 => 16,
+ });
+ try expect(@alignOf(@Vector(2, u16)) == switch (builtin.zig_backend) {
+ else => 4,
+ .stage2_x86_64 => 16,
+ });
}
test "loading the second vector from a slice of vectors" {
@@ -1316,10 +1332,10 @@ test "modRem with zero divisor" {
test "array operands to shuffle are coerced to 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_sparc64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
const mask = [5]i32{ -1, 0, 1, 2, 3 };