authorgravatar for liljaanton2001@gmail.comantlilja <liljaanton2001@gmail.com> 2023-07-07 20:41:33+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-12 15:35:57-07:00
loga0ec2266fe2bd8a986795c6634407a6f7df9a50f
tree2b8b917ba2fea35efba7b5c133c1c3432ece78ad
parent16d17addcbc0b217b0b575928a2b2690be81a736

Update tests to new splat syntax


9 files changed, 44 insertions(+), 46 deletions(-)

test/behavior/bitcast.zig+1-1
...@@ -396,7 +396,7 @@ test "bitcast vector to integer and back" {...@@ -396,7 +396,7 @@ test "bitcast vector to integer and back" {
396 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;396 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
397397
398 const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14;398 const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14;
399 var x = @splat(16, true);399 var x: @Vector(16, bool) = @splat(true);
400 x[1] = false;400 x[1] = false;
401 try expect(@as(u16, @bitCast(x)) == comptime @as(u16, @bitCast(@as(@Vector(16, bool), arr))));401 try expect(@as(u16, @bitCast(x)) == comptime @as(u16, @bitCast(@as(@Vector(16, bool), arr))));
402}402}
test/behavior/cast.zig+1-1
...@@ -639,7 +639,7 @@ test "vector casts" {...@@ -639,7 +639,7 @@ test "vector casts" {
639 }639 }
640640
641 fn doTheTestFloat() !void {641 fn doTheTestFloat() !void {
642 var vec = @splat(2, @as(f32, 1234.0));642 var vec: @Vector(2, f32) = @splat(1234.0);
643 var wider: @Vector(2, f64) = vec;643 var wider: @Vector(2, f64) = vec;
644 try expect(wider[0] == 1234.0);644 try expect(wider[0] == 1234.0);
645 try expect(wider[1] == 1234.0);645 try expect(wider[1] == 1234.0);
test/behavior/math.zig+16-10
...@@ -111,13 +111,17 @@ test "@clz vectors" {...@@ -111,13 +111,17 @@ test "@clz vectors" {
111}111}
112112
113fn testClzVectors() !void {113fn testClzVectors() !void {
114 const Vu4 = @Vector(64, u4);
115 const Vu8 = @Vector(64, u8);
116 const Vu128 = @Vector(64, u128);
117
114 @setEvalBranchQuota(10_000);118 @setEvalBranchQuota(10_000);
115 try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b10001010)), @splat(64, @as(u4, 0)));119 try testOneClzVector(u8, 64, @as(Vu8, @splat(0b10001010)), @as(Vu4, @splat(0)));
116 try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00001010)), @splat(64, @as(u4, 4)));120 try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00001010)), @as(Vu4, @splat(4)));
117 try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00011010)), @splat(64, @as(u4, 3)));121 try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00011010)), @as(Vu4, @splat(3)));
118 try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00000000)), @splat(64, @as(u4, 8)));122 try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00000000)), @as(Vu4, @splat(8)));
119 try testOneClzVector(u128, 64, @splat(64, @as(u128, 0xffffffffffffffff)), @splat(64, @as(u8, 64)));123 try testOneClzVector(u128, 64, @as(Vu128, @splat(0xffffffffffffffff)), @as(Vu8, @splat(64)));
120 try testOneClzVector(u128, 64, @splat(64, @as(u128, 0x10000000000000000)), @splat(64, @as(u8, 63)));124 try testOneClzVector(u128, 64, @as(Vu128, @splat(0x10000000000000000)), @as(Vu8, @splat(63)));
121}125}
122126
123fn testOneClzVector(127fn testOneClzVector(
...@@ -180,11 +184,13 @@ test "@ctz vectors" {...@@ -180,11 +184,13 @@ test "@ctz vectors" {
180}184}
181185
182fn testCtzVectors() !void {186fn testCtzVectors() !void {
187 const Vu4 = @Vector(64, u4);
188 const Vu8 = @Vector(64, u8);
183 @setEvalBranchQuota(10_000);189 @setEvalBranchQuota(10_000);
184 try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b10100000)), @splat(64, @as(u4, 5)));190 try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b10100000)), @as(Vu4, @splat(5)));
185 try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b10001010)), @splat(64, @as(u4, 1)));191 try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b10001010)), @as(Vu4, @splat(1)));
186 try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b00000000)), @splat(64, @as(u4, 8)));192 try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b00000000)), @as(Vu4, @splat(8)));
187 try testOneCtzVector(u16, 64, @splat(64, @as(u16, 0b00000000)), @splat(64, @as(u5, 16)));193 try testOneCtzVector(u16, 64, @as(@Vector(64, u16), @splat(0b00000000)), @as(@Vector(64, u5), @splat(16)));
188}194}
189195
190fn testOneCtzVector(196fn testOneCtzVector(
test/behavior/vector.zig+21-18
...@@ -299,8 +299,7 @@ test "vector @splat" {...@@ -299,8 +299,7 @@ test "vector @splat" {
299 const S = struct {299 const S = struct {
300 fn testForT(comptime N: comptime_int, v: anytype) !void {300 fn testForT(comptime N: comptime_int, v: anytype) !void {
301 const T = @TypeOf(v);301 const T = @TypeOf(v);
302 var vec = @splat(N, v);302 var vec: @Vector(N, T) = @splat(v);
303 try expect(@Vector(N, T) == @TypeOf(vec));
304 var as_array = @as([N]T, vec);303 var as_array = @as([N]T, vec);
305 for (as_array) |elem| try expect(v == elem);304 for (as_array) |elem| try expect(v == elem);
306 }305 }
...@@ -458,26 +457,28 @@ test "vector comparison operators" {...@@ -458,26 +457,28 @@ test "vector comparison operators" {
458 const S = struct {457 const S = struct {
459 fn doTheTest() !void {458 fn doTheTest() !void {
460 {459 {
461 var v1: @Vector(4, bool) = [_]bool{ true, false, true, false };460 const V = @Vector(4, bool);
462 var v2: @Vector(4, bool) = [_]bool{ false, true, false, true };461 var v1: V = [_]bool{ true, false, true, false };
463 try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 == v1)));462 var v2: V = [_]bool{ false, true, false, true };
464 try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 == v2)));463 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 == v1)));
465 try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 != v2)));464 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 == v2)));
466 try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v2 != v2)));465 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 != v2)));
466 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v2 != v2)));
467 }467 }
468 {468 {
469 var v1 = @splat(4, @as(u32, 0xc0ffeeee));469 const V = @Vector(4, bool);
470 var v1: @Vector(4, u32) = @splat(0xc0ffeeee);
470 var v2: @Vector(4, c_uint) = v1;471 var v2: @Vector(4, c_uint) = v1;
471 var v3 = @splat(4, @as(u32, 0xdeadbeef));472 var v3: @Vector(4, u32) = @splat(0xdeadbeef);
472 try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 == v2)));473 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 == v2)));
473 try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 == v3)));474 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 == v3)));
474 try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 != v3)));475 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 != v3)));
475 try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 != v2)));476 try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 != v2)));
476 }477 }
477 {478 {
478 // Comptime-known LHS/RHS479 // Comptime-known LHS/RHS
479 var v1: @Vector(4, u32) = [_]u32{ 2, 1, 2, 1 };480 var v1: @Vector(4, u32) = [_]u32{ 2, 1, 2, 1 };
480 const v2 = @splat(4, @as(u32, 2));481 const v2: @Vector(4, u32) = @splat(2);
481 const v3: @Vector(4, bool) = [_]bool{ true, false, true, false };482 const v3: @Vector(4, bool) = [_]bool{ true, false, true, false };
482 try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v1 == v2)));483 try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v1 == v2)));
483 try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v2 == v1)));484 try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v2 == v1)));
...@@ -847,8 +848,10 @@ test "vector @reduce comptime" {...@@ -847,8 +848,10 @@ test "vector @reduce comptime" {
847 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO848 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
848 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO849 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
849850
850 const value = @Vector(4, i32){ 1, -1, 1, -1 };851 const V = @Vector(4, i32);
851 const result = value > @splat(4, @as(i32, 0));852
853 const value = V{ 1, -1, 1, -1 };
854 const result = value > @as(V, @splat(0));
852 // result is { true, false, true, false };855 // result is { true, false, true, false };
853 try comptime expect(@TypeOf(result) == @Vector(4, bool));856 try comptime expect(@TypeOf(result) == @Vector(4, bool));
854 const is_all_true = @reduce(.And, result);857 const is_all_true = @reduce(.And, result);
...@@ -1270,7 +1273,7 @@ test "array operands to shuffle are coerced to vectors" {...@@ -1270,7 +1273,7 @@ test "array operands to shuffle are coerced to vectors" {
1270 const mask = [5]i32{ -1, 0, 1, 2, 3 };1273 const mask = [5]i32{ -1, 0, 1, 2, 3 };
12711274
1272 var a = [5]u32{ 3, 5, 7, 9, 0 };1275 var a = [5]u32{ 3, 5, 7, 9, 0 };
1273 var b = @shuffle(u32, a, @splat(5, @as(u24, 0)), mask);1276 var b = @shuffle(u32, a, @as(@Vector(5, u24), @splat(0)), mask);
1274 try expectEqual([_]u32{ 0, 3, 5, 7, 9 }, b);1277 try expectEqual([_]u32{ 0, 3, 5, 7, 9 }, b);
1275}1278}
12761279
test/cases/compile_errors/bad_splat_type.zig deleted-11
...@@ -1,11 +0,0 @@
1export fn entry() void {
2 const c = 4;
3 var v = @splat(4, c);
4 _ = v;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int'
test/cases/compile_errors/branch_in_comptime_only_scope_uses_condbr_inline.zig+2-2
...@@ -1,13 +1,13 @@...@@ -1,13 +1,13 @@
1pub export fn entry1() void {1pub export fn entry1() void {
2 var x: u32 = 3;2 var x: u32 = 3;
3 _ = @shuffle(u32, [_]u32{0}, @splat(1, @as(u32, 0)), [_]i8{3 _ = @shuffle(u32, [_]u32{0}, @as(@Vector(1, u32), @splat(0)), [_]i8{
4 if (x > 1) 1 else -1,4 if (x > 1) 1 else -1,
5 });5 });
6}6}
77
8pub export fn entry2() void {8pub export fn entry2() void {
9 var y: ?i8 = -1;9 var y: ?i8 = -1;
10 _ = @shuffle(u32, [_]u32{0}, @splat(1, @as(u32, 0)), [_]i8{10 _ = @shuffle(u32, [_]u32{0}, @as(@Vector(1, u32), @splat(0)), [_]i8{
11 y orelse 1,11 y orelse 1,
12 });12 });
13}13}
test/cases/safety/signed-unsigned vector cast.zig +1-1
...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
9}9}
1010
11pub fn main() !void {11pub fn main() !void {
12 var x = @splat(4, @as(i32, -2147483647));12 var x: @Vector(4, i32) = @splat(-2147483647);
13 var y: @Vector(4, u32) = @intCast(x);13 var y: @Vector(4, u32) = @intCast(x);
14 _ = y;14 _ = y;
15 return error.TestFailed;15 return error.TestFailed;
test/cases/safety/truncating vector cast.zig +1-1
...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
9}9}
1010
11pub fn main() !void {11pub fn main() !void {
12 var x = @splat(4, @as(u32, 0xdeadbeef));12 var x: @Vector(4, u32) = @splat(0xdeadbeef);
13 var y: @Vector(4, u16) = @intCast(x);13 var y: @Vector(4, u16) = @intCast(x);
14 _ = y;14 _ = y;
15 return error.TestFailed;15 return error.TestFailed;
test/cases/safety/unsigned-signed vector cast.zig +1-1
...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi...@@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi
9}9}
1010
11pub fn main() !void {11pub fn main() !void {
12 var x = @splat(4, @as(u32, 0x80000000));12 var x: @Vector(4, u32) = @splat(0x80000000);
13 var y: @Vector(4, i32) = @intCast(x);13 var y: @Vector(4, i32) = @intCast(x);
14 _ = y;14 _ = y;
15 return error.TestFailed;15 return error.TestFailed;