authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2025-02-25 20:27:37+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-02-25 20:27:37+01:00
logd856763acab62dd88c561b9ca8fd4a3c76783b7a
tree7fd07044671cab859eed0e2dac85765ef6831d96
parente902c231c85890fdba486db3469e1aaf0de83da5
parentfe5a78691fc3cebf8fcefa3498a4b594dbb28c65
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22937 from alichraghi/ali_spv

spirv: make test suite working again

73 files changed, 659 insertions(+), 121 deletions(-)

lib/compiler/test_runner.zig+5
......@@ -22,6 +22,11 @@ const crippled = switch (builtin.zig_backend) {
2222pub fn main() void {
2323 @disableInstrumentation();
2424
25 if (builtin.cpu.arch.isSpirV()) {
26 // SPIR-V needs an special test-runner
27 return;
28 }
29
2530 if (crippled) {
2631 return mainSimple() catch @panic("test failure\n");
2732 }
lib/std/Target/spirv.zig+24-18
......@@ -17,6 +17,7 @@ pub const Feature = enum {
1717 float64,
1818 addresses,
1919 matrix,
20 storage_push_constant16,
2021 kernel,
2122 generic_pointer,
2223 vector16,
......@@ -35,92 +36,97 @@ pub const all_features = blk: {
3536 var result: [len]CpuFeature = undefined;
3637 result[@intFromEnum(Feature.v1_0)] = .{
3738 .llvm_name = null,
38 .description = "SPIR-V version 1.0",
39 .description = "Enable version 1.0",
3940 .dependencies = featureSet(&[_]Feature{}),
4041 };
4142 result[@intFromEnum(Feature.v1_1)] = .{
4243 .llvm_name = null,
43 .description = "SPIR-V version 1.1",
44 .description = "Enable version 1.1",
4445 .dependencies = featureSet(&[_]Feature{.v1_0}),
4546 };
4647 result[@intFromEnum(Feature.v1_2)] = .{
4748 .llvm_name = null,
48 .description = "SPIR-V version 1.2",
49 .description = "Enable version 1.2",
4950 .dependencies = featureSet(&[_]Feature{.v1_1}),
5051 };
5152 result[@intFromEnum(Feature.v1_3)] = .{
5253 .llvm_name = null,
53 .description = "SPIR-V version 1.3",
54 .description = "Enable version 1.3",
5455 .dependencies = featureSet(&[_]Feature{.v1_2}),
5556 };
5657 result[@intFromEnum(Feature.v1_4)] = .{
5758 .llvm_name = null,
58 .description = "SPIR-V version 1.4",
59 .description = "Enable version 1.4",
5960 .dependencies = featureSet(&[_]Feature{.v1_3}),
6061 };
6162 result[@intFromEnum(Feature.v1_5)] = .{
6263 .llvm_name = null,
63 .description = "SPIR-V version 1.5",
64 .description = "Enable version 1.5",
6465 .dependencies = featureSet(&[_]Feature{.v1_4}),
6566 };
6667 result[@intFromEnum(Feature.v1_6)] = .{
6768 .llvm_name = null,
68 .description = "SPIR-V version 1.6",
69 .description = "Enable version 1.6",
6970 .dependencies = featureSet(&[_]Feature{.v1_5}),
7071 };
7172 result[@intFromEnum(Feature.int8)] = .{
7273 .llvm_name = null,
73 .description = "Enable SPIR-V capability Int8",
74 .description = "Enable Int8 capability",
7475 .dependencies = featureSet(&[_]Feature{.v1_0}),
7576 };
7677 result[@intFromEnum(Feature.int16)] = .{
7778 .llvm_name = null,
78 .description = "Enable SPIR-V capability Int16",
79 .description = "Enable Int16 capability",
7980 .dependencies = featureSet(&[_]Feature{.v1_0}),
8081 };
8182 result[@intFromEnum(Feature.int64)] = .{
8283 .llvm_name = null,
83 .description = "Enable SPIR-V capability Int64",
84 .description = "Enable Int64 capability",
8485 .dependencies = featureSet(&[_]Feature{.v1_0}),
8586 };
8687 result[@intFromEnum(Feature.float16)] = .{
8788 .llvm_name = null,
88 .description = "Enable SPIR-V capability Float16",
89 .description = "Enable Float16 capability",
8990 .dependencies = featureSet(&[_]Feature{.v1_0}),
9091 };
9192 result[@intFromEnum(Feature.float64)] = .{
9293 .llvm_name = null,
93 .description = "Enable SPIR-V capability Float64",
94 .description = "Enable Float64 capability",
9495 .dependencies = featureSet(&[_]Feature{.v1_0}),
9596 };
9697 result[@intFromEnum(Feature.addresses)] = .{
9798 .llvm_name = null,
98 .description = "Enable SPIR-V capability Addresses",
99 .description = "Enable either the Addresses capability or, SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
99100 .dependencies = featureSet(&[_]Feature{.v1_0}),
100101 };
101102 result[@intFromEnum(Feature.matrix)] = .{
102103 .llvm_name = null,
103 .description = "Enable SPIR-V capability Matrix",
104 .description = "Enable Matrix capability",
104105 .dependencies = featureSet(&[_]Feature{.v1_0}),
105106 };
107 result[@intFromEnum(Feature.storage_push_constant16)] = .{
108 .llvm_name = null,
109 .description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",
110 .dependencies = featureSet(&[_]Feature{.v1_3}),
111 };
106112 result[@intFromEnum(Feature.kernel)] = .{
107113 .llvm_name = null,
108 .description = "Enable SPIR-V capability Kernel",
114 .description = "Enable Kernel capability",
109115 .dependencies = featureSet(&[_]Feature{.v1_0}),
110116 };
111117 result[@intFromEnum(Feature.generic_pointer)] = .{
112118 .llvm_name = null,
113 .description = "Enable SPIR-V capability GenericPointer",
119 .description = "Enable GenericPointer capability",
114120 .dependencies = featureSet(&[_]Feature{ .v1_0, .addresses }),
115121 };
116122 result[@intFromEnum(Feature.vector16)] = .{
117123 .llvm_name = null,
118 .description = "Enable SPIR-V capability Vector16",
124 .description = "Enable Vector16 capability",
119125 .dependencies = featureSet(&[_]Feature{ .v1_0, .kernel }),
120126 };
121127 result[@intFromEnum(Feature.shader)] = .{
122128 .llvm_name = null,
123 .description = "Enable SPIR-V capability Shader",
129 .description = "Enable Shader capability",
124130 .dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }),
125131 };
126132 const ti = @typeInfo(Feature);
src/Zcu.zig+8
......@@ -3463,7 +3463,15 @@ fn clearCachedResolvedReferences(zcu: *Zcu) void {
34633463}
34643464
34653465pub fn errorSetBits(zcu: *const Zcu) u16 {
3466 const target = zcu.getTarget();
3467
34663468 if (zcu.error_limit == 0) return 0;
3469 if (target.cpu.arch == .spirv64) {
3470 if (!std.Target.spirv.featureSetHas(target.cpu.features, .storage_push_constant16)) {
3471 return 32;
3472 }
3473 }
3474
34673475 return @as(u16, std.math.log2_int(ErrorInt, zcu.error_limit)) + 1;
34683476}
34693477
src/codegen/spirv.zig+36-22
......@@ -1018,7 +1018,7 @@ const NavGen = struct {
10181018 const comp_ty_id = try self.resolveType(ty, .direct);
10191019 return try self.constructComposite(comp_ty_id, constituents.items);
10201020 },
1021 .tuple_type => unreachable, // TODO
1021 .tuple_type => return self.todo("implement tuple types", .{}),
10221022 else => unreachable,
10231023 },
10241024 .un => |un| {
......@@ -1255,6 +1255,7 @@ const NavGen = struct {
12551255
12561256 fn ptrType(self: *NavGen, child_ty: Type, storage_class: StorageClass, child_repr: Repr) !IdRef {
12571257 const zcu = self.pt.zcu;
1258 const ip = &zcu.intern_pool;
12581259 const key = .{ child_ty.toIntern(), storage_class, child_repr };
12591260 const entry = try self.ptr_types.getOrPut(self.gpa, key);
12601261 if (entry.found_existing) {
......@@ -1285,7 +1286,12 @@ const NavGen = struct {
12851286 }
12861287 }
12871288
1288 try self.spv.decorate(result_id, .{ .ArrayStride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
1289 switch (ip.indexToKey(child_ty.toIntern())) {
1290 .func_type, .opaque_type => {},
1291 else => {
1292 try self.spv.decorate(result_id, .{ .ArrayStride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
1293 },
1294 }
12891295 }
12901296
12911297 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpTypePointer, .{
......@@ -1294,6 +1300,8 @@ const NavGen = struct {
12941300 .type = child_ty_id,
12951301 });
12961302
1303 self.ptr_types.getPtr(key).?.fwd_emitted = true;
1304
12971305 return result_id;
12981306 }
12991307
......@@ -1704,7 +1712,10 @@ const NavGen = struct {
17041712 return result_id;
17051713 },
17061714 .@"union" => return try self.resolveUnionType(ty),
1707 .error_set => return try self.resolveType(Type.u16, repr),
1715 .error_set => {
1716 const err_int_ty = try pt.errorIntType();
1717 return try self.resolveType(err_int_ty, repr);
1718 },
17081719 .error_union => {
17091720 const payload_ty = ty.errorUnionPayload(zcu);
17101721 const error_ty_id = try self.resolveType(Type.anyerror, .indirect);
......@@ -2329,7 +2340,7 @@ const NavGen = struct {
23292340 // NOTE: Vulkan's FMA instruction does *NOT* produce the right values!
23302341 // its precision guarantees do NOT match zigs and it does NOT match OpenCLs!
23312342 // it needs to be emulated!
2332 .vulkan, .opengl => unreachable, // TODO: See above
2343 .vulkan, .opengl => return self.todo("implement fma operation for {s} os", .{@tagName(target.os.tag)}),
23332344 else => unreachable,
23342345 };
23352346
......@@ -2529,12 +2540,12 @@ const NavGen = struct {
25292540 .vulkan, .opengl => switch (op) {
25302541 .i_abs => 5, // SAbs
25312542 .f_abs => 4, // FAbs
2532 .clz => unreachable, // TODO
2533 .ctz => unreachable, // TODO
25342543 .floor => 8, // Floor
25352544 .ceil => 9, // Ceil
25362545 .trunc => 3, // Trunc
25372546 .round => 1, // Round
2547 .clz,
2548 .ctz,
25382549 .sqrt,
25392550 .sin,
25402551 .cos,
......@@ -2544,7 +2555,7 @@ const NavGen = struct {
25442555 .log,
25452556 .log2,
25462557 .log10,
2547 => unreachable, // TODO
2558 => return self.todo("implement unary operation '{s}' for {s} os", .{ @tagName(op), @tagName(target.os.tag) }),
25482559 else => unreachable,
25492560 },
25502561 else => unreachable,
......@@ -2810,6 +2821,8 @@ const NavGen = struct {
28102821 /// TODO is to also write out the error as a function call parameter, and to somehow fetch
28112822 /// the name of an error in the text executor.
28122823 fn generateTestEntryPoint(self: *NavGen, name: []const u8, spv_test_decl_index: SpvModule.Decl.Index) !void {
2824 const target = self.spv.target;
2825
28132826 const anyerror_ty_id = try self.resolveType(Type.anyerror, .direct);
28142827 const ptr_anyerror_ty = try self.pt.ptrType(.{
28152828 .child = Type.anyerror.toIntern(),
......@@ -2819,12 +2832,12 @@ const NavGen = struct {
28192832
28202833 const spv_decl_index = try self.spv.allocDecl(.func);
28212834 const kernel_id = self.spv.declPtr(spv_decl_index).result_id;
2822 // for some reason we don't need to decorate the push constant here...
2823 try self.spv.declareDeclDeps(spv_decl_index, &.{spv_test_decl_index});
28242835
2825 const section = &self.spv.sections.functions;
2836 var decl_deps = std.ArrayList(SpvModule.Decl.Index).init(self.gpa);
2837 defer decl_deps.deinit();
2838 try decl_deps.append(spv_test_decl_index);
28262839
2827 const target = self.spv.target;
2840 const section = &self.spv.sections.functions;
28282841
28292842 const p_error_id = self.spv.allocId();
28302843 switch (target.os.tag) {
......@@ -2904,6 +2917,7 @@ const NavGen = struct {
29042917
29052918 const spv_err_decl_index = self.object.error_push_constant.?.push_constant_ptr;
29062919 const push_constant_id = self.spv.declPtr(spv_err_decl_index).result_id;
2920 try decl_deps.append(spv_err_decl_index);
29072921
29082922 const zero_id = try self.constInt(Type.u32, 0);
29092923 // We cannot use OpInBoundsAccessChain to dereference cross-storage class, so we have to use
......@@ -2953,6 +2967,7 @@ const NavGen = struct {
29532967 else => unreachable,
29542968 };
29552969
2970 try self.spv.declareDeclDeps(spv_decl_index, decl_deps.items);
29562971 try self.spv.declareEntryPoint(spv_decl_index, test_name, execution_mode);
29572972 }
29582973
......@@ -3372,6 +3387,7 @@ const NavGen = struct {
33723387 .switch_br => return self.airSwitchBr(inst),
33733388 .unreach, .trap => return self.airUnreach(),
33743389
3390 .dbg_empty_stmt => return,
33753391 .dbg_stmt => return self.airDbgStmt(inst),
33763392 .dbg_inline_block => try self.airDbgInlineBlock(inst),
33773393 .dbg_var_ptr, .dbg_var_val, .dbg_arg_inline => return self.airDbgVar(inst),
......@@ -3651,6 +3667,7 @@ const NavGen = struct {
36513667 }
36523668
36533669 fn abs(self: *NavGen, result_ty: Type, value: Temporary) !Temporary {
3670 const zcu = self.pt.zcu;
36543671 const operand_info = self.arithmeticTypeInfo(value.ty);
36553672
36563673 switch (operand_info.class) {
......@@ -3658,11 +3675,9 @@ const NavGen = struct {
36583675 .integer, .strange_integer => {
36593676 const abs_value = try self.buildUnary(.i_abs, value);
36603677
3661 // TODO: We may need to bitcast the result to a uint
3662 // depending on the result type. Do that when
3663 // bitCast is implemented for vectors.
3664 // This is only relevant for Vulkan
3665 assert(self.spv.hasFeature(.kernel)); // TODO
3678 if (value.ty.intInfo(zcu).signedness == .signed and self.spv.hasFeature(.shader)) {
3679 return self.todo("perform bitcast after @abs", .{});
3680 }
36663681
36673682 return try self.normalize(abs_value, self.arithmeticTypeInfo(result_ty));
36683683 },
......@@ -3980,8 +3995,6 @@ const NavGen = struct {
39803995 .float, .bool => unreachable,
39813996 }
39823997
3983 assert(self.spv.hasFeature(.kernel)); // TODO
3984
39853998 const count = try self.buildUnary(op, operand);
39863999
39874000 // Result of OpenCL ctz/clz returns operand.ty, and we want result_ty.
......@@ -4307,7 +4320,8 @@ const NavGen = struct {
43074320 },
43084321 .error_set => {
43094322 assert(!is_vector);
4310 return try self.cmp(op, lhs.pun(Type.u16), rhs.pun(Type.u16));
4323 const err_int_ty = try pt.errorIntType();
4324 return try self.cmp(op, lhs.pun(err_int_ty), rhs.pun(err_int_ty));
43114325 },
43124326 .pointer => {
43134327 assert(!is_vector);
......@@ -4411,7 +4425,7 @@ const NavGen = struct {
44114425 else => unreachable,
44124426 };
44134427 },
4414 else => unreachable,
4428 else => |ty| return self.todo("implement cmp operation for '{s}' type", .{@tagName(ty)}),
44154429 }
44164430
44174431 const info = self.arithmeticTypeInfo(scalar_ty);
......@@ -5233,13 +5247,13 @@ const NavGen = struct {
52335247 return self.accessChain(result_ty_id, object_ptr, &.{field_index});
52345248 },
52355249 .@"struct" => switch (object_ty.containerLayout(zcu)) {
5236 .@"packed" => unreachable, // TODO
5250 .@"packed" => return self.todo("implement field access for packed structs", .{}),
52375251 else => {
52385252 return try self.accessChain(result_ty_id, object_ptr, &.{field_index});
52395253 },
52405254 },
52415255 .@"union" => switch (object_ty.containerLayout(zcu)) {
5242 .@"packed" => unreachable, // TODO
5256 .@"packed" => return self.todo("implement field access for packed unions", .{}),
52435257 else => {
52445258 const layout = self.unionLayout(object_ty);
52455259 if (!layout.has_payload) {
src/codegen/spirv/Module.zig+17-28
......@@ -21,19 +21,6 @@ const IdResultType = spec.IdResultType;
2121
2222const Section = @import("Section.zig");
2323
24/// Helper HashMap type to hash deeply
25fn DeepHashMap(K: type, V: type) type {
26 return std.HashMapUnmanaged(K, V, struct {
27 pub fn hash(ctx: @This(), key: K) u64 {
28 _ = ctx;
29 var hasher = Wyhash.init(0);
30 autoHashStrat(&hasher, key, .Deep);
31 return hasher.final();
32 }
33 pub const eql = std.hash_map.getAutoEqlFn(K, @This());
34 }, std.hash_map.default_max_load_percentage);
35}
36
3724/// This structure represents a function that isc in-progress of being emitted.
3825/// Commonly, the contents of this structure will be merged with the appropriate
3926/// sections of the module and re-used. Note that the SPIR-V module system makes
......@@ -181,7 +168,6 @@ cache: struct {
181168 // same ID as @Vector(X, bool) in indirect representation.
182169 vector_types: std.AutoHashMapUnmanaged(struct { IdRef, u32 }, IdRef) = .empty,
183170 array_types: std.AutoHashMapUnmanaged(struct { IdRef, IdRef }, IdRef) = .empty,
184 function_types: DeepHashMap(struct { IdRef, []const IdRef }, IdRef) = .empty,
185171
186172 capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty,
187173 extensions: std.StringHashMapUnmanaged(void) = .empty,
......@@ -241,7 +227,6 @@ pub fn deinit(self: *Module) void {
241227 self.cache.float_types.deinit(self.gpa);
242228 self.cache.vector_types.deinit(self.gpa);
243229 self.cache.array_types.deinit(self.gpa);
244 self.cache.function_types.deinit(self.gpa);
245230 self.cache.capabilities.deinit(self.gpa);
246231 self.cache.extensions.deinit(self.gpa);
247232 self.cache.extended_instruction_set.deinit(self.gpa);
......@@ -345,22 +330,30 @@ pub fn finalize(self: *Module, a: Allocator) ![]Word {
345330 if (self.target.cpu.features.isEnabled(feature.index)) {
346331 const feature_tag: std.Target.spirv.Feature = @enumFromInt(feature.index);
347332 switch (feature_tag) {
333 // Versions
348334 .v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {},
335 // Features with no dependencies
349336 .int8 => try self.addCapability(.Int8),
350337 .int16 => try self.addCapability(.Int16),
351338 .int64 => try self.addCapability(.Int64),
352339 .float16 => try self.addCapability(.Float16),
353340 .float64 => try self.addCapability(.Float64),
341 .matrix => try self.addCapability(.Matrix),
342 .storage_push_constant16 => {
343 try self.addExtension("SPV_KHR_16bit_storage");
344 try self.addCapability(.StoragePushConstant16);
345 },
354346 .addresses => if (self.hasFeature(.shader)) {
355 try self.addCapability(.PhysicalStorageBufferAddresses);
356347 try self.addExtension("SPV_KHR_physical_storage_buffer");
348 try self.addCapability(.PhysicalStorageBufferAddresses);
357349 } else {
358350 try self.addCapability(.Addresses);
359351 },
360 .matrix => try self.addCapability(.Matrix),
352 // Kernel
361353 .kernel => try self.addCapability(.Kernel),
362354 .generic_pointer => try self.addCapability(.GenericPointer),
363355 .vector16 => try self.addCapability(.Vector16),
356 // Shader
364357 .shader => try self.addCapability(.Shader),
365358 }
366359 }
......@@ -608,17 +601,13 @@ pub fn arrayType(self: *Module, len_id: IdRef, child_ty_id: IdRef) !IdRef {
608601}
609602
610603pub fn functionType(self: *Module, return_ty_id: IdRef, param_type_ids: []const IdRef) !IdRef {
611 const entry = try self.cache.function_types.getOrPut(self.gpa, .{ return_ty_id, param_type_ids });
612 if (!entry.found_existing) {
613 const result_id = self.allocId();
614 entry.value_ptr.* = result_id;
615 try self.sections.types_globals_constants.emit(self.gpa, .OpTypeFunction, .{
616 .id_result = result_id,
617 .return_type = return_ty_id,
618 .id_ref_2 = param_type_ids,
619 });
620 }
621 return entry.value_ptr.*;
604 const result_id = self.allocId();
605 try self.sections.types_globals_constants.emit(self.gpa, .OpTypeFunction, .{
606 .id_result = result_id,
607 .return_type = return_ty_id,
608 .id_ref_2 = param_type_ids,
609 });
610 return result_id;
622611}
623612
624613pub fn constBool(self: *Module, value: bool) !IdRef {
src/link/SpirV/prune_unused.zig+2-1
......@@ -39,6 +39,7 @@ fn canPrune(op: Opcode) bool {
3939 .Arithmetic,
4040 .RelationalAndLogical,
4141 .Bit,
42 .Annotation,
4243 => true,
4344 else => switch (op) {
4445 .OpFunction,
......@@ -273,7 +274,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
273274 .alive = try std.DynamicBitSetUnmanaged.initEmpty(a, info.result_id_to_code_offset.count()),
274275 };
275276
276 // Mark initial stuff as slive
277 // Mark initial stuff as alive
277278 {
278279 var it = binary.iterateInstructions();
279280 while (it.next()) |inst| {
test/behavior.zig+3-3
......@@ -112,11 +112,11 @@ test {
112112
113113 _ = @import("behavior/x86_64.zig");
114114
115 if (builtin.cpu.arch == .wasm32) {
115 if (builtin.zig_backend != .stage2_spirv64 and builtin.cpu.arch == .wasm32) {
116116 _ = @import("behavior/wasm.zig");
117117 }
118118
119 if (builtin.os.tag != .wasi) {
119 if (builtin.zig_backend != .stage2_spirv64 and builtin.os.tag != .wasi) {
120120 _ = @import("behavior/asm.zig");
121121 }
122122
......@@ -127,7 +127,7 @@ test {
127127 _ = @import("behavior/export_keyword.zig");
128128 }
129129
130 if (!builtin.cpu.arch.isWasm()) {
130 if (builtin.zig_backend != .stage2_spirv64 and !builtin.cpu.arch.isWasm()) {
131131 // Due to lack of import/export of global support
132132 // (https://github.com/ziglang/zig/issues/4866), these tests correctly
133133 // cause linker errors, since a data symbol cannot be exported when
test/behavior/abs.zig+3
......@@ -7,6 +7,7 @@ test "@abs integers" {
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 try comptime testAbsIntegers();
1213 try testAbsIntegers();
......@@ -215,6 +216,7 @@ test "@abs int vectors" {
215216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217218 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
218220
219221 try comptime testAbsIntVectors(1);
220222 try testAbsIntVectors(1);
......@@ -281,6 +283,7 @@ test "@abs unsigned int vectors" {
281283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
282284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283285 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
284287
285288 try comptime testAbsUnsignedIntVectors(1);
286289 try testAbsUnsignedIntVectors(1);
test/behavior/addrspace_and_linksection.zig+2
......@@ -79,6 +79,8 @@ test "addrspace and linksection on container-level var" {
7979}
8080
8181test "addrspace on fn" {
82 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
83
8284 const S = struct {
8385 fn f() addrspace(.generic) u32 {
8486 return 123;
test/behavior/align.zig+11
......@@ -52,6 +52,8 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {
5252}
5353
5454test "@alignCast pointers" {
55 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
5557 var x: u32 align(4) = 1;
5658 expectsOnly1(&x);
5759 try expect(x == 2);
......@@ -199,6 +201,7 @@ test "alignment and size of structs with 128-bit fields" {
199201test "implicitly decreasing slice alignment" {
200202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
201203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
202205
203206 const a: u32 align(4) = 3;
204207 const b: u32 align(8) = 4;
......@@ -211,6 +214,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
211214test "specifying alignment allows pointer cast" {
212215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
213216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
214218
215219 try testBytesAlign(0x33);
216220}
......@@ -276,6 +280,7 @@ test "function alignment" {
276280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279284
280285 // function alignment is a compile error on wasm
281286 if (native_arch.isWasm()) return error.SkipZigTest;
......@@ -349,6 +354,7 @@ fn simple4() align(4) i32 {
349354
350355test "runtime-known array index has best alignment possible" {
351356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
352358
353359 // take full advantage of over-alignment
354360 var array align(4) = [_]u8{ 1, 2, 3, 4 };
......@@ -485,6 +491,7 @@ test "align(N) on functions" {
485491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
486492 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
487493 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
494 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
488495
489496 if (builtin.zig_backend == .stage2_c) {
490497 // https://github.com/ziglang/zig/issues/16845
......@@ -525,6 +532,7 @@ test "comptime alloc alignment" {
525532test "@alignCast null" {
526533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
527534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
535 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
528536
529537 var ptr: ?*anyopaque = null;
530538 _ = &ptr;
......@@ -541,6 +549,7 @@ test "sub-aligned pointer field access" {
541549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
542550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
543551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
552 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
544553
545554 // Originally reported at https://github.com/ziglang/zig/issues/14904
546555
......@@ -615,6 +624,8 @@ test "zero-bit fields in extern struct pad fields appropriately" {
615624}
616625
617626test "function pointer @intFromPtr/@ptrFromInt roundtrip" {
627 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
628
618629 // This only succeeds on Thumb if we handle the Thumb bit correctly; if not, the `@ptrFromInt`
619630 // will incorrectly trip an alignment safety check.
620631
test/behavior/alignof.zig+2
......@@ -29,6 +29,8 @@ test "comparison of @alignOf(T) against zero" {
2929}
3030
3131test "correct alignment for elements and slices of aligned array" {
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
33
3234 var buf: [1024]u8 align(64) = undefined;
3335 var start: usize = 1;
3436 var end: usize = undefined;
test/behavior/array.zig+40
......@@ -49,6 +49,7 @@ fn getArrayLen(a: []const u32) usize {
4949test "array concat with undefined" {
5050 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5253
5354 const S = struct {
5455 fn doTheTest() !void {
......@@ -70,6 +71,7 @@ test "array concat with undefined" {
7071}
7172
7273test "array concat with tuple" {
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7577 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -86,6 +88,7 @@ test "array concat with tuple" {
8688}
8789
8890test "array init with concat" {
91 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9093
9194 const a = 'a';
......@@ -94,6 +97,7 @@ test "array init with concat" {
9497}
9598
9699test "array init with mult" {
100 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
97101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99103
......@@ -157,6 +161,7 @@ test "array len field" {
157161}
158162
159163test "array with sentinels" {
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
161166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162167
......@@ -194,6 +199,7 @@ test "void arrays" {
194199}
195200
196201test "nested arrays of strings" {
202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
197203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
198204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
199205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -239,6 +245,7 @@ fn plusOne(x: u32) u32 {
239245test "single-item pointer to array indexing and slicing" {
240246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
241247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
242249
243250 try testSingleItemPtrArrayIndexSlice();
244251 try comptime testSingleItemPtrArrayIndexSlice();
......@@ -300,6 +307,7 @@ var s_array: [8]Sub = undefined;
300307const Sub = struct { b: u8 };
301308const Str = struct { a: []Sub };
302309test "set global var array via slice embedded in struct" {
310 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
303311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
304312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305313
......@@ -336,6 +344,7 @@ test "read/write through global variable array of struct fields initialized via
336344}
337345
338346test "implicit cast single-item pointer" {
347 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
339348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
340349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
341350
......@@ -366,6 +375,7 @@ test "comptime evaluating function that takes array by value" {
366375}
367376
368377test "runtime initialize array elem and then implicit cast to slice" {
378 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
369379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
370380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371381
......@@ -376,6 +386,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
376386}
377387
378388test "array literal as argument to function" {
389 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
379390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
380391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
381392
......@@ -403,6 +414,7 @@ test "array literal as argument to function" {
403414}
404415
405416test "double nested array to const slice cast in array literal" {
417 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
406418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
407419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
408420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -527,6 +539,7 @@ test "type deduction for array subscript expression" {
527539}
528540
529541test "sentinel element count towards the ABI size calculation" {
542 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
530543 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
531544 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
532545 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -574,6 +587,7 @@ test "zero-sized array with recursive type definition" {
574587}
575588
576589test "type coercion of anon struct literal to array" {
590 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
577591 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
578592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579593 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -626,6 +640,7 @@ test "tuple to array handles sentinel" {
626640}
627641
628642test "array init of container level array variable" {
643 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
629644 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
630645 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
631646 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -649,6 +664,8 @@ test "array init of container level array variable" {
649664}
650665
651666test "runtime initialized sentinel-terminated array literal" {
667 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
668
652669 var c: u16 = 300;
653670 _ = &c;
654671 const f = &[_:0x9999]u16{c};
......@@ -735,6 +752,8 @@ test "array init with no result pointer sets field result types" {
735752}
736753
737754test "runtime side-effects in comptime-known array init" {
755 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
756
738757 var side_effects: u4 = 0;
739758 const init = [4]u4{
740759 blk: {
......@@ -759,6 +778,8 @@ test "runtime side-effects in comptime-known array init" {
759778}
760779
761780test "slice initialized through reference to anonymous array init provides result types" {
781 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
782
762783 var my_u32: u32 = 123;
763784 var my_u64: u64 = 456;
764785 _ = .{ &my_u32, &my_u64 };
......@@ -772,6 +793,8 @@ test "slice initialized through reference to anonymous array init provides resul
772793}
773794
774795test "sentinel-terminated slice initialized through reference to anonymous array init provides result types" {
796 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
797
775798 var my_u32: u32 = 123;
776799 var my_u64: u64 = 456;
777800 _ = .{ &my_u32, &my_u64 };
......@@ -785,6 +808,7 @@ test "sentinel-terminated slice initialized through reference to anonymous array
785808}
786809
787810test "many-item pointer initialized through reference to anonymous array init provides result types" {
811 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
788812 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
789813
790814 var my_u32: u32 = 123;
......@@ -803,6 +827,7 @@ test "many-item pointer initialized through reference to anonymous array init pr
803827}
804828
805829test "many-item sentinel-terminated pointer initialized through reference to anonymous array init provides result types" {
830 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
806831 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
807832
808833 var my_u32: u32 = 123;
......@@ -822,6 +847,8 @@ test "many-item sentinel-terminated pointer initialized through reference to ano
822847}
823848
824849test "pointer to array initialized through reference to anonymous array init provides result types" {
850 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
851
825852 var my_u32: u32 = 123;
826853 var my_u64: u64 = 456;
827854 _ = .{ &my_u32, &my_u64 };
......@@ -835,6 +862,8 @@ test "pointer to array initialized through reference to anonymous array init pro
835862}
836863
837864test "pointer to sentinel-terminated array initialized through reference to anonymous array init provides result types" {
865 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
866
838867 var my_u32: u32 = 123;
839868 var my_u64: u64 = 456;
840869 _ = .{ &my_u32, &my_u64 };
......@@ -848,6 +877,8 @@ test "pointer to sentinel-terminated array initialized through reference to anon
848877}
849878
850879test "tuple initialized through reference to anonymous array init provides result types" {
880 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
881
851882 const Tuple = struct { u64, *const u32 };
852883 const foo: *const Tuple = &.{
853884 @intCast(12345),
......@@ -873,6 +904,7 @@ test "copied array element doesn't alias source" {
873904
874905test "array initialized with string literal" {
875906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
907 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
876908
877909 const S = struct {
878910 a: u32,
......@@ -892,6 +924,7 @@ test "array initialized with string literal" {
892924}
893925
894926test "array initialized with array with sentinel" {
927 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
895928 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
896929
897930 const S = struct {
......@@ -940,6 +973,7 @@ test "accessing multidimensional global array at comptime" {
940973 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
941974 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
942975 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
976 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
943977
944978 const S = struct {
945979 const array = [_][]const []const u8{
......@@ -953,6 +987,7 @@ test "accessing multidimensional global array at comptime" {
953987}
954988
955989test "union that needs padding bytes inside an array" {
990 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
956991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
957992 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
958993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -992,6 +1027,7 @@ test "@splat array" {
9921027 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9931028 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9941029 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1030
9951031 const S = struct {
9961032 fn doTheTest(comptime T: type, x: T) !void {
9971033 const arr: [10]T = @splat(x);
......@@ -1010,10 +1046,12 @@ test "@splat array" {
10101046}
10111047
10121048test "@splat array with sentinel" {
1049 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10131050 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10141051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10151052 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10161053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054
10171055 const S = struct {
10181056 fn doTheTest(comptime T: type, x: T, comptime s: T) !void {
10191057 const arr: [10:s]T = @splat(x);
......@@ -1033,10 +1071,12 @@ test "@splat array with sentinel" {
10331071}
10341072
10351073test "@splat zero-length array" {
1074 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10361075 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10371076 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10381077 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10391078 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1079
10401080 const S = struct {
10411081 fn doTheTest(comptime T: type, comptime s: T) !void {
10421082 var runtime_undef: T = undefined;
test/behavior/atomics.zig+2
......@@ -107,6 +107,7 @@ test "cmpxchg with ignored result" {
107107}
108108
109109test "128-bit cmpxchg" {
110 // TODO: this must appear first
110111 if (!supports_128_bit_atomics) return error.SkipZigTest;
111112
112113 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
......@@ -284,6 +285,7 @@ fn testAtomicRmwInt(comptime signedness: std.builtin.Signedness, comptime N: usi
284285}
285286
286287test "atomicrmw with 128-bit ints" {
288 // TODO: this must appear first
287289 if (!supports_128_bit_atomics) return error.SkipZigTest;
288290
289291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/basic.zig+33
......@@ -24,6 +24,7 @@ fn testTruncate(x: u32) u8 {
2424}
2525
2626test "truncate to non-power-of-two integers" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2829
2930 try testTrunc(u32, u1, 0b10101, 0b1);
......@@ -208,12 +209,14 @@ fn first4KeysOfHomeRow() []const u8 {
208209}
209210
210211test "return string from function" {
212 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
211213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212214
213215 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
214216}
215217
216218test "hex escape" {
219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
217220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218221
219222 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
......@@ -221,6 +224,7 @@ test "hex escape" {
221224
222225test "multiline string" {
223226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
224228
225229 const s1 =
226230 \\one
......@@ -233,6 +237,7 @@ test "multiline string" {
233237
234238test "multiline string comments at start" {
235239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
240 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
236241
237242 const s1 =
238243 //\\one
......@@ -245,6 +250,7 @@ test "multiline string comments at start" {
245250
246251test "multiline string comments at end" {
247252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
253 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
248254
249255 const s1 =
250256 \\one
......@@ -257,6 +263,7 @@ test "multiline string comments at end" {
257263
258264test "multiline string comments in middle" {
259265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
260267
261268 const s1 =
262269 \\one
......@@ -269,6 +276,7 @@ test "multiline string comments in middle" {
269276
270277test "multiline string comments at multiple places" {
271278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
272280
273281 const s1 =
274282 \\one
......@@ -282,11 +290,14 @@ test "multiline string comments at multiple places" {
282290}
283291
284292test "string concatenation simple" {
293 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
294
285295 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
286296}
287297
288298test "array mult operator" {
289299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
290301
291302 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
292303}
......@@ -308,6 +319,8 @@ const global_a: i32 = 1234;
308319const global_b: *const i32 = &global_a;
309320const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));
310321test "compile time global reinterpret" {
322 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
323
311324 const d = @as(*const i32, @ptrCast(global_c));
312325 try expect(d.* == 1234);
313326}
......@@ -435,6 +448,8 @@ fn f2(x: bool) []const u8 {
435448}
436449
437450test "variable is allowed to be a pointer to an opaque type" {
451 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
452
438453 var x: i32 = 1234;
439454 _ = hereIsAnOpaqueType(@as(*OpaqueA, @ptrCast(&x)));
440455}
......@@ -457,6 +472,8 @@ fn testTakeAddressOfParameter(f: f32) !void {
457472}
458473
459474test "pointer to void return type" {
475 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
476
460477 try testPointerToVoidReturnType();
461478}
462479fn testPointerToVoidReturnType() anyerror!void {
......@@ -472,6 +489,7 @@ test "array 2D const double ptr" {
472489 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
473490 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
474491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
492 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
475493
476494 const rect_2d_vertexes = [_][1]f32{
477495 [_]f32{1.0},
......@@ -484,6 +502,7 @@ test "array 2D const double ptr with offset" {
484502 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
485503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
486504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
505 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
487506
488507 const rect_2d_vertexes = [_][2]f32{
489508 [_]f32{ 3.0, 4.239 },
......@@ -496,6 +515,7 @@ test "array 3D const double ptr with offset" {
496515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
497516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
498517 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
518 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
499519
500520 const rect_3d_vertexes = [_][2][2]f32{
501521 [_][2]f32{
......@@ -551,6 +571,8 @@ fn testStructInFn() !void {
551571
552572test "fn call returning scalar optional in equality expression" {
553573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
575
554576 try expect(getNull() == null);
555577}
556578
......@@ -561,6 +583,7 @@ fn getNull() ?*i32 {
561583test "global variable assignment with optional unwrapping with var initialized to undefined" {
562584 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
563585 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
586 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
564587
565588 const S = struct {
566589 var data: i32 = 1234;
......@@ -676,6 +699,7 @@ test "self reference through fn ptr field" {
676699
677700test "global variable initialized to global variable array element" {
678701 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
702 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
679703
680704 try expect(global_ptr == &gdt[0]);
681705}
......@@ -708,6 +732,7 @@ test "global constant is loaded with a runtime-known index" {
708732
709733test "multiline string literal is null terminated" {
710734 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
735 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
711736
712737 const s1 =
713738 \\one
......@@ -722,6 +747,7 @@ test "string escapes" {
722747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
723748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
724749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
750 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
725751
726752 try expectEqualStrings("\"", "\x22");
727753 try expectEqualStrings("\'", "\x27");
......@@ -739,6 +765,8 @@ test "explicit cast optional pointers" {
739765}
740766
741767test "pointer comparison" {
768 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
769
742770 const a = @as([]const u8, "a");
743771 const b = &a;
744772 try expect(ptrEql(b, b));
......@@ -789,6 +817,7 @@ fn maybe(x: bool) anyerror!?u32 {
789817test "auto created variables have correct alignment" {
790818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
791819 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
820 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
792821
793822 const S = struct {
794823 fn foo(str: [*]const u8) u32 {
......@@ -1152,6 +1181,8 @@ test "orelse coercion as function argument" {
11521181}
11531182
11541183test "runtime-known globals initialized with undefined" {
1184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1185
11551186 const S = struct {
11561187 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
11571188 var vp: [*]u32 = undefined;
......@@ -1244,6 +1275,8 @@ fn testUnsignedCmp(comptime T: type) !void {
12441275}
12451276
12461277test "integer compare <= 64 bits" {
1278 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1279
12471280 inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {
12481281 try testUnsignedCmp(T);
12491282 try comptime testUnsignedCmp(T);
test/behavior/bitcast.zig+4-2
......@@ -23,8 +23,8 @@ test "@bitCast iX -> uX (8, 16, 128)" {
2323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2726 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2828
2929 const bit_values = [_]usize{ 8, 16, 128 };
3030
......@@ -153,6 +153,8 @@ test "bitcast literal [4]u8 param to u32" {
153153}
154154
155155test "bitcast generates a temporary value" {
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157
156158 var y: u16 = 0x55AA;
157159 _ = &y;
158160 const x: u16 = @bitCast(@as([2]u8, @bitCast(y)));
......@@ -190,6 +192,7 @@ test "@bitCast packed structs at runtime and comptime" {
190192test "@bitCast extern structs at runtime and comptime" {
191193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
193196
194197 const Full = extern struct {
195198 number: u16,
......@@ -383,7 +386,6 @@ test "comptime bitcast with fields following f80" {
383386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
384387 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
385388 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387389 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
388390
389391 const FloatT = extern struct { f: f80, x: u128 align(16) };
test/behavior/bool.zig+1
......@@ -10,6 +10,7 @@ test "bool literals" {
1010
1111test "cast bool to int" {
1212 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1314
1415 const t = true;
1516 const f = false;
test/behavior/call.zig+5
......@@ -344,6 +344,7 @@ test "inline call preserves tail call" {
344344test "inline call doesn't re-evaluate non generic struct" {
345345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
346346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
347348
348349 const S = struct {
349350 fn foo(f: struct { a: u8, b: u8 }) !void {
......@@ -497,6 +498,8 @@ test "argument to generic function has correct result type" {
497498}
498499
499500test "call inline fn through pointer" {
501 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
502
500503 const S = struct {
501504 inline fn foo(x: u8) !void {
502505 try expect(x == 123);
......@@ -644,6 +647,8 @@ test "function call with cast to anyopaque pointer" {
644647 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
645648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
646649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
650 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
651
647652 const Foo = struct {
648653 y: u8,
649654 var foo: @This() = undefined;
test/behavior/cast.zig+85-10
......@@ -161,6 +161,7 @@ test "@intFromFloat" {
161161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162162 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
163163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
164165
165166 try testIntFromFloats();
166167 try comptime testIntFromFloats();
......@@ -183,6 +184,7 @@ fn expectIntFromFloat(comptime F: type, f: F, comptime I: type, i: I) !void {
183184test "implicitly cast indirect pointer to maybe-indirect pointer" {
184185 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
185186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
186188
187189 const S = struct {
188190 const Self = @This();
......@@ -263,6 +265,7 @@ fn MakeType(comptime T: type) type {
263265test "implicit cast from *[N]T to [*c]T" {
264266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
265267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
266269
267270 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
268271 var y: [*c]u16 = &x;
......@@ -325,6 +328,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
325328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
326329 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327330 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
331 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
328332
329333 var array = [_]u8{ 'o', 'k' };
330334 const opt_array_ptr: ?[*]const u8 = &array;
......@@ -402,6 +406,7 @@ test "peer type unsigned int to signed" {
402406test "expected [*c]const u8, found [*:0]const u8" {
403407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404408 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
405410
406411 var a: [*:0]const u8 = "hello";
407412 _ = &a;
......@@ -430,6 +435,7 @@ test "peer resolve array and const slice" {
430435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
431436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
432437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
433439
434440 try testPeerResolveArrayConstSlice(true);
435441 try comptime testPeerResolveArrayConstSlice(true);
......@@ -487,6 +493,7 @@ test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
487493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
490497
491498 const S = struct {
492499 fn doTheTest() anyerror!void {
......@@ -518,6 +525,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
518525test "implicit cast from *const [N]T to []const T" {
519526 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
520527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
521529
522530 try testCastConstArrayRefToConstSlice();
523531 try comptime testCastConstArrayRefToConstSlice();
......@@ -543,6 +551,7 @@ fn testCastConstArrayRefToConstSlice() !void {
543551test "peer type resolution: error and [N]T" {
544552 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
545553 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
554 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
546555
547556 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
548557 comptime assert(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
......@@ -567,6 +576,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
567576test "single-item pointer of array to slice to unknown length pointer" {
568577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
569578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
570580
571581 try testCastPtrOfArrayToSliceAndPtr();
572582 try comptime testCastPtrOfArrayToSliceAndPtr();
......@@ -596,6 +606,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
596606test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
597607 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
598608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
599610
600611 const window_name = [1][*]const u8{"window name"};
601612 const x: [*]const ?[*]const u8 = &window_name;
......@@ -609,6 +620,7 @@ test "@intCast on vector" {
609620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
610621 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
611622 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
623 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
612624
613625 const S = struct {
614626 fn doTheTest() !void {
......@@ -696,6 +708,7 @@ test "peer type resolution: error set supersets" {
696708 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
697709 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
698710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
711 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
699712
700713 const a: error{ One, Two } = undefined;
701714 const b: error{One} = undefined;
......@@ -725,6 +738,7 @@ test "peer type resolution: disjoint error sets" {
725738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
726739 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
727740 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
741 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
728742
729743 const a: error{ One, Two } = undefined;
730744 const b: error{Three} = undefined;
......@@ -788,6 +802,7 @@ test "peer type resolution: error union after non-error" {
788802 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
789803 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
790804 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
805 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
791806
792807 const a: u32 = undefined;
793808 const b: error{ One, Two }!u32 = undefined;
......@@ -821,6 +836,7 @@ test "peer cast *[0]T to E![]const T" {
821836 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
822837 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
823838 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
839 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
824840
825841 var buffer: [5]u8 = "abcde".*;
826842 const buf: anyerror![]const u8 = buffer[0..];
......@@ -836,6 +852,7 @@ test "peer cast *[0]T to []const T" {
836852 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
837853 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
838854 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
855 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
839856
840857 var buffer: [5]u8 = "abcde".*;
841858 const buf: []const u8 = buffer[0..];
......@@ -859,6 +876,7 @@ test "peer resolution of string literals" {
859876 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
860877 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
861878 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
879 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
862880
863881 const S = struct {
864882 const E = enum { a, b, c, d };
......@@ -880,6 +898,7 @@ test "peer resolution of string literals" {
880898test "peer cast [:x]T to []T" {
881899 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
882900 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
901 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
883902
884903 const S = struct {
885904 fn doTheTest() !void {
......@@ -896,6 +915,7 @@ test "peer cast [:x]T to []T" {
896915test "peer cast [N:x]T to [N]T" {
897916 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
898917 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
918 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
899919
900920 const S = struct {
901921 fn doTheTest() !void {
......@@ -912,6 +932,7 @@ test "peer cast [N:x]T to [N]T" {
912932test "peer cast *[N:x]T to *[N]T" {
913933 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
914934 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
935 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
915936
916937 const S = struct {
917938 fn doTheTest() !void {
......@@ -928,6 +949,7 @@ test "peer cast [*:x]T to [*]T" {
928949 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
929950 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
930951 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
952 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
931953
932954 const S = struct {
933955 fn doTheTest() !void {
......@@ -948,6 +970,7 @@ test "peer cast [:x]T to [*:x]T" {
948970 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
949971 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
950972 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
973 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
951974
952975 const S = struct {
953976 fn doTheTest() !void {
......@@ -968,6 +991,7 @@ test "peer cast [:x]T to [*:x]T" {
968991test "peer type resolution implicit cast to return type" {
969992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
970993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
971995
972996 const S = struct {
973997 fn doTheTest() !void {
......@@ -988,6 +1012,7 @@ test "peer type resolution implicit cast to return type" {
9881012test "peer type resolution implicit cast to variable type" {
9891013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9901014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9911016
9921017 const S = struct {
9931018 fn doTheTest() !void {
......@@ -1013,6 +1038,7 @@ test "variable initialization uses result locations properly with regards to the
10131038test "cast between C pointer with different but compatible types" {
10141039 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10151040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1041 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10161042
10171043 const S = struct {
10181044 fn foo(arg: [*]c_ushort) u16 {
......@@ -1030,6 +1056,7 @@ test "cast between C pointer with different but compatible types" {
10301056test "peer type resolve string lit with sentinel-terminated mutable slice" {
10311057 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10321058 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1059 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10331060
10341061 var array: [4:0]u8 = undefined;
10351062 array[4] = 0; // TODO remove this when #4372 is solved
......@@ -1096,6 +1123,7 @@ test "implicit cast from [*]T to ?*anyopaque" {
10961123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10971124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10981125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10991127
11001128 var a = [_]u8{ 3, 2, 1 };
11011129 var runtime_zero: usize = 0;
......@@ -1112,6 +1140,8 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
11121140}
11131141
11141142test "compile time int to ptr of function" {
1143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1144
11151145 try foobar(FUNCTION_CONSTANT);
11161146}
11171147
......@@ -1158,6 +1188,7 @@ test "implicit ptr to *anyopaque" {
11581188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11591189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11601190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11611192
11621193 var a: u32 = 1;
11631194 const ptr: *align(@alignOf(u32)) anyopaque = &a;
......@@ -1171,6 +1202,7 @@ test "implicit ptr to *anyopaque" {
11711202test "return null from fn () anyerror!?&T" {
11721203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11731204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1205 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11741206
11751207 const a = returnNullFromOptionalTypeErrorRef();
11761208 const b = returnNullLitFromOptionalTypeErrorRef();
......@@ -1188,6 +1220,7 @@ test "peer type resolution: [0]u8 and []const u8" {
11881220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11891221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11901222 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1223 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11911224
11921225 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
11931226 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
......@@ -1208,6 +1241,7 @@ test "implicitly cast from [N]T to ?[]const T" {
12081241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12091242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12101243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1244 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12111245
12121246 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
12131247 comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));
......@@ -1245,6 +1279,7 @@ test "implicit cast from *[N]T to ?[*]T" {
12451279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12461280 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12471281 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1282 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12481283
12491284 var x: ?[*]u16 = null;
12501285 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
......@@ -1260,6 +1295,7 @@ test "implicit cast from *T to ?*anyopaque" {
12601295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12611296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12621297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1298 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12631299
12641300 var a: u8 = 1;
12651301 incrementVoidPtrValue(&a);
......@@ -1281,10 +1317,14 @@ test "implicit cast *[0]T to E![]const u8" {
12811317
12821318var global_array: [4]u8 = undefined;
12831319test "cast from array reference to fn: comptime fn ptr" {
1320 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1321
12841322 const f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
12851323 try expect(@intFromPtr(f) == @intFromPtr(&global_array));
12861324}
12871325test "cast from array reference to fn: runtime fn ptr" {
1326 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1327
12881328 var f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
12891329 _ = &f;
12901330 try expect(@intFromPtr(f) == @intFromPtr(&global_array));
......@@ -1294,6 +1334,7 @@ test "*const [N]null u8 to ?[]const u8" {
12941334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12951335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12961336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1337 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12971338
12981339 const S = struct {
12991340 fn doTheTest() !void {
......@@ -1330,6 +1371,7 @@ test "assignment to optional pointer result loc" {
13301371 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13311372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13321373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1374 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13331375
13341376 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
13351377 _ = &foo;
......@@ -1347,6 +1389,7 @@ test "cast between *[N]void and []void" {
13471389test "peer resolve arrays of different size to const slice" {
13481390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13491391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13501393
13511394 try expect(mem.eql(u8, boolToStr(true), "true"));
13521395 try expect(mem.eql(u8, boolToStr(false), "false"));
......@@ -1404,6 +1447,7 @@ test "peer type resolution: unreachable, null, slice" {
14041447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14051448 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14061449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1450 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14071451
14081452 const S = struct {
14091453 fn doTheTest(num: usize, word: []const u8) !void {
......@@ -1444,6 +1488,7 @@ test "cast compatible optional types" {
14441488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14451489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14461490 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1491 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14471492
14481493 var a: ?[:0]const u8 = null;
14491494 _ = &a;
......@@ -1530,16 +1575,16 @@ test "cast typed undefined to int" {
15301575 }
15311576}
15321577
1533test "implicit cast from [:0]T to [*c]T" {
1534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1578// test "implicit cast from [:0]T to [*c]T" {
1579// if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15351580
1536 var a: [:0]const u8 = "foo";
1537 _ = &a;
1538 const b: [*c]const u8 = a;
1539 const c = std.mem.span(b);
1540 try expect(c.len == a.len);
1541 try expect(c.ptr == a.ptr);
1542}
1581// var a: [:0]const u8 = "foo";
1582// _ = &a;
1583// const b: [*c]const u8 = a;
1584// const c = std.mem.span(b);
1585// try expect(c.len == a.len);
1586// try expect(c.ptr == a.ptr);
1587// }
15431588
15441589test "bitcast packed struct with u0" {
15451590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
......@@ -1555,6 +1600,7 @@ test "bitcast packed struct with u0" {
15551600
15561601test "optional pointer coerced to optional allowzero pointer" {
15571602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1603 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15581604
15591605 var p: ?*u32 = undefined;
15601606 var q: ?*allowzero u32 = undefined;
......@@ -1571,6 +1617,8 @@ test "optional slice coerced to allowzero many pointer" {
15711617}
15721618
15731619test "optional slice passed as parameter coerced to allowzero many pointer" {
1620 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1621
15741622 const ns = struct {
15751623 const Color = struct {
15761624 r: u8,
......@@ -1590,6 +1638,8 @@ test "optional slice passed as parameter coerced to allowzero many pointer" {
15901638}
15911639
15921640test "single item pointer to pointer to array to slice" {
1641 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1642
15931643 var x: i32 = 1234;
15941644 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
15951645 const z1 = @as([]const i32, @as(*[1]i32, &x));
......@@ -1598,6 +1648,7 @@ test "single item pointer to pointer to array to slice" {
15981648
15991649test "peer type resolution forms error union" {
16001650 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1651 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16011652
16021653 var foo: i32 = 123;
16031654 _ = &foo;
......@@ -1632,6 +1683,8 @@ test "@volatileCast without a result location" {
16321683}
16331684
16341685test "coercion from single-item pointer to @as to slice" {
1686 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1687
16351688 var x: u32 = 1;
16361689
16371690 // Why the following line gets a compile error?
......@@ -1644,6 +1697,7 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"
16441697 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16451698 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16461699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1700 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16471701
16481702 const S = struct {
16491703 fn doTheTest(comptime T: type, comptime s: T) !void {
......@@ -1696,6 +1750,7 @@ test "peer type resolution: same array type with sentinel" {
16961750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16971751 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16981752 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1753 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16991754
17001755 var a: [2:0]u32 = .{ 0, 1 };
17011756 var b: [2:0]u32 = .{ 2, 3 };
......@@ -1718,6 +1773,7 @@ test "peer type resolution: array with sentinel and array without sentinel" {
17181773 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17191774 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17201775 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1776 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17211777
17221778 var a: [2:0]u32 = .{ 0, 1 };
17231779 var b: [2]u32 = .{ 2, 3 };
......@@ -1740,6 +1796,7 @@ test "peer type resolution: array and vector with same child type" {
17401796 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17411797 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17421798 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1799 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17431800
17441801 var arr: [2]u32 = .{ 0, 1 };
17451802 var vec: @Vector(2, u32) = .{ 2, 3 };
......@@ -1786,6 +1843,7 @@ test "peer type resolution: error union and optional of same type" {
17861843 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17871844 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17881845 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1846 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17891847
17901848 const E = error{Foo};
17911849 var a: E!*u8 = error.Foo;
......@@ -1809,6 +1867,7 @@ test "peer type resolution: C pointer and @TypeOf(null)" {
18091867 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18101868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18111869 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1870 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18121871
18131872 var a: [*c]c_int = 0x1000;
18141873 _ = &a;
......@@ -1831,6 +1890,7 @@ test "peer type resolution: three-way resolution combines error set and optional
18311890 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18321891 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18331892 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1893 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18341894
18351895 const E = error{Foo};
18361896 var a: E = error.Foo;
......@@ -1919,6 +1979,7 @@ test "peer type resolution: array and tuple" {
19191979 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19201980 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
19211981 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1982 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19221983
19231984 var arr: [3]i32 = .{ 1, 2, 3 };
19241985 _ = &arr;
......@@ -1967,6 +2028,7 @@ test "peer type resolution: vector and array and tuple" {
19672028 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
19682029 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19692030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2031 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19702032
19712033 var vec: @Vector(2, i8) = .{ 10, 20 };
19722034 var arr: [2]i8 = .{ 30, 40 };
......@@ -2009,6 +2071,7 @@ test "peer type resolution: empty tuple pointer and slice" {
20092071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20102072 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20112073 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2074 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20122075
20132076 var a: [:0]const u8 = "Hello";
20142077 var b = &.{};
......@@ -2030,6 +2093,7 @@ test "peer type resolution: tuple pointer and slice" {
20302093 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20312094 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20322095 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2096 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20332097
20342098 var a: [:0]const u8 = "Hello";
20352099 var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };
......@@ -2074,7 +2138,7 @@ test "peer type resolution: many compatible pointers" {
20742138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20752139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20762140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2077 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
2141 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20782142
20792143 var buf = "foo-3".*;
20802144
......@@ -2173,6 +2237,7 @@ test "peer type resolution: C pointer and many pointer" {
21732237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21742238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21752239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2240 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
21762241
21772242 var buf = "hello".*;
21782243
......@@ -2196,6 +2261,7 @@ test "peer type resolution: pointer attributes are combined correctly" {
21962261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21972262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21982263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
21992265
22002266 var buf_a align(4) = "foo".*;
22012267 var buf_b align(4) = "bar".*;
......@@ -2277,6 +2343,7 @@ test "peer type resolution: arrays of compatible types" {
22772343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22782344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22792345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2346 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22802347
22812348 var e0: u8 = 3;
22822349 var e1: u8 = 2;
......@@ -2294,6 +2361,7 @@ test "cast builtins can wrap result in optional" {
22942361 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22952362 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22962363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2364 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22972365
22982366 const S = struct {
22992367 const MyEnum = enum(u32) { _ };
......@@ -2369,6 +2437,7 @@ test "cast builtins can wrap result in error union and optional" {
23692437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23702438 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23712439 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2440 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
23722441
23732442 const S = struct {
23742443 const MyEnum = enum(u32) { _ };
......@@ -2452,6 +2521,7 @@ test "@ptrFromInt on vector" {
24522521 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24532522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24542523 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
2524 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
24552525
24562526 const S = struct {
24572527 fn doTheTest() !void {
......@@ -2476,6 +2546,7 @@ test "@intFromPtr on vector" {
24762546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24772547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24782548 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2549 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
24792550
24802551 const S = struct {
24812552 fn doTheTest() !void {
......@@ -2597,6 +2668,7 @@ test "result information is preserved through many nested structures" {
25972668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25982669 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25992670 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2671 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26002672
26012673 const S = struct {
26022674 fn doTheTest() !void {
......@@ -2624,6 +2696,7 @@ test "@intCast vector of signed integer" {
26242696 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26252697 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
26262698 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2699 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26272700
26282701 var x: @Vector(4, i32) = .{ 1, 2, 3, 4 };
26292702 _ = &x;
......@@ -2654,6 +2727,8 @@ test "bitcast vector" {
26542727}
26552728
26562729test "peer type resolution: slice of sentinel-terminated array" {
2730 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2731
26572732 var f: bool = undefined;
26582733 f = false;
26592734
test/behavior/cast_int.zig+4-1
......@@ -22,6 +22,7 @@ test "coerce i8 to i32 and @intCast back" {
2222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2526
2627 var x: i8 = -5;
2728 var y: i32 = -5;
......@@ -35,6 +36,8 @@ test "coerce i8 to i32 and @intCast back" {
3536}
3637
3738test "coerce non byte-sized integers accross 32bits boundary" {
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
3841 {
3942 var v: u21 = 6417;
4043 _ = &v;
......@@ -179,8 +182,8 @@ test "load non byte-sized optional value" {
179182}
180183
181184test "load non byte-sized value in struct" {
182 if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
183185 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
186 if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
184187
185188 // note: this bug is triggered by the == operator, expectEqual will hide it
186189 // using ptrCast not to depend on unitialised memory state
test/behavior/const_slice_child.zig+1
......@@ -11,6 +11,7 @@ test "const slice child" {
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 const strs = [_][*]const u8{ "one", "two", "three" };
1617 argv = &strs;
test/behavior/decl_literals.zig+5-4
......@@ -33,10 +33,11 @@ test "decl literal with pointer" {
3333}
3434
3535test "call decl literal with optional" {
36 if (builtin.zig_backend == .stage2_sparc64 or
37 builtin.zig_backend == .stage2_arm or
38 builtin.zig_backend == .stage2_aarch64 or
39 builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
4041 const S = struct {
4142 x: u32,
4243 fn init() ?@This() {
test/behavior/defer.zig+1
......@@ -160,6 +160,7 @@ test "reference to errdefer payload" {
160160test "simple else prong doesn't emit an error for unreachable else prong" {
161161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
163164
164165 const S = struct {
165166 fn foo() error{Foo}!void {
test/behavior/destructure.zig+2
......@@ -94,6 +94,8 @@ test "destructure from labeled block" {
9494}
9595
9696test "destructure tuple value" {
97 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
98
9799 const tup: struct { f32, u32, i64 } = .{ 10.0, 20, 30 };
98100 const x, const y, const z = tup;
99101
test/behavior/enum.zig+4
......@@ -945,6 +945,7 @@ test "constant enum initialization with differing sizes" {
945945 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
946946 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
947947 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
948 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
948949
949950 try test3_1(test3_foo);
950951 try test3_2(test3_bar);
......@@ -1047,6 +1048,7 @@ test "tag name with assigned enum values" {
10471048test "@tagName on enum literals" {
10481049 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10491050 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1051 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10501052
10511053 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
10521054 comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));
......@@ -1236,6 +1238,8 @@ test "enum tag from a local variable" {
12361238}
12371239
12381240test "auto-numbered enum with signed tag type" {
1241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1242
12391243 const E = enum(i32) { a, b };
12401244
12411245 try std.testing.expectEqual(@as(i32, 0), @intFromEnum(E.a));
test/behavior/error.zig+2
......@@ -124,6 +124,7 @@ test "debug info for optional error set" {
124124
125125test "implicit cast to optional to error union to return result loc" {
126126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127128
128129 const S = struct {
129130 fn entry() !void {
......@@ -150,6 +151,7 @@ test "fn returning empty error set can be passed as fn returning any error" {
150151
151152test "fn returning empty error set can be passed as fn returning any error - pointer" {
152153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
154
153155 entryPtr();
154156 comptime entryPtr();
155157}
test/behavior/eval.zig+20
......@@ -143,6 +143,7 @@ test "a type constructed in a global expression" {
143143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
144144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
146147
147148 var l: List = undefined;
148149 l.array[0] = 10;
......@@ -445,6 +446,7 @@ test "binary math operator in partially inlined function" {
445446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
446447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
447448 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
449 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
448450
449451 var s: [4]u32 = undefined;
450452 var b: [16]u8 = undefined;
......@@ -503,6 +505,7 @@ test "comptime shlWithOverflow" {
503505test "const ptr to variable data changes at runtime" {
504506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
505507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
506509
507510 try expect(foo_ref.name[0] == 'a');
508511 foo_ref.name = "b";
......@@ -536,6 +539,7 @@ test "runtime 128 bit integer division" {
536539test "@tagName of @typeInfo" {
537540 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
538541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
542 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
539543
540544 const str = @tagName(@typeInfo(u8));
541545 try expect(std.mem.eql(u8, str, "int"));
......@@ -613,6 +617,7 @@ const hi1 = "hi";
613617const hi2 = hi1;
614618test "const global shares pointer with other same one" {
615619 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
620 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
616621
617622 try assertEqualPtrs(&hi1[0], &hi2[0]);
618623 comptime assert(&hi1[0] == &hi2[0]);
......@@ -739,6 +744,7 @@ test "array concatenation of function calls" {
739744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
740745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
741746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
747 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
742748
743749 var a = oneItem(3) ++ oneItem(4);
744750 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
......@@ -748,6 +754,7 @@ test "array multiplication of function calls" {
748754 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
749755 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
750756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
751758
752759 var a = oneItem(3) ** scalar(2);
753760 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
......@@ -782,6 +789,7 @@ test "array concatenation peer resolves element types - pointer" {
782789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
783790 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
784791 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
792 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
785793
786794 var a = [2]u3{ 1, 7 };
787795 var b = [3]u8{ 200, 225, 255 };
......@@ -799,6 +807,7 @@ test "array concatenation sets the sentinel - value" {
799807 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
800808 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
801809 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
810 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
802811
803812 var a = [2]u3{ 1, 7 };
804813 var b = [3:69]u8{ 200, 225, 255 };
......@@ -818,6 +827,7 @@ test "array concatenation sets the sentinel - pointer" {
818827 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
819828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
820829 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
830 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
821831
822832 var a = [2]u3{ 1, 7 };
823833 var b = [3:69]u8{ 200, 225, 255 };
......@@ -837,6 +847,7 @@ test "array multiplication sets the sentinel - value" {
837847 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
838848 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
839849 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
850 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
840851
841852 var a = [2:7]u3{ 1, 6 };
842853 _ = &a;
......@@ -855,6 +866,7 @@ test "array multiplication sets the sentinel - pointer" {
855866 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
856867 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
857868 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
869 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
858870
859871 var a = [2:7]u3{ 1, 6 };
860872 const b = &a ** 2;
......@@ -938,6 +950,8 @@ test "comptime pointer load through elem_ptr" {
938950}
939951
940952test "debug variable type resolved through indirect zero-bit types" {
953 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
954
941955 const T = struct { key: []void };
942956 const slice: []const T = &[_]T{};
943957 _ = slice;
......@@ -1098,6 +1112,7 @@ test "no dependency loop for alignment of self struct" {
10981112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10991113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11001114 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1115 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11011116
11021117 const S = struct {
11031118 fn doTheTest() !void {
......@@ -1136,6 +1151,7 @@ test "no dependency loop for alignment of self bare union" {
11361151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11371152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11381153 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1154 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11391155
11401156 const S = struct {
11411157 fn doTheTest() !void {
......@@ -1174,6 +1190,7 @@ test "no dependency loop for alignment of self tagged union" {
11741190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11751191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11761192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1193 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11771194
11781195 const S = struct {
11791196 fn doTheTest() !void {
......@@ -1361,6 +1378,8 @@ test "lazy sizeof is resolved in division" {
13611378}
13621379
13631380test "lazy sizeof union tag size in compare" {
1381 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1382
13641383 const A = union(enum) {
13651384 a: void,
13661385 b: void,
......@@ -1373,6 +1392,7 @@ test "lazy value is resolved as slice operand" {
13731392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13741393 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13751394 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1395 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13761396
13771397 const A = struct { a: u32 };
13781398 var a: [512]u64 = undefined;
test/behavior/export_keyword.zig+1
......@@ -42,6 +42,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {
4242
4343test "export function alias" {
4444 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4546
4647 _ = struct {
4748 fn foo_internal() callconv(.c) u32 {
test/behavior/field_parent_ptr.zig+6
......@@ -2,6 +2,7 @@ const expect = @import("std").testing.expect;
22const builtin = @import("builtin");
33
44test "@fieldParentPtr struct" {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
67
78 const C = struct {
......@@ -138,6 +139,7 @@ test "@fieldParentPtr struct" {
138139
139140test "@fieldParentPtr extern struct" {
140141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
141143
142144 const C = extern struct {
143145 a: bool = true,
......@@ -1344,6 +1346,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
13441346
13451347test "@fieldParentPtr tagged union" {
13461348 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1349 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13471350
13481351 const C = union(enum) {
13491352 a: bool,
......@@ -1478,6 +1481,7 @@ test "@fieldParentPtr tagged union" {
14781481}
14791482
14801483test "@fieldParentPtr untagged union" {
1484 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14811485 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14821486
14831487 const C = union {
......@@ -1614,6 +1618,7 @@ test "@fieldParentPtr untagged union" {
16141618
16151619test "@fieldParentPtr extern union" {
16161620 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1621 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16171622
16181623 const C = extern union {
16191624 a: bool,
......@@ -1889,6 +1894,7 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
18891894 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
18901895 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
18911896 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1897 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18921898
18931899 const C = union(enum) {
18941900 a: u0,
test/behavior/floatop.zig+36-10
......@@ -278,6 +278,7 @@ test "@sqrt f16" {
278278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279279 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
280280 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
281 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
281282
282283 try testSqrt(f16);
283284 try comptime testSqrt(f16);
......@@ -288,6 +289,7 @@ test "@sqrt f32/f64" {
288289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
289290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290291 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
292 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
291293
292294 try testSqrt(f32);
293295 try comptime testSqrt(f32);
......@@ -299,9 +301,9 @@ test "@sqrt f80/f128/c_longdouble" {
299301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
300302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
301303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
302 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
303304 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
304305 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
305307
306308 if (builtin.os.tag == .freebsd) {
307309 // TODO https://github.com/ziglang/zig/issues/10875
......@@ -388,6 +390,7 @@ test "@sqrt with vectors" {
388390 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
389391 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
390392 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
393 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
391394
392395 try testSqrtWithVectors();
393396 try comptime testSqrtWithVectors();
......@@ -409,6 +412,7 @@ test "@sin f16" {
409412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
410413 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
411414 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
415 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
412416
413417 try testSin(f16);
414418 try comptime testSin(f16);
......@@ -420,6 +424,7 @@ test "@sin f32/f64" {
420424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421425 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
422426 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
427 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
423428
424429 try testSin(f32);
425430 comptime try testSin(f32);
......@@ -431,9 +436,9 @@ test "@sin f80/f128/c_longdouble" {
431436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
432437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
433438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
435439 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
436440 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
441 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
437442
438443 try testSin(f80);
439444 comptime try testSin(f80);
......@@ -461,6 +466,7 @@ test "@sin with vectors" {
461466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
462467 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
463468 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
464470
465471 try testSinWithVectors();
466472 try comptime testSinWithVectors();
......@@ -482,6 +488,7 @@ test "@cos f16" {
482488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483489 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
484490 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
491 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
485492
486493 try testCos(f16);
487494 try comptime testCos(f16);
......@@ -493,6 +500,7 @@ test "@cos f32/f64" {
493500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
494501 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
495502 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
503 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
496504
497505 try testCos(f32);
498506 try comptime testCos(f32);
......@@ -504,9 +512,9 @@ test "@cos f80/f128/c_longdouble" {
504512 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
505513 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
506514 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
507 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
508515 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
509516 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
517 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
510518
511519 try testCos(f80);
512520 try comptime testCos(f80);
......@@ -534,6 +542,7 @@ test "@cos with vectors" {
534542 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
535543 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
536544 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
545 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
537546
538547 try testCosWithVectors();
539548 try comptime testCosWithVectors();
......@@ -553,9 +562,9 @@ test "@tan f16" {
553562 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
554563 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
555564 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
557565 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
558566 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
567 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
559568
560569 try testTan(f16);
561570 try comptime testTan(f16);
......@@ -567,6 +576,7 @@ test "@tan f32/f64" {
567576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
568577 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
569578 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
570580
571581 try testTan(f32);
572582 try comptime testTan(f32);
......@@ -578,9 +588,9 @@ test "@tan f80/f128/c_longdouble" {
578588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
580590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
582591 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
583592 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
593 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
584594
585595 try testTan(f80);
586596 try comptime testTan(f80);
......@@ -608,6 +618,7 @@ test "@tan with vectors" {
608618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
609619 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
610620 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
621 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
611622
612623 try testTanWithVectors();
613624 try comptime testTanWithVectors();
......@@ -629,6 +640,7 @@ test "@exp f16" {
629640 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
630641 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
631642 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
643 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
632644
633645 try testExp(f16);
634646 try comptime testExp(f16);
......@@ -640,6 +652,7 @@ test "@exp f32/f64" {
640652 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
641653 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
642654 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
655 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
643656
644657 try testExp(f32);
645658 try comptime testExp(f32);
......@@ -651,9 +664,9 @@ test "@exp f80/f128/c_longdouble" {
651664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
652665 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
653666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
654 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
655667 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
656668 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
669 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
657670
658671 try testExp(f80);
659672 try comptime testExp(f80);
......@@ -685,6 +698,7 @@ test "@exp with vectors" {
685698 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
686699 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
687700 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
701 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
688702
689703 try testExpWithVectors();
690704 try comptime testExpWithVectors();
......@@ -706,6 +720,7 @@ test "@exp2 f16" {
706720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
707721 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
708722 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
723 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
709724
710725 try testExp2(f16);
711726 try comptime testExp2(f16);
......@@ -717,6 +732,7 @@ test "@exp2 f32/f64" {
717732 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
718733 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
719734 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
735 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
720736
721737 try testExp2(f32);
722738 try comptime testExp2(f32);
......@@ -728,9 +744,9 @@ test "@exp2 f80/f128/c_longdouble" {
728744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
729745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
730746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
731 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
732747 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
733748 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
749 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
734750
735751 try testExp2(f80);
736752 try comptime testExp2(f80);
......@@ -757,6 +773,7 @@ test "@exp2 with @vectors" {
757773 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
758774 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
759775 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
776 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
760777
761778 try testExp2WithVectors();
762779 try comptime testExp2WithVectors();
......@@ -778,6 +795,7 @@ test "@log f16" {
778795 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
779796 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
780797 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
798 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
781799
782800 try testLog(f16);
783801 try comptime testLog(f16);
......@@ -789,6 +807,7 @@ test "@log f32/f64" {
789807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
790808 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
791809 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
810 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
792811
793812 try testLog(f32);
794813 try comptime testLog(f32);
......@@ -800,9 +819,9 @@ test "@log f80/f128/c_longdouble" {
800819 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
801820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
802821 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
803 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
804822 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
805823 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
824 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
806825
807826 try testLog(f80);
808827 try comptime testLog(f80);
......@@ -830,6 +849,7 @@ test "@log with @vectors" {
830849 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831850 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
832851 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
852 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
833853
834854 {
835855 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
......@@ -848,6 +868,7 @@ test "@log2 f16" {
848868 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
849869 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
850870 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
871 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
851872
852873 try testLog2(f16);
853874 try comptime testLog2(f16);
......@@ -859,6 +880,7 @@ test "@log2 f32/f64" {
859880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
860881 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
861882 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
883 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
862884
863885 try testLog2(f32);
864886 try comptime testLog2(f32);
......@@ -870,9 +892,9 @@ test "@log2 f80/f128/c_longdouble" {
870892 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
871893 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
872894 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
873 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
874895 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
875896 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
897 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
876898
877899 try testLog2(f80);
878900 try comptime testLog2(f80);
......@@ -898,6 +920,7 @@ test "@log2 with vectors" {
898920 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899921 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
900922 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
923 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
901924 // https://github.com/ziglang/zig/issues/13681
902925 if (builtin.zig_backend == .stage2_llvm and
903926 builtin.cpu.arch == .aarch64 and
......@@ -924,6 +947,7 @@ test "@log10 f16" {
924947 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
925948 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
926949 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
950 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
927951
928952 try testLog10(f16);
929953 try comptime testLog10(f16);
......@@ -935,6 +959,7 @@ test "@log10 f32/f64" {
935959 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
936960 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
937961 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
962 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
938963
939964 try testLog10(f32);
940965 try comptime testLog10(f32);
......@@ -946,9 +971,9 @@ test "@log10 f80/f128/c_longdouble" {
946971 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
947972 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
948973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
949 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
950974 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
951975 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
976 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
952977
953978 try testLog10(f80);
954979 try comptime testLog10(f80);
......@@ -975,6 +1000,7 @@ test "@log10 with vectors" {
9751000 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9761001 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
9771002 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1003 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9781004
9791005 try testLog10WithVectors();
9801006 try comptime testLog10WithVectors();
test/behavior/fn.zig+4
......@@ -257,6 +257,7 @@ test "implicit cast fn call result to optional in field result" {
257257 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
258258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
259259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
260261
261262 const S = struct {
262263 fn entry() !void {
......@@ -468,6 +469,7 @@ test "method call with optional and error union first param" {
468469test "method call with optional pointer first param" {
469470 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
470471 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
472 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
471473
472474 const S = struct {
473475 x: i32 = 1234,
......@@ -619,6 +621,8 @@ test "inline function with comptime-known comptime-only return type called at ru
619621}
620622
621623test "address of function parameter is consistent" {
624 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625
622626 const S = struct {
623627 fn paramAddrMatch(x: u8) bool {
624628 return &x == &x;
test/behavior/fn_in_struct_in_comptime.zig+2
......@@ -12,6 +12,8 @@ fn get_foo() fn (*u8) usize {
1212}
1313
1414test "define a function in an anonymous struct in comptime" {
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16
1517 const foo = get_foo();
1618 try expect(foo(@as(*u8, @ptrFromInt(12345))) == 12345);
1719}
test/behavior/for.zig+10
......@@ -69,6 +69,7 @@ test "basic for loop" {
6969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7070 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7273
7374 const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
7475
......@@ -112,6 +113,7 @@ test "for with null and T peer types and inferred result location type" {
112113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
114115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
115117
116118 const S = struct {
117119 fn doTheTest(slice: []const u8) !void {
......@@ -153,6 +155,7 @@ test "for loop with pointer elem var" {
153155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156159
157160 const source = "abcdefg";
158161 var target: [source.len]u8 = undefined;
......@@ -198,6 +201,7 @@ test "for on slice with allowzero ptr" {
198201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
199202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
201205
202206 const S = struct {
203207 fn doTheTest(slice: []const u8) !void {
......@@ -213,6 +217,7 @@ test "for on slice with allowzero ptr" {
213217test "else continue outer for" {
214218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
215219 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
220 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
216221
217222 var i: usize = 6;
218223 var buf: [5]u8 = undefined;
......@@ -308,6 +313,7 @@ test "slice and two counters, one is offset and one is runtime" {
308313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
309314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
310315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
316 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
311317
312318 const slice: []const u8 = "blah";
313319 var start: usize = 0;
......@@ -337,6 +343,7 @@ test "two slices, one captured by-ref" {
337343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
338344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
339345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
340347
341348 var buf: [10]u8 = undefined;
342349 const slice1: []const u8 = "blah";
......@@ -356,6 +363,7 @@ test "raw pointer and slice" {
356363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
358365 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
359367
360368 var buf: [10]u8 = undefined;
361369 const slice: []const u8 = "blah";
......@@ -375,6 +383,7 @@ test "raw pointer and counter" {
375383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
376384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
377385 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378387
379388 var buf: [10]u8 = undefined;
380389 const ptr: [*]u8 = &buf;
......@@ -424,6 +433,7 @@ test "inline for with counter as the comptime-known" {
424433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
425434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
426435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
427437
428438 var runtime_slice = "hello";
429439 var runtime_i: usize = 3;
test/behavior/generics.zig+16-2
......@@ -90,6 +90,7 @@ test "type constructed by comptime function call" {
9090 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9292 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9394
9495 var l: SimpleList(10) = undefined;
9596 l.array[0] = 10;
......@@ -155,6 +156,7 @@ test "generic fn with implicit cast" {
155156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
157158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158160
159161 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
160162 try expect(getFirstByte(u16, &[_]u16{
......@@ -208,6 +210,7 @@ fn foo2(arg: anytype) bool {
208210
209211test "generic struct" {
210212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
211214
212215 var a1 = GenNode(i32){
213216 .value = 13,
......@@ -249,6 +252,7 @@ test "generic function instantiation turns into comptime call" {
249252 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
250253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
251254 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
252256
253257 const S = struct {
254258 fn doTheTest() !void {
......@@ -316,6 +320,8 @@ test "generic function instantiation non-duplicates" {
316320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
317321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
318322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
324
319325 if (builtin.os.tag == .wasi) return error.SkipZigTest;
320326
321327 const S = struct {
......@@ -334,6 +340,7 @@ test "generic function instantiation non-duplicates" {
334340test "generic instantiation of tagged union with only one field" {
335341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
343
337344 if (builtin.os.tag == .wasi) return error.SkipZigTest;
338345
339346 const S = struct {
......@@ -368,8 +375,6 @@ test "nested generic function" {
368375}
369376
370377test "extern function used as generic parameter" {
371 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
372
373378 const S = struct {
374379 extern fn usedAsGenericParameterFoo() void;
375380 extern fn usedAsGenericParameterBar() void;
......@@ -406,6 +411,8 @@ test "generic struct as parameter type" {
406411}
407412
408413test "slice as parameter type" {
414 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
415
409416 const S = struct {
410417 fn internComptimeString(comptime str: []const u8) *const []const u8 {
411418 return &struct {
......@@ -420,6 +427,8 @@ test "slice as parameter type" {
420427}
421428
422429test "null sentinel pointer passed as generic argument" {
430 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
431
423432 const S = struct {
424433 fn doTheTest(a: anytype) !void {
425434 try std.testing.expect(@intFromPtr(a) == 8);
......@@ -442,6 +451,7 @@ test "generic function passed as comptime argument" {
442451
443452test "return type of generic function is function pointer" {
444453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
454 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
445455
446456 const S = struct {
447457 fn b(comptime T: type) ?*const fn () error{}!T {
......@@ -503,6 +513,7 @@ test "union in struct captures argument" {
503513test "function argument tuple used as struct field" {
504514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
505515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
516 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
506517
507518 const S = struct {
508519 fn DeleagateWithContext(comptime Function: type) type {
......@@ -578,6 +589,7 @@ fn StructCapture(comptime T: type) type {
578589test "call generic function that uses capture from function declaration's scope" {
579590 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
580591 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
592 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
581593
582594 const S = StructCapture(f64);
583595 const s = S.foo(123);
......@@ -591,6 +603,8 @@ comptime {
591603}
592604
593605test "generic parameter resolves to comptime-only type but is not marked comptime" {
606 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
607
594608 const S = struct {
595609 fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T {
596610 if (rt_false) _ = foo(T, rt_false, func);
test/behavior/globals.zig+5
......@@ -28,6 +28,7 @@ test "slices pointing at the same address as global array." {
2828 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3132
3233 const S = struct {
3334 const a = [_]u8{ 1, 2, 3 };
......@@ -83,6 +84,8 @@ test "global const can be self-referential" {
8384}
8485
8586test "global var can be self-referential" {
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
88
8689 const S = struct {
8790 self: *@This(),
8891 x: u32,
......@@ -134,6 +137,8 @@ test "global const can be indirectly self-referential" {
134137}
135138
136139test "global var can be indirectly self-referential" {
140 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
141
137142 const S = struct {
138143 other: *@This(),
139144 x: u32,
test/behavior/if.zig+1
......@@ -118,6 +118,7 @@ test "if peer expressions inferred optional type" {
118118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
120120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
121122
122123 var self: []const u8 = "abcdef";
123124 var index: usize = 0;
test/behavior/lower_strlit_to_vector.zig+1
......@@ -6,6 +6,7 @@ test "strlit to vector" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 const strlit = "0123456789abcdef0123456789ABCDEF";
1112 const vec_from_strlit: @Vector(32, u8) = strlit.*;
test/behavior/math.zig+13-1
......@@ -67,6 +67,7 @@ test "@clz" {
6767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6868 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
6969 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7071
7172 try testClz();
7273 try comptime testClz();
......@@ -153,6 +154,7 @@ test "@ctz" {
153154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
154155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
155156 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156158
157159 try testCtz();
158160 try comptime testCtz();
......@@ -197,6 +199,7 @@ test "@ctz vectors" {
197199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
198200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
199201 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
200203
201204 try testCtzVectors();
202205 try comptime testCtzVectors();
......@@ -396,6 +399,7 @@ fn not(comptime T: type, a: T) T {
396399
397400test "binary not" {
398401 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
399403
400404 try expect(not(u0, 0) == 0);
401405 try expect(not(u1, 0) == 1);
......@@ -474,6 +478,7 @@ test "division" {
474478 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
475479 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
476480 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
481 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
477482
478483 try testIntDivision();
479484 try comptime testIntDivision();
......@@ -676,6 +681,8 @@ fn testSignedWrappingEval(x: i32) !void {
676681}
677682
678683test "signed negation wrapping" {
684 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
685
679686 try testSignedNegationWrappingEval(minInt(i16));
680687 try comptime testSignedNegationWrappingEval(minInt(i16));
681688}
......@@ -781,6 +788,7 @@ fn should_not_be_zero(x: f128) !void {
781788test "umax wrapped squaring" {
782789 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
783790 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
791 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
784792
785793 {
786794 var x: u4 = maxInt(u4);
......@@ -894,7 +902,6 @@ test "@addWithOverflow > 64 bits" {
894902 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
895903 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
896904 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
897 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
898905
899906 try testAddWithOverflow(u65, 4, 105, 109, 0);
900907 try testAddWithOverflow(u65, 1000, 100, 1100, 0);
......@@ -975,6 +982,7 @@ test "extensive @mulWithOverflow" {
975982 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
976983 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
977984 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
985 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
978986
979987 try testMulWithOverflow(u5, 3, 10, 30, 0);
980988 try testMulWithOverflow(u5, 3, 11, 1, 1);
......@@ -1616,6 +1624,7 @@ test "vector integer addition" {
16161624 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
16171625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16181626 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1627 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16191628
16201629 const S = struct {
16211630 fn doTheTest() !void {
......@@ -1681,6 +1690,8 @@ test "vector comparison" {
16811690 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16821691 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16831692 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1693 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1694
16841695 if (builtin.zig_backend == .stage2_x86_64 and
16851696 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
16861697
......@@ -1777,6 +1788,7 @@ test "@clz works on both vector and scalar inputs" {
17771788 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17781789 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17791790 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1791 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17801792
17811793 var x: u32 = 0x1;
17821794 _ = &x;
test/behavior/maximum_minimum.zig+4
......@@ -33,6 +33,7 @@ test "@max on vectors" {
3333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3535 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3637 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
3738
3839 const S = struct {
......@@ -88,6 +89,7 @@ test "@min for vectors" {
8889 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8990 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9091 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9193 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
9294
9395 const S = struct {
......@@ -320,6 +322,8 @@ test "@min/@max notices bounds from vector types when element of comptime-known
320322}
321323
322324test "@min/@max of signed and unsigned runtime integers" {
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
326
323327 var x: i32 = -1;
324328 var y: u31 = 1;
325329 _ = .{ &x, &y };
test/behavior/memcpy.zig+5
......@@ -29,6 +29,7 @@ test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {
2929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3233
3334 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
3435 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
......@@ -49,6 +50,7 @@ test "@memcpy dest many pointer" {
4950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5254
5355 try testMemcpyDestManyPtr();
5456 try comptime testMemcpyDestManyPtr();
......@@ -71,6 +73,7 @@ test "@memcpy slice" {
7173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7477
7578 try testMemcpySlice();
7679 try comptime testMemcpySlice();
......@@ -113,6 +116,8 @@ test "@memcpy comptime-only type" {
113116}
114117
115118test "@memcpy zero-bit type with aliasing" {
119 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
120
116121 const S = struct {
117122 fn doTheTest() void {
118123 var buf: [3]void = @splat({});
test/behavior/muladd.zig+5
......@@ -8,6 +8,7 @@ test "@mulAdd" {
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 try comptime testMulAdd();
1314 try testMulAdd();
......@@ -36,6 +37,7 @@ test "@mulAdd f16" {
3637 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3738 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
3839 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3941
4042 try comptime testMulAdd16();
4143 try testMulAdd16();
......@@ -111,6 +113,7 @@ test "vector f16" {
111113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112114 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
113115 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
114117
115118 try comptime vector16();
116119 try vector16();
......@@ -136,6 +139,7 @@ test "vector f32" {
136139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137140 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
138141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139143
140144 try comptime vector32();
141145 try vector32();
......@@ -161,6 +165,7 @@ test "vector f64" {
161165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162166 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
163167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
164169
165170 try comptime vector64();
166171 try vector64();
test/behavior/null.zig+1
......@@ -131,6 +131,7 @@ test "null with default unwrap" {
131131
132132test "optional pointer to 0 bit type null value at runtime" {
133133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134135
135136 const EmptyStruct = struct {};
136137 var x: ?*EmptyStruct = null;
test/behavior/optional.zig+8-1
......@@ -28,6 +28,7 @@ pub const EmptyStruct = struct {};
2828
2929test "optional pointer to size zero struct" {
3030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3132
3233 var e = EmptyStruct{};
3334 const o: ?*EmptyStruct = &e;
......@@ -35,6 +36,8 @@ test "optional pointer to size zero struct" {
3536}
3637
3738test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
3841 try testNullPtrsEql();
3942 try comptime testNullPtrsEql();
4043}
......@@ -112,6 +115,7 @@ test "address of unwrap optional" {
112115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
113116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
114117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
115119
116120 const S = struct {
117121 const Foo = struct {
......@@ -236,6 +240,7 @@ test "compare optionals with modified payloads" {
236240
237241test "unwrap function call with optional pointer return value" {
238242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
239244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
240245
241246 const S = struct {
......@@ -284,6 +289,7 @@ test "nested orelse" {
284289test "self-referential struct through a slice of optional" {
285290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
286291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
287293
288294 const S = struct {
289295 const Node = struct {
......@@ -391,6 +397,7 @@ test "array of optional unaligned types" {
391397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
392398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
393399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394401
395402 const Enum = enum { one, two, three };
396403
......@@ -513,7 +520,6 @@ test "mutable optional of noreturn" {
513520}
514521
515522test "orelse on C pointer" {
516
517523 // TODO https://github.com/ziglang/zig/issues/6597
518524 const foo: [*c]const u8 = "hey";
519525 const d = foo orelse @compileError("bad");
......@@ -543,6 +549,7 @@ test "Optional slice size is optimized" {
543549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
544550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
545551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
552 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
546553
547554 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
548555 var a: ?[]const u8 = null;
test/behavior/packed-struct.zig+5
......@@ -1299,6 +1299,8 @@ test "packed struct contains optional pointer" {
12991299}
13001300
13011301test "packed struct equality" {
1302 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1303
13021304 const Foo = packed struct {
13031305 a: u4,
13041306 b: u4,
......@@ -1319,6 +1321,8 @@ test "packed struct equality" {
13191321}
13201322
13211323test "packed struct with signed field" {
1324 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1325
13221326 var s: packed struct {
13231327 a: i2,
13241328 b: u6,
......@@ -1332,6 +1336,7 @@ test "assign packed struct initialized with RLS to packed struct literal field"
13321336 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) return error.SkipZigTest;
13331337 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13341338 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1339 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13351340
13361341 const Inner = packed struct { x: u17 };
13371342 const Outer = packed struct { inner: Inner, x: u15 };
test/behavior/pointers.zig+25
......@@ -21,6 +21,7 @@ test "pointer-integer arithmetic" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
2526 var ptr: [*]const u8 = "abcd";
2627
......@@ -100,6 +101,8 @@ test "pointer subtraction" {
100101}
101102
102103test "pointer arithmetic with non-trivial RHS" {
104 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105
103106 var t: bool = undefined;
104107 t = true;
105108
......@@ -124,6 +127,7 @@ fn PtrOf(comptime T: type) type {
124127
125128test "implicit cast single item pointer to C pointer and back" {
126129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127131
128132 var y: u8 = 11;
129133 const x: [*c]u8 = &y;
......@@ -140,6 +144,7 @@ test "initialize const optional C pointer to null" {
140144
141145test "assigning integer to C pointer" {
142146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
147 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143148
144149 var x: i32 = 0;
145150 var y: i32 = 1;
......@@ -157,6 +162,7 @@ test "assigning integer to C pointer" {
157162
158163test "C pointer comparison and arithmetic" {
159164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160166
161167 const S = struct {
162168 fn doTheTest() !void {
......@@ -200,6 +206,8 @@ fn testDerefPtrOneVal() !void {
200206}
201207
202208test "peer type resolution with C pointers" {
209 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210
203211 const ptr_one: *u8 = undefined;
204212 const ptr_many: [*]u8 = undefined;
205213 const ptr_c: [*c]u8 = undefined;
......@@ -227,6 +235,7 @@ test "implicit casting between C pointer and optional non-C pointer" {
227235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
228236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229237 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
238 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
230239
231240 var slice: []const u8 = "aoeu";
232241 _ = &slice;
......@@ -271,6 +280,7 @@ test "allowzero pointer and slice" {
271280 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
272281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
273282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274284
275285 var ptr: [*]allowzero i32 = @ptrFromInt(0);
276286 const opt_ptr: ?[*]allowzero i32 = ptr;
......@@ -290,6 +300,7 @@ test "assign null directly to C pointer and test null equality" {
290300 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291301 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
292302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
293304
294305 var x: [*c]i32 = null;
295306 _ = &x;
......@@ -357,6 +368,7 @@ test "array initialization types" {
357368test "null terminated pointer" {
358369 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
359370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
360372
361373 const S = struct {
362374 fn doTheTest() !void {
......@@ -375,6 +387,7 @@ test "allow any sentinel" {
375387 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376388 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377389 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
390 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378391
379392 const S = struct {
380393 fn doTheTest() !void {
......@@ -391,6 +404,7 @@ test "pointer sentinel with enums" {
391404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
392405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
393406 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
407 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394408
395409 const S = struct {
396410 const Number = enum {
......@@ -414,6 +428,7 @@ test "pointer sentinel with optional element" {
414428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
415429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
416430 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
431 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
417432
418433 const S = struct {
419434 fn doTheTest() !void {
......@@ -431,6 +446,7 @@ test "pointer sentinel with +inf" {
431446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
432447 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
433448 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
449 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
434450
435451 const S = struct {
436452 fn doTheTest() !void {
......@@ -452,6 +468,8 @@ test "pointer to array at fixed address" {
452468}
453469
454470test "pointer-integer arithmetic affects the alignment" {
471 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
472
455473 {
456474 var ptr: [*]align(8) u32 = undefined;
457475 var x: usize = 1;
......@@ -500,6 +518,7 @@ test "indexing array with sentinel returns correct type" {
500518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
501519 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
502520 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
521 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
503522
504523 var s: [:0]const u8 = "abc";
505524 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
......@@ -508,6 +527,7 @@ test "indexing array with sentinel returns correct type" {
508527test "element pointer to slice" {
509528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
510529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
511531
512532 const S = struct {
513533 fn doTheTest() !void {
......@@ -530,6 +550,7 @@ test "element pointer to slice" {
530550test "element pointer arithmetic to slice" {
531551 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
532552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
533554
534555 const S = struct {
535556 fn doTheTest() !void {
......@@ -554,6 +575,7 @@ test "element pointer arithmetic to slice" {
554575
555576test "array slicing to slice" {
556577 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
578 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
557579
558580 const S = struct {
559581 fn doTheTest() !void {
......@@ -584,6 +606,7 @@ test "ptrCast comptime known slice to C pointer" {
584606 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
585607 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
586608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
587610
588611 const s: [:0]const u8 = "foo";
589612 var p: [*c]const u8 = @ptrCast(s);
......@@ -603,6 +626,7 @@ test "pointer alignment and element type include call expression" {
603626
604627test "pointer to array has explicit alignment" {
605628 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
629 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
606630
607631 const S = struct {
608632 const Base = extern struct { a: u8 };
......@@ -679,6 +703,7 @@ fn constant() !void {
679703
680704test "pointer-to-array constness for zero-size elements, var" {
681705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
706 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
682707
683708 try mutable();
684709 try comptime mutable();
test/behavior/ptrcast.zig+3
......@@ -58,6 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
5858test "reinterpret bytes of an array into an extern struct" {
5959 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6162
6263 try testReinterpretBytesAsExternStruct();
6364 try comptime testReinterpretBytesAsExternStruct();
......@@ -232,6 +233,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
232233 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
233234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
236 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
235237
236238 var buf: [4]u8 = "aoeu".*;
237239 const x: ?[*]u8 = &buf;
......@@ -244,6 +246,7 @@ test "@ptrCast slice to slice" {
244246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
245247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
246248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
247250
248251 const S = struct {
249252 fn foo(slice: []u32) []i32 {
test/behavior/ptrfromint.zig+2
......@@ -17,6 +17,7 @@ test "mutate through ptr initialized with constant ptrFromInt value" {
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
2122 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
2223}
......@@ -34,6 +35,7 @@ test "@ptrFromInt creates null pointer" {
3435 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3637 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3739
3840 const ptr = @as(?*u32, @ptrFromInt(0));
3941 try expectEqual(@as(?*u32, null), ptr);
test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig+1
......@@ -8,6 +8,7 @@ test "reference a variable in an if after an if in the 2nd switch prong" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 try foo(true, Num.Two, false, "aoeu");
1314 try expect(!ok);
test/behavior/select.zig+2
......@@ -9,6 +9,7 @@ test "@select vectors" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 try comptime selectVectors();
1415 try selectVectors();
......@@ -39,6 +40,7 @@ test "@select arrays" {
3940 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4041 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4142 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4244 if (builtin.zig_backend == .stage2_x86_64 and
4345 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
4446
test/behavior/shuffle.zig+4
......@@ -9,6 +9,7 @@ test "@shuffle int" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213 if (builtin.zig_backend == .stage2_x86_64 and
1314 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .ssse3)) return error.SkipZigTest;
1415
......@@ -57,6 +58,7 @@ test "@shuffle int strange sizes" {
5758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5859 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5960 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6062
6163 try comptime testShuffle(2, 2, 2);
6264 try testShuffle(2, 2, 2);
......@@ -139,6 +141,7 @@ test "@shuffle bool 1" {
139141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
140142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141143 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
142145
143146 const S = struct {
144147 fn doTheTest() !void {
......@@ -162,6 +165,7 @@ test "@shuffle bool 2" {
162165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
163166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
165169
166170 const S = struct {
167171 fn doTheTest() !void {
test/behavior/sizeof_and_typeof.zig+1-3
......@@ -327,6 +327,7 @@ test "peer type resolution with @TypeOf doesn't trigger dependency loop check" {
327327 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
328328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
329329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
330 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
330331
331332 const T = struct {
332333 next: @TypeOf(null, @as(*const @This(), undefined)),
......@@ -420,8 +421,6 @@ test "Extern function calls in @TypeOf" {
420421}
421422
422423test "Peer resolution of extern function calls in @TypeOf" {
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
424
425424 const Test = struct {
426425 fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {
427426 return 0;
......@@ -439,7 +438,6 @@ test "Peer resolution of extern function calls in @TypeOf" {
439438test "Extern function calls, dereferences and field access in @TypeOf" {
440439 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
441440 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443441
444442 const Test = struct {
445443 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
test/behavior/slice.zig+33
......@@ -30,6 +30,7 @@ comptime {
3030
3131test "slicing" {
3232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3334
3435 var array: [20]i32 = undefined;
3536
......@@ -77,6 +78,7 @@ fn assertLenIsZero(msg: []const u8) !void {
7778
7879test "access len index of sentinel-terminated slice" {
7980 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8082
8183 const S = struct {
8284 fn doTheTest() !void {
......@@ -100,6 +102,7 @@ test "comptime slice of slice preserves comptime var" {
100102
101103test "open slice of open slice with sentinel" {
102104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103106
104107 var slice: [:0]const u8 = "hello";
105108 _ = &slice;
......@@ -117,6 +120,7 @@ test "open slice of open slice with sentinel" {
117120
118121test "open slice with sentinel of slice with end index" {
119122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
120124
121125 var slice: [:0]const u8 = "hello";
122126 _ = &slice;
......@@ -169,6 +173,8 @@ fn memFree(comptime T: type, memory: []T) void {
169173}
170174
171175test "slice of hardcoded address to pointer" {
176 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
177
172178 const S = struct {
173179 fn doTheTest() !void {
174180 const pointer = @as([*]u8, @ptrFromInt(0x04))[0..2];
......@@ -207,6 +213,7 @@ test "comptime pointer cast array and then slice" {
207213test "slicing zero length array" {
208214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
209215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210217
211218 const s1 = ""[0..];
212219 const s2 = ([_]u32{})[0..];
......@@ -217,6 +224,8 @@ test "slicing zero length array" {
217224}
218225
219226test "slicing pointer by length" {
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228
220229 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
221230 const ptr: [*]const u8 = @as([*]const u8, @ptrCast(&array));
222231 const slice = ptr[1..][0..5];
......@@ -238,6 +247,8 @@ test "compile time slice of pointer to hard coded address" {
238247}
239248
240249test "slice string literal has correct type" {
250 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
251
241252 comptime {
242253 try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);
243254 const array = [_]i32{ 1, 2, 3, 4 };
......@@ -265,6 +276,7 @@ test "runtime safety lets us slice from len..len" {
265276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
266277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
267278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
268280
269281 var an_array = [_]u8{ 1, 2, 3 };
270282 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
......@@ -277,6 +289,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
277289test "C pointer" {
278290 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
279291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
280293
281294 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
282295 var len: u32 = 10;
......@@ -289,6 +302,7 @@ test "C pointer slice access" {
289302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
290303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
291304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
292306
293307 var buf: [10]u32 = [1]u32{42} ** 10;
294308 const c_ptr = @as([*c]const u32, @ptrCast(&buf));
......@@ -319,6 +333,7 @@ fn sliceSum(comptime q: []const u8) i32 {
319333test "slice type with custom alignment" {
320334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
321335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
322337
323338 const LazilyResolvedType = struct {
324339 anything: i32,
......@@ -332,6 +347,7 @@ test "slice type with custom alignment" {
332347
333348test "obtaining a null terminated slice" {
334349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
335351
336352 // here we have a normal array
337353 var buf: [50]u8 = undefined;
......@@ -376,6 +392,7 @@ test "empty array to slice" {
376392test "@ptrCast slice to pointer" {
377393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
378394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
379396
380397 const S = struct {
381398 fn doTheTest() !void {
......@@ -392,6 +409,7 @@ test "@ptrCast slice to pointer" {
392409
393410test "slice multi-pointer without end" {
394411 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
412 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
395413
396414 const S = struct {
397415 fn doTheTest() !void {
......@@ -649,6 +667,7 @@ test "slice syntax resulting in pointer-to-array" {
649667test "slice pointer-to-array null terminated" {
650668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
651669 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
670 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
652671
653672 comptime {
654673 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
......@@ -667,6 +686,7 @@ test "slice pointer-to-array null terminated" {
667686
668687test "slice pointer-to-array zero length" {
669688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
670690
671691 comptime {
672692 {
......@@ -701,6 +721,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
701721 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
702722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
703723 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
724 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
704725
705726 const S = struct {
706727 const U = union {
......@@ -757,6 +778,7 @@ test "array mult of slice gives ptr to array" {
757778
758779test "slice bounds in comptime concatenation" {
759780 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
781 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
760782
761783 const bs = comptime blk: {
762784 const b = "........1........";
......@@ -792,6 +814,7 @@ test "slice sentinel access at comptime" {
792814test "slicing array with sentinel as end index" {
793815 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
794816 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
795818
796819 const S = struct {
797820 fn do() !void {
......@@ -810,6 +833,7 @@ test "slicing array with sentinel as end index" {
810833test "slicing slice with sentinel as end index" {
811834 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
812835 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
836 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
813837
814838 const S = struct {
815839 fn do() !void {
......@@ -889,6 +913,8 @@ test "slice of void" {
889913}
890914
891915test "slice with dereferenced value" {
916 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
917
892918 var a: usize = 0;
893919 const idx: *usize = &a;
894920 _ = blk: {
......@@ -923,6 +949,7 @@ test "empty slice ptr is non null" {
923949test "slice decays to many pointer" {
924950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
925951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
952 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
926953
927954 var buf: [8]u8 = "abcdefg\x00".*;
928955 const p: [*:0]const u8 = buf[0..7 :0];
......@@ -933,6 +960,7 @@ test "write through pointer to optional slice arg" {
933960 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
934961 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
935962 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
963 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
936964
937965 const S = struct {
938966 fn bar(foo: *?[]const u8) !void {
......@@ -952,6 +980,7 @@ test "modify slice length at comptime" {
952980 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
953981 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
954982 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
983 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
955984
956985 const arr: [2]u8 = .{ 10, 20 };
957986 comptime var s: []const u8 = arr[0..0];
......@@ -985,6 +1014,7 @@ test "slicing slices gives correct result" {
9851014 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9861015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9871016 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1017 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9881018
9891019 const foo = "1234";
9901020 const bar = foo[0..4];
......@@ -1013,6 +1043,7 @@ test "sentinel-terminated 0-length slices" {
10131043 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
10141044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10151045 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1046 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10161047
10171048 const u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
10181049
......@@ -1031,6 +1062,8 @@ test "sentinel-terminated 0-length slices" {
10311062}
10321063
10331064test "peer slices keep abi alignment with empty struct" {
1065 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1066
10341067 var cond: bool = undefined;
10351068 cond = false;
10361069 const slice = if (cond) &[1]u32{42} else &.{};
test/behavior/src.zig+1
......@@ -19,6 +19,7 @@ test "@src" {
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2223
2324 try doTheTest();
2425}
test/behavior/string_literals.zig+5
......@@ -8,6 +8,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
88test "@tagName() returns a string literal" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
1314 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
......@@ -21,6 +22,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
2122test "@errorName() returns a string literal" {
2223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2426
2527 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
2628 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
......@@ -64,6 +66,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
6466test "@src() returns a struct containing 0-terminated string slices" {
6567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6668 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6770
6871 const src = testFnForSrc();
6972 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
......@@ -101,6 +104,8 @@ test "Peer type resolution with string literals and unknown length u8 pointers"
101104}
102105
103106test "including the sentinel when dereferencing a string literal" {
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
108
104109 var var_str = "abc";
105110 const var_derefed = var_str[0 .. var_str.len + 1].*;
106111
test/behavior/struct.zig+19-1
......@@ -293,6 +293,7 @@ const Val = struct {
293293test "struct point to self" {
294294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
295295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
296 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
296297
297298 var root: Node = undefined;
298299 root.val.x = 1;
......@@ -336,6 +337,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
336337
337338test "pass slice of empty struct to fn" {
338339 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
340 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
339341
340342 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
341343}
......@@ -347,6 +349,7 @@ test "self-referencing struct via array member" {
347349 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
348350 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
349351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
350353
351354 const T = struct {
352355 children: [1]*@This(),
......@@ -370,6 +373,7 @@ const EmptyStruct = struct {
370373test "align 1 field before self referential align 8 field as slice return type" {
371374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
372375 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
376 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
373377
374378 const result = alloc(Expr);
375379 try expect(result.len == 0);
......@@ -416,12 +420,12 @@ const Foo96Bits = packed struct {
416420
417421test "packed struct 24bits" {
418422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
419424 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
420425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421426 if (builtin.cpu.arch.isWasm()) return error.SkipZigTest; // TODO
422427 if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
423428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
425429
426430 comptime {
427431 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
......@@ -956,6 +960,7 @@ test "comptime struct field" {
956960}
957961
958962test "tuple element initialized with fn call" {
963 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
959964 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
960965 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
961966 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -974,6 +979,7 @@ test "tuple element initialized with fn call" {
974979}
975980
976981test "struct with union field" {
982 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
977983 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
978984 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
979985 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1045,6 +1051,7 @@ test "packed struct with undefined initializers" {
10451051}
10461052
10471053test "for loop over pointers to struct, getting field from struct pointer" {
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10481055 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10491056 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10501057
......@@ -1362,6 +1369,7 @@ test "fieldParentPtr of a zero-bit field" {
13621369}
13631370
13641371test "struct field has a pointer to an aligned version of itself" {
1372 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13651373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13661374
13671375 const E = struct {
......@@ -1459,6 +1467,7 @@ test "function pointer in struct returns the struct" {
14591467}
14601468
14611469test "no dependency loop on optional field wrapped in generic function" {
1470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14621471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14631472
14641473 const S = struct {
......@@ -1538,6 +1547,8 @@ test "struct fields get automatically reordered" {
15381547}
15391548
15401549test "directly initiating tuple like struct" {
1550 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1551
15411552 const a = struct { u8 }{8};
15421553 try expect(a[0] == 8);
15431554}
......@@ -1699,6 +1710,8 @@ test "runtime side-effects in comptime-known struct init" {
16991710}
17001711
17011712test "pointer to struct initialized through reference to anonymous initializer provides result types" {
1713 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1714
17021715 const S = struct { a: u8, b: u16, c: *const anyopaque };
17031716 var my_u16: u16 = 0xABCD;
17041717 _ = &my_u16;
......@@ -1756,6 +1769,8 @@ test "initializer uses own size" {
17561769}
17571770
17581771test "initializer takes a pointer to a variable inside its struct" {
1772 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1773
17591774 const namespace = struct {
17601775 const S = struct {
17611776 s: *S = &S.instance,
......@@ -1774,6 +1789,8 @@ test "initializer takes a pointer to a variable inside its struct" {
17741789}
17751790
17761791test "circular dependency through pointer field of a struct" {
1792 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1793
17771794 const S = struct {
17781795 const StructInner = extern struct {
17791796 outer: StructOuter = std.mem.zeroes(StructOuter),
......@@ -1895,6 +1912,7 @@ test "runtime call in nested initializer" {
18951912 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
18961913 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18971914 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1915 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18981916
18991917 const Holder = struct {
19001918 array: []const u8,
test/behavior/struct_contains_null_ptr_itself.zig+1
......@@ -5,6 +5,7 @@ const builtin = @import("builtin");
55test "struct contains null pointer which contains original struct" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 var x: ?*NodeLineComment = null;
1011 _ = &x;
test/behavior/struct_contains_slice_of_itself.zig+2
......@@ -13,6 +13,7 @@ const NodeAligned = struct {
1313
1414test "struct contains slice of itself" {
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 var other_nodes = [_]Node{
1819 Node{
......@@ -53,6 +54,7 @@ test "struct contains slice of itself" {
5354test "struct contains aligned slice of itself" {
5455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5658
5759 var other_nodes = [_]NodeAligned{
5860 NodeAligned{
test/behavior/switch.zig+6-8
......@@ -9,13 +9,12 @@ const maxInt = std.math.maxInt;
99
1010test "switch with numbers" {
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 try testSwitchWithNumbers(13);
1415}
1516
1617fn testSwitchWithNumbers(x: u32) !void {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
18
1918 const result = switch (x) {
2019 1, 2, 3, 4...8 => false,
2120 13 => true,
......@@ -323,14 +322,13 @@ fn testSwitchEnumPtrCapture() !void {
323322
324323test "switch handles all cases of number" {
325324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
326326
327327 try testSwitchHandleAllCases();
328328 try comptime testSwitchHandleAllCases();
329329}
330330
331331fn testSwitchHandleAllCases() !void {
332 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
333
334332 try expect(testSwitchHandleAllCasesExhaustive(0) == 3);
335333 try expect(testSwitchHandleAllCasesExhaustive(1) == 2);
336334 try expect(testSwitchHandleAllCasesExhaustive(2) == 1);
......@@ -694,6 +692,7 @@ test "switch prong pointer capture alignment" {
694692test "switch on pointer type" {
695693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
696694 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
697696
698697 const S = struct {
699698 const X = struct {
......@@ -742,6 +741,7 @@ test "switch capture copies its payload" {
742741 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
743742 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
744743 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
744 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
745745
746746 const S = struct {
747747 fn doTheTest() !void {
......@@ -832,6 +832,8 @@ test "comptime inline switch" {
832832}
833833
834834test "switch capture peer type resolution" {
835 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
836
835837 const U = union(enum) {
836838 a: u32,
837839 b: u64,
......@@ -867,8 +869,6 @@ test "switch capture peer type resolution for in-memory coercible payloads" {
867869}
868870
869871test "switch pointer capture peer type resolution" {
870 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
871
872872 const T1 = c_int;
873873 const T2 = @Type(@typeInfo(T1));
874874
......@@ -989,8 +989,6 @@ test "prong with inline call to unreachable" {
989989}
990990
991991test "block error return trace index is reset between prongs" {
992 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
993
994992 const S = struct {
995993 fn returnError() error{TestFailed} {
996994 return error.TestFailed;
test/behavior/threadlocal.zig+2
......@@ -25,6 +25,7 @@ test "pointer to thread local array" {
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2626 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2727 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2829
2930 const s = "Hello world";
3031 @memcpy(buffer[0..s.len], s);
......@@ -38,6 +39,7 @@ test "reference a global threadlocal variable" {
3839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4041 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4143
4244 _ = nrfx_uart_rx(&g_uart0);
4345}
test/behavior/truncate.zig+1
......@@ -70,6 +70,7 @@ test "truncate on vectors" {
7070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7272 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7374
7475 const S = struct {
7576 fn doTheTest() !void {
test/behavior/try.zig-1
......@@ -72,7 +72,6 @@ test "'return try' of empty error set in function returning non-error" {
7272 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
7373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7474 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7675 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7776
7877 const S = struct {
test/behavior/tuple.zig+14-2
......@@ -131,6 +131,7 @@ test "tuple initializer for var" {
131131test "array-like initializer for tuple types" {
132132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
133133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134135
135136 const T = @Type(.{
136137 .@"struct" = .{
......@@ -219,6 +220,7 @@ test "fieldParentPtr of tuple" {
219220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
220221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
221222 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
223 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
222224
223225 var x: u32 = 0;
224226 _ = &x;
......@@ -231,6 +233,7 @@ test "fieldParentPtr of anon struct" {
231233 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
232234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233235 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
236 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
234237
235238 var x: u32 = 0;
236239 _ = &x;
......@@ -280,6 +283,7 @@ test "tuple in tuple passed to generic function" {
280283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
281284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
282285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
286 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
283287
284288 const S = struct {
285289 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
......@@ -299,6 +303,7 @@ test "coerce tuple to tuple" {
299303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
300304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
301305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
302307
303308 const T = std.meta.Tuple(&.{u8});
304309 const S = struct {
......@@ -313,6 +318,7 @@ test "tuple type with void field" {
313318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
314319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
315320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
316322
317323 const T = std.meta.Tuple(&[_]type{void});
318324 const x = T{{}};
......@@ -349,6 +355,7 @@ test "zero sized struct in tuple handled correctly" {
349355test "tuple type with void field and a runtime field" {
350356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
351357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
352359
353360 const T = std.meta.Tuple(&[_]type{ usize, void });
354361 var t: T = .{ 5, {} };
......@@ -376,6 +383,7 @@ test "tuple initialized with a runtime known value" {
376383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
377384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
378385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
379387
380388 const E = union(enum) { e: []const u8 };
381389 const W = union(enum) { w: E };
......@@ -391,6 +399,7 @@ test "tuple of struct concatenation and coercion to array" {
391399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392400 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
393401 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394403
395404 const StructWithDefault = struct { value: f32 = 42 };
396405 const SomeStruct = struct { array: [4]StructWithDefault };
......@@ -405,6 +414,7 @@ test "nested runtime conditionals in tuple initializer" {
405414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
406415 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
407416 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
417 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
408418
409419 var data: u8 = 0;
410420 _ = &data;
......@@ -440,6 +450,7 @@ test "tuple pointer is indexable" {
440450 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
441451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
442452 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
453 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443454
444455 const S = struct { u32, bool };
445456
......@@ -498,6 +509,7 @@ test "tuple with runtime value coerced into a slice with a sentinel" {
498509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
499510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
500511 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
512 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
501513
502514 const S = struct {
503515 fn f(a: [:null]const ?u8) !void {
......@@ -569,8 +581,8 @@ test "comptime fields in tuple can be initialized" {
569581test "empty struct in tuple" {
570582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
571583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
573584 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
585 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
574586
575587 const T = struct { struct {} };
576588 const info = @typeInfo(T);
......@@ -582,8 +594,8 @@ test "empty struct in tuple" {
582594test "empty union in tuple" {
583595 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
584596 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
585 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
586597 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
598 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
587599
588600 const T = struct { union {} };
589601 const info = @typeInfo(T);
test/behavior/tuple_declarations.zig+2
......@@ -7,6 +7,7 @@ const expectEqualStrings = testing.expectEqualStrings;
77test "tuple declaration type info" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 {
1213 const T = struct { comptime u32 = 1, []const u8 };
......@@ -35,6 +36,7 @@ test "tuple declaration type info" {
3536test "tuple declaration usage" {
3637 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3840
3941 const T = struct { u32, []const u8 };
4042 var t: T = .{ 1, "foo" };
test/behavior/type.zig+3
......@@ -203,6 +203,7 @@ test "Type.Opaque" {
203203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
206207
207208 const Opaque = @Type(.{
208209 .@"opaque" = .{
......@@ -260,6 +261,7 @@ test "Type.Struct" {
260261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
261262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
262263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
263265
264266 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
265267 const infoA = @typeInfo(A).@"struct";
......@@ -347,6 +349,7 @@ test "Type.Struct" {
347349test "Type.Enum" {
348350 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
349351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
350353
351354 const Foo = @Type(.{
352355 .@"enum" = .{
test/behavior/type_info.zig+13
......@@ -161,6 +161,7 @@ test "type info: error set, error union info, anyerror" {
161161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
163163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
164165
165166 try testErrorSet();
166167 try comptime testErrorSet();
......@@ -192,6 +193,7 @@ test "type info: error set single value" {
192193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
193194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
194195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
195197
196198 const TestSet = error.One;
197199
......@@ -205,6 +207,7 @@ test "type info: error set merged" {
205207 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
206208 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
207209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
210 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
208211
209212 const TestSet = error{ One, Two } || error{Three};
210213
......@@ -220,6 +223,7 @@ test "type info: enum info" {
220223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
222225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
223227
224228 try testEnum();
225229 try comptime testEnum();
......@@ -282,6 +286,7 @@ fn testUnion() !void {
282286
283287test "type info: struct info" {
284288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
285290
286291 try testStruct();
287292 try comptime testStruct();
......@@ -551,6 +556,7 @@ test "type info for async frames" {
551556
552557test "Declarations are returned in declaration order" {
553558 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
559 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
554560
555561 const S = struct {
556562 pub const a = 1;
......@@ -572,6 +578,8 @@ test "Struct.is_tuple for anon list literal" {
572578}
573579
574580test "Struct.is_tuple for anon struct literal" {
581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
582
575583 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576584
577585 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
......@@ -586,6 +594,8 @@ test "StructField.is_comptime" {
586594}
587595
588596test "typeInfo resolves usingnamespace declarations" {
597 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
598
589599 const A = struct {
590600 pub const f1 = 42;
591601 };
......@@ -611,6 +621,7 @@ test "value from struct @typeInfo default_value_ptr can be loaded at comptime" {
611621test "@typeInfo decls and usingnamespace" {
612622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
613623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
614625
615626 const A = struct {
616627 pub const x = 5;
......@@ -651,6 +662,8 @@ test "type info of tuple of string literal default value" {
651662}
652663
653664test "@typeInfo only contains pub decls" {
665 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
666
654667 const other = struct {
655668 const std = @import("std");
656669
test/behavior/typename.zig+2
......@@ -67,6 +67,7 @@ test "basic" {
6767 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7071
7172 try expectEqualStrings("i64", @typeName(i64));
7273 try expectEqualStrings("*usize", @typeName(*usize));
......@@ -237,6 +238,7 @@ test "comptime parameters not converted to anytype in function type" {
237238 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
238239 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
240242
241243 const T = fn (comptime fn (comptime type) void, void) void;
242244 try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));
test/behavior/undefined.zig+2
......@@ -79,6 +79,7 @@ test "assign undefined to struct with method" {
7979}
8080
8181test "type name of undefined" {
82 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8283 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8384
8485 const x = undefined;
......@@ -91,6 +92,7 @@ test "reslice of undefined global var slice" {
9192 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9496
9597 var stack_buf: [100]u8 = [_]u8{0} ** 100;
9698 buf = &stack_buf;
test/behavior/union.zig+21-1
......@@ -16,6 +16,7 @@ test "basic unions with floats" {
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
2021 var foo = FooWithFloats{ .int = 1 };
2122 try expect(foo.int == 1);
......@@ -43,6 +44,7 @@ test "basic unions" {
4344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4546 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4648
4749 var foo = Foo{ .int = 1 };
4850 try expect(foo.int == 1);
......@@ -62,6 +64,7 @@ test "init union with runtime value" {
6264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6466 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6568
6669 var foo: Foo = undefined;
6770
......@@ -100,6 +103,7 @@ const FooExtern = extern union {
100103test "basic extern unions" {
101104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
102105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103107
104108 var foo = FooExtern{ .int = 1 };
105109 try expect(foo.int == 1);
......@@ -210,6 +214,7 @@ test "union with specified enum tag" {
210214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
211215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
213218
214219 try doTest();
215220 try comptime doTest();
......@@ -261,6 +266,7 @@ test "comparison between union and enum literal" {
261266 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
262267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
263268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
264270
265271 try testComparison();
266272 try comptime testComparison();
......@@ -334,6 +340,7 @@ test "constant packed union" {
334340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
335341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
336342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337344
338345 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
339346}
......@@ -483,6 +490,7 @@ test "initialize global array of union" {
483490 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
484491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
485492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
493 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
486494
487495 glbl_array[1] = FooUnion{ .U1 = 2 };
488496 glbl_array[0] = FooUnion{ .U0 = 1 };
......@@ -522,6 +530,7 @@ test "union initializer generates padding only if needed" {
522530test "runtime tag name with single field" {
523531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
524532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
533 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
525534
526535 const U = union(enum) {
527536 A: i32,
......@@ -599,6 +608,7 @@ test "tagged union as return value" {
599608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
600609 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
601610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
611 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
602612
603613 switch (returnAnInt(13)) {
604614 TaggedFoo.One => |value| try expect(value == 13),
......@@ -642,6 +652,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
642652 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
643653 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
644654 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
655 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
645656
646657 comptime assert(Tag(Tag(MultipleChoice2)) == u32);
647658 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
......@@ -928,6 +939,7 @@ test "anonymous union literal syntax" {
928939 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
929940 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
930941 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
942 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
931943
932944 const S = struct {
933945 const Number = union {
......@@ -1048,7 +1060,6 @@ test "@unionInit on union with tag but no fields" {
10481060 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10491061 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10501062 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1051 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10521063
10531064 const S = struct {
10541065 const Type = enum(u8) { no_op = 105 };
......@@ -1098,6 +1109,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
10981109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10991110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11001111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11011113
11021114 const T = struct {
11031115 const U = union(enum) {
......@@ -1330,6 +1342,7 @@ test "union field ptr - zero sized payload" {
13301342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13311343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13321344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13331346
13341347 const U = union {
13351348 foo: void,
......@@ -1344,6 +1357,7 @@ test "union field ptr - zero sized field" {
13441357 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13451358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13461359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1360 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13471361
13481362 const U = union {
13491363 foo: void,
......@@ -1998,6 +2012,7 @@ test "store of comptime reinterpreted memory to packed union" {
19982012test "union field is a pointer to an aligned version of itself" {
19992013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20002014 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2015 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20012016
20022017 const E = union {
20032018 next: *align(1) @This(),
......@@ -2010,6 +2025,7 @@ test "union field is a pointer to an aligned version of itself" {
20102025
20112026test "pass register-sized field as non-register-sized union" {
20122027 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2028 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20132029
20142030 const S = struct {
20152031 fn taggedUnion(u: union(enum) { x: usize, y: [2]usize }) !void {
......@@ -2057,6 +2073,7 @@ test "circular dependency through pointer field of a union" {
20572073
20582074test "pass nested union with rls" {
20592075 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2076 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20602077
20612078 const Union = union(enum) {
20622079 a: u32,
......@@ -2105,6 +2122,7 @@ test "copied union field doesn't alias source" {
21052122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21062123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21072124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
21082126
21092127 const U = union(enum) {
21102128 array: [10]u32,
......@@ -2305,6 +2323,8 @@ test "extern union @FieldType" {
23052323}
23062324
23072325test "assign global tagged union" {
2326 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2327
23082328 const U = union(enum) {
23092329 a: u16,
23102330 b: u32,
test/behavior/usingnamespace.zig+8
......@@ -12,6 +12,7 @@ const C = struct {
1212
1313test "basic usingnamespace" {
1414 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1516
1617 try std.testing.expect(C.B == bool);
1718}
......@@ -24,6 +25,7 @@ fn Foo(comptime T: type) type {
2425
2526test "usingnamespace inside a generic struct" {
2627 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2729
2830 const std2 = Foo(std);
2931 const testing2 = Foo(std.testing);
......@@ -37,6 +39,7 @@ usingnamespace struct {
3739
3840test "usingnamespace does not redeclare an imported variable" {
3941 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4043
4144 try comptime std.testing.expect(@This().foo == 42);
4245}
......@@ -46,6 +49,7 @@ test "usingnamespace omits mixing in private functions" {
4649 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4851 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4953
5054 try expect(@This().privateFunction());
5155 try expect(!@This().printText());
......@@ -56,6 +60,7 @@ fn privateFunction() bool {
5660
5761test {
5862 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
63 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5964
6065 _ = @import("usingnamespace/import_segregation.zig");
6166}
......@@ -65,6 +70,7 @@ test "two files usingnamespace import each other" {
6570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6671 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6772 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6874
6975 try expect(@This().ok());
7076}
......@@ -73,6 +79,7 @@ test {
7379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7683
7784 const AA = struct {
7885 x: i32,
......@@ -102,6 +109,7 @@ const Mixin = struct {
102109
103110test "container member access usingnamespace decls" {
104111 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105113
106114 var foo = Bar{};
107115 foo.two();
test/behavior/var_args.zig+1-1
......@@ -192,8 +192,8 @@ test "variadic functions" {
192192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
193193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
194194 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
196195 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
197197 if (builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) {
198198 // https://github.com/ziglang/zig/issues/14096
199199 return error.SkipZigTest;
test/behavior/vector.zig+22-1
......@@ -11,6 +11,7 @@ test "implicit cast vector to array - bool" {
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 const S = struct {
1617 fn doTheTest() !void {
......@@ -29,6 +30,7 @@ test "vector wrap operators" {
2930 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3031 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3132 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3234 if (builtin.zig_backend == .stage2_x86_64 and
3335 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
3436
......@@ -54,6 +56,7 @@ test "vector bin compares with mem.eql" {
5456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5557 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5658 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5760
5861 const S = struct {
5962 fn doTheTest() !void {
......@@ -79,6 +82,7 @@ test "vector int operators" {
7982 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8083 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8184 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8286
8387 const S = struct {
8488 fn doTheTest() !void {
......@@ -149,6 +153,7 @@ test "vector bit operators" {
149153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
150154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151155 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
152157
153158 const S = struct {
154159 fn doTheTest() !void {
......@@ -169,6 +174,7 @@ test "implicit cast vector to array" {
169174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
170175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
171176 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
177 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
172178
173179 const S = struct {
174180 fn doTheTest() !void {
......@@ -187,6 +193,7 @@ test "array to vector" {
187193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
188194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
190197
191198 const S = struct {
192199 fn doTheTest() !void {
......@@ -245,6 +252,7 @@ test "array to vector with element type coercion" {
245252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
246253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
247254 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
248256 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
249257 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
250258
......@@ -287,7 +295,6 @@ test "tuple to vector" {
287295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
288296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289297 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
290 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
291298
292299 const S = struct {
293300 fn doTheTest() !void {
......@@ -311,6 +318,7 @@ test "vector casts of sizes not divisible by 8" {
311318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
312319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313320 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
314322
315323 const S = struct {
316324 fn doTheTest() !void {
......@@ -350,6 +358,7 @@ test "vector @splat" {
350358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
351359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352360 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
353362
354363 if (builtin.zig_backend == .stage2_llvm and
355364 builtin.os.tag == .macos)
......@@ -511,6 +520,7 @@ test "vector comparison operators" {
511520 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
512521 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
513522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
523 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
514524
515525 const S = struct {
516526 fn doTheTest() !void {
......@@ -557,6 +567,7 @@ test "vector division operators" {
557567 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
558568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
559569 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
570 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
560571
561572 const S = struct {
562573 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
......@@ -644,6 +655,7 @@ test "vector division operators" {
644655
645656test "vector bitwise not operator" {
646657 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
647659 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
648660 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
649661 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -681,6 +693,7 @@ test "vector shift operators" {
681693 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
682694 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
683695 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
696 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
684697
685698 const S = struct {
686699 fn doTheTestShift(x: anytype, y: anytype) !void {
......@@ -1038,6 +1051,7 @@ test "multiplication-assignment operator with an array operand" {
10381051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10391052 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10401053 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10411055
10421056 const S = struct {
10431057 fn doTheTest() !void {
......@@ -1059,6 +1073,7 @@ test "@addWithOverflow" {
10591073 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10601074 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10611075 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1076 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10621077 if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
10631078
10641079 const S = struct {
......@@ -1109,6 +1124,7 @@ test "@subWithOverflow" {
11091124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11101125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11111126 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1127 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11121128 if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
11131129
11141130 const S = struct {
......@@ -1211,6 +1227,7 @@ test "loading the second vector from a slice of vectors" {
12111227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12121228 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12131229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1230 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12141231
12151232 @setRuntimeSafety(false);
12161233 var small_bases = [2]@Vector(2, u8){
......@@ -1227,6 +1244,7 @@ test "array of vectors is copied" {
12271244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12281245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12291246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12301248
12311249 const Vec3 = @Vector(3, i32);
12321250 var points = [_]Vec3{
......@@ -1392,6 +1410,7 @@ test "store to vector in slice" {
13921410 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13931411 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13941412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1413 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13951414 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13961415
13971416 var v = [_]@Vector(3, f32){
......@@ -1508,6 +1527,7 @@ test "bitcast to vector with different child type" {
15081527 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15091528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15101529 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1530 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15111531
15121532 const S = struct {
15131533 fn doTheTest() !void {
......@@ -1565,6 +1585,7 @@ test "@reduce on bool vector" {
15651585test "bitcast vector to array of smaller vectors" {
15661586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15671587 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1588 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15681589
15691590 const u8x32 = @Vector(32, u8);
15701591 const u8x64 = @Vector(64, u8);
test/behavior/void.zig+1
......@@ -21,6 +21,7 @@ test "compare void with void compile time known" {
2121test "iterate over a void slice" {
2222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
2526 var j: usize = 0;
2627 for (times(10), 0..) |_, i| {
test/behavior/while.zig+4
......@@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 {
3838}
3939
4040test "while with continue expression" {
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
42
4143 var sum: i32 = 0;
4244 {
4345 var i: i32 = 0;
......@@ -158,6 +160,7 @@ test "while with optional as condition with else" {
158160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
159161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
160162 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
161164
162165 numbers_left = 10;
163166 var sum: i32 = 0;
......@@ -175,6 +178,7 @@ test "while with optional as condition with else" {
175178test "while with error union condition" {
176179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177180 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
181 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
178182
179183 numbers_left = 10;
180184 var sum: i32 = 0;
test/tests.zig+13
......@@ -140,6 +140,15 @@ const test_targets = blk: {
140140 .use_llvm = false,
141141 .use_lld = false,
142142 },
143 .{
144 .target = std.Target.Query.parse(.{
145 .arch_os_abi = "spirv64-vulkan",
146 .cpu_features = "vulkan_v1_2+int8+int16+int64+float16+float64",
147 }) catch unreachable,
148 .use_llvm = false,
149 .use_lld = false,
150 .skip_modules = &.{ "c-import", "universal-libc", "std" },
151 },
143152 // https://github.com/ziglang/zig/issues/13623
144153 //.{
145154 // .target = .{
......@@ -1583,6 +1592,10 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
15831592 run.setName(b.fmt("run test {s}", .{qualified_name}));
15841593
15851594 step.dependOn(&run.step);
1595 } else if (target.cpu.arch.isSpirV()) {
1596 // Don't run spirv binaries
1597 _ = these_tests.getEmittedBin();
1598 step.dependOn(&these_tests.step);
15861599 } else {
15871600 const run = b.addRunArtifact(these_tests);
15881601 run.skip_foreign_checks = true;