diff --git a/test/behavior/bitcast.zig b/test/behavior/bitcast.zig index 49fc85a13e..14e885fc80 100644 --- a/test/behavior/bitcast.zig +++ b/test/behavior/bitcast.zig @@ -396,7 +396,7 @@ test "bitcast vector to integer and back" { if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14; - var x = @splat(16, true); + var x: @Vector(16, bool) = @splat(true); x[1] = false; try expect(@as(u16, @bitCast(x)) == comptime @as(u16, @bitCast(@as(@Vector(16, bool), arr)))); } diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 731d74909c..cbd34ca9fc 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -639,7 +639,7 @@ test "vector casts" { } fn doTheTestFloat() !void { - var vec = @splat(2, @as(f32, 1234.0)); + var vec: @Vector(2, f32) = @splat(1234.0); var wider: @Vector(2, f64) = vec; try expect(wider[0] == 1234.0); try expect(wider[1] == 1234.0); diff --git a/test/behavior/math.zig b/test/behavior/math.zig index 3b5d4876fd..ad237f3999 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -111,13 +111,17 @@ test "@clz vectors" { } fn testClzVectors() !void { + const Vu4 = @Vector(64, u4); + const Vu8 = @Vector(64, u8); + const Vu128 = @Vector(64, u128); + @setEvalBranchQuota(10_000); - try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b10001010)), @splat(64, @as(u4, 0))); - try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00001010)), @splat(64, @as(u4, 4))); - try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00011010)), @splat(64, @as(u4, 3))); - try testOneClzVector(u8, 64, @splat(64, @as(u8, 0b00000000)), @splat(64, @as(u4, 8))); - try testOneClzVector(u128, 64, @splat(64, @as(u128, 0xffffffffffffffff)), @splat(64, @as(u8, 64))); - try testOneClzVector(u128, 64, @splat(64, @as(u128, 0x10000000000000000)), @splat(64, @as(u8, 63))); + try testOneClzVector(u8, 64, @as(Vu8, @splat(0b10001010)), @as(Vu4, @splat(0))); + try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00001010)), @as(Vu4, @splat(4))); + try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00011010)), @as(Vu4, @splat(3))); + try testOneClzVector(u8, 64, @as(Vu8, @splat(0b00000000)), @as(Vu4, @splat(8))); + try testOneClzVector(u128, 64, @as(Vu128, @splat(0xffffffffffffffff)), @as(Vu8, @splat(64))); + try testOneClzVector(u128, 64, @as(Vu128, @splat(0x10000000000000000)), @as(Vu8, @splat(63))); } fn testOneClzVector( @@ -180,11 +184,13 @@ test "@ctz vectors" { } fn testCtzVectors() !void { + const Vu4 = @Vector(64, u4); + const Vu8 = @Vector(64, u8); @setEvalBranchQuota(10_000); - try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b10100000)), @splat(64, @as(u4, 5))); - try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b10001010)), @splat(64, @as(u4, 1))); - try testOneCtzVector(u8, 64, @splat(64, @as(u8, 0b00000000)), @splat(64, @as(u4, 8))); - try testOneCtzVector(u16, 64, @splat(64, @as(u16, 0b00000000)), @splat(64, @as(u5, 16))); + try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b10100000)), @as(Vu4, @splat(5))); + try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b10001010)), @as(Vu4, @splat(1))); + try testOneCtzVector(u8, 64, @as(Vu8, @splat(0b00000000)), @as(Vu4, @splat(8))); + try testOneCtzVector(u16, 64, @as(@Vector(64, u16), @splat(0b00000000)), @as(@Vector(64, u5), @splat(16))); } fn testOneCtzVector( diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index c2c2993f84..c838843eb9 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -299,8 +299,7 @@ test "vector @splat" { const S = struct { fn testForT(comptime N: comptime_int, v: anytype) !void { const T = @TypeOf(v); - var vec = @splat(N, v); - try expect(@Vector(N, T) == @TypeOf(vec)); + var vec: @Vector(N, T) = @splat(v); var as_array = @as([N]T, vec); for (as_array) |elem| try expect(v == elem); } @@ -458,26 +457,28 @@ test "vector comparison operators" { const S = struct { fn doTheTest() !void { { - var v1: @Vector(4, bool) = [_]bool{ true, false, true, false }; - var v2: @Vector(4, bool) = [_]bool{ false, true, false, true }; - try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 == v1))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 == v2))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 != v2))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v2 != v2))); + const V = @Vector(4, bool); + var v1: V = [_]bool{ true, false, true, false }; + var v2: V = [_]bool{ false, true, false, true }; + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 == v1))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 == v2))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 != v2))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v2 != v2))); } { - var v1 = @splat(4, @as(u32, 0xc0ffeeee)); + const V = @Vector(4, bool); + var v1: @Vector(4, u32) = @splat(0xc0ffeeee); var v2: @Vector(4, c_uint) = v1; - var v3 = @splat(4, @as(u32, 0xdeadbeef)); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 == v2))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 == v3))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, true)), &@as([4]bool, v1 != v3))); - try expect(mem.eql(bool, &@as([4]bool, @splat(4, false)), &@as([4]bool, v1 != v2))); + var v3: @Vector(4, u32) = @splat(0xdeadbeef); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 == v2))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 == v3))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(true))), &@as([4]bool, v1 != v3))); + try expect(mem.eql(bool, &@as([4]bool, @as(V, @splat(false))), &@as([4]bool, v1 != v2))); } { // Comptime-known LHS/RHS var v1: @Vector(4, u32) = [_]u32{ 2, 1, 2, 1 }; - const v2 = @splat(4, @as(u32, 2)); + const v2: @Vector(4, u32) = @splat(2); const v3: @Vector(4, bool) = [_]bool{ true, false, true, false }; try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v1 == v2))); try expect(mem.eql(bool, &@as([4]bool, v3), &@as([4]bool, v2 == v1))); @@ -847,8 +848,10 @@ test "vector @reduce comptime" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - const value = @Vector(4, i32){ 1, -1, 1, -1 }; - const result = value > @splat(4, @as(i32, 0)); + const V = @Vector(4, i32); + + const value = V{ 1, -1, 1, -1 }; + const result = value > @as(V, @splat(0)); // result is { true, false, true, false }; try comptime expect(@TypeOf(result) == @Vector(4, bool)); const is_all_true = @reduce(.And, result); @@ -1270,7 +1273,7 @@ test "array operands to shuffle are coerced to vectors" { 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); + var b = @shuffle(u32, a, @as(@Vector(5, u24), @splat(0)), mask); try expectEqual([_]u32{ 0, 3, 5, 7, 9 }, b); } diff --git a/test/cases/compile_errors/bad_splat_type.zig b/test/cases/compile_errors/bad_splat_type.zig deleted file mode 100644 index f32fcb4fb7..0000000000 --- a/test/cases/compile_errors/bad_splat_type.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn entry() void { - const c = 4; - var v = @splat(4, c); - _ = v; -} - -// error -// backend=stage2 -// target=native -// -// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int' diff --git a/test/cases/compile_errors/branch_in_comptime_only_scope_uses_condbr_inline.zig b/test/cases/compile_errors/branch_in_comptime_only_scope_uses_condbr_inline.zig index 9026d8c84f..8c0166ad2d 100644 --- a/test/cases/compile_errors/branch_in_comptime_only_scope_uses_condbr_inline.zig +++ b/test/cases/compile_errors/branch_in_comptime_only_scope_uses_condbr_inline.zig @@ -1,13 +1,13 @@ pub export fn entry1() void { var x: u32 = 3; - _ = @shuffle(u32, [_]u32{0}, @splat(1, @as(u32, 0)), [_]i8{ + _ = @shuffle(u32, [_]u32{0}, @as(@Vector(1, u32), @splat(0)), [_]i8{ if (x > 1) 1 else -1, }); } pub export fn entry2() void { var y: ?i8 = -1; - _ = @shuffle(u32, [_]u32{0}, @splat(1, @as(u32, 0)), [_]i8{ + _ = @shuffle(u32, [_]u32{0}, @as(@Vector(1, u32), @splat(0)), [_]i8{ y orelse 1, }); } diff --git a/test/cases/safety/signed-unsigned vector cast.zig b/test/cases/safety/signed-unsigned vector cast.zig index 60406aa8a3..71d0690b5d 100644 --- a/test/cases/safety/signed-unsigned vector cast.zig +++ b/test/cases/safety/signed-unsigned vector cast.zig @@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi } pub fn main() !void { - var x = @splat(4, @as(i32, -2147483647)); + var x: @Vector(4, i32) = @splat(-2147483647); var y: @Vector(4, u32) = @intCast(x); _ = y; return error.TestFailed; diff --git a/test/cases/safety/truncating vector cast.zig b/test/cases/safety/truncating vector cast.zig index 501bf694ac..ec56953730 100644 --- a/test/cases/safety/truncating vector cast.zig +++ b/test/cases/safety/truncating vector cast.zig @@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi } pub fn main() !void { - var x = @splat(4, @as(u32, 0xdeadbeef)); + var x: @Vector(4, u32) = @splat(0xdeadbeef); var y: @Vector(4, u16) = @intCast(x); _ = y; return error.TestFailed; diff --git a/test/cases/safety/unsigned-signed vector cast.zig b/test/cases/safety/unsigned-signed vector cast.zig index cf827878b6..6f42ad5aa4 100644 --- a/test/cases/safety/unsigned-signed vector cast.zig +++ b/test/cases/safety/unsigned-signed vector cast.zig @@ -9,7 +9,7 @@ pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usi } pub fn main() !void { - var x = @splat(4, @as(u32, 0x80000000)); + var x: @Vector(4, u32) = @splat(0x80000000); var y: @Vector(4, i32) = @intCast(x); _ = y; return error.TestFailed;