diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-02-25 21:43:20 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-25 21:43:20 -0800 |
| commit | 91fb211faa3f37d08da55b0c8df92a6475624316 (patch) | |
| tree | ad824c8fcdd386e378669c21a3e65923b52d0133 /test/behavior/vector.zig | |
| parent | d656c2a7abe90d00ef6dbc3731b82bd26180038a (diff) | |
| parent | 4fcc750ba58f51606c49310bdd7c81c156d48cfc (diff) | |
| download | zig-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.zig | 42 |
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 }; |
