authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-05-12 14:46:20-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-05-12 14:46:20-07:00
log88d275199c8807912f859e9f2b689700e3866689
tree61157f4fb8ab135930ebfee3d40f4eede9b568ae
parent6547d233125199b16644c0f7504793490af67926
parentd61dc3a5a2320d1adda759cf5f90aaf817cb9ca2
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #15240 from Snektron/spirv-basic

spirv: attempting to get the 'basic' behavior tests running

181 files changed, 1721 insertions(+), 145 deletions(-)

lib/std/builtin.zig+3
...@@ -836,6 +836,9 @@ pub const CompilerBackend = enum(u64) {...@@ -836,6 +836,9 @@ pub const CompilerBackend = enum(u64) {
836 /// The reference implementation self-hosted compiler of Zig, using the836 /// The reference implementation self-hosted compiler of Zig, using the
837 /// sparc64 backend.837 /// sparc64 backend.
838 stage2_sparc64 = 10,838 stage2_sparc64 = 10,
839 /// The reference implementation self-hosted compiler of Zig, using the
840 /// spirv backend.
841 stage2_spirv64 = 11,
839842
840 _,843 _,
841};844};
lib/std/target.zig+11-1
...@@ -2220,6 +2220,17 @@ pub const Target = struct {...@@ -2220,6 +2220,17 @@ pub const Target = struct {
2220 .longdouble => return 128,2220 .longdouble => return 128,
2221 },2221 },
22222222
2223 .opencl => switch (c_type) {
2224 .char => return 8,
2225 .short, .ushort => return 16,
2226 .int, .uint, .float => return 32,
2227 .long, .ulong, .double => return 64,
2228 .longlong, .ulonglong => return 128,
2229 // Note: The OpenCL specification does not guarantee a particular size for long double,
2230 // but clang uses 128 bits.
2231 .longdouble => return 128,
2232 },
2233
2223 .cloudabi,2234 .cloudabi,
2224 .kfreebsd,2235 .kfreebsd,
2225 .lv2,2236 .lv2,
...@@ -2234,7 +2245,6 @@ pub const Target = struct {...@@ -2234,7 +2245,6 @@ pub const Target = struct {
2234 .contiki,2245 .contiki,
2235 .hermit,2246 .hermit,
2236 .hurd,2247 .hurd,
2237 .opencl,
2238 .glsl450,2248 .glsl450,
2239 .vulkan,2249 .vulkan,
2240 .driverkit,2250 .driverkit,
src/Compilation.zig+1
...@@ -5076,6 +5076,7 @@ pub fn getZigBackend(comp: Compilation) std.builtin.CompilerBackend {...@@ -5076,6 +5076,7 @@ pub fn getZigBackend(comp: Compilation) std.builtin.CompilerBackend {
5076 .aarch64, .aarch64_be, .aarch64_32 => .stage2_aarch64,5076 .aarch64, .aarch64_be, .aarch64_32 => .stage2_aarch64,
5077 .riscv64 => .stage2_riscv64,5077 .riscv64 => .stage2_riscv64,
5078 .sparc64 => .stage2_sparc64,5078 .sparc64 => .stage2_sparc64,
5079 .spirv64 => .stage2_spirv64,
5079 else => .other,5080 else => .other,
5080 };5081 };
5081}5082}
src/codegen/spirv.zig+467-137
...@@ -238,6 +238,7 @@ pub const DeclGen = struct {...@@ -238,6 +238,7 @@ pub const DeclGen = struct {
238 else => unreachable,238 else => unreachable,
239 };239 };
240 const spv_decl_index = try self.resolveDecl(fn_decl_index);240 const spv_decl_index = try self.resolveDecl(fn_decl_index);
241 try self.func.decl_deps.put(self.spv.gpa, spv_decl_index, {});
241 return self.spv.declPtr(spv_decl_index).result_id;242 return self.spv.declPtr(spv_decl_index).result_id;
242 }243 }
243244
...@@ -402,12 +403,44 @@ pub const DeclGen = struct {...@@ -402,12 +403,44 @@ pub const DeclGen = struct {
402 return result_id;403 return result_id;
403 }404 }
404405
405 fn genUndef(self: *DeclGen, ty_ref: SpvType.Ref) Error!IdRef {406 fn constUndef(self: *DeclGen, ty_ref: SpvType.Ref) !IdRef {
406 const result_id = self.spv.allocId();407 const result_id = self.spv.allocId();
407 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpUndef, .{ .id_result_type = self.typeId(ty_ref), .id_result = result_id });408 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpUndef, .{
409 .id_result_type = self.typeId(ty_ref),
410 .id_result = result_id,
411 });
408 return result_id;412 return result_id;
409 }413 }
410414
415 fn constNull(self: *DeclGen, ty_ref: SpvType.Ref) !IdRef {
416 const result_id = self.spv.allocId();
417 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpConstantNull, .{
418 .id_result_type = self.typeId(ty_ref),
419 .id_result = result_id,
420 });
421 return result_id;
422 }
423
424 fn constBool(self: *DeclGen, value: bool, repr: Repr) !IdRef {
425 switch (repr) {
426 .indirect => {
427 const int_ty_ref = try self.intType(.unsigned, 1);
428 return self.constInt(int_ty_ref, @boolToInt(value));
429 },
430 .direct => {
431 const bool_ty_ref = try self.resolveType(Type.bool, .direct);
432 const result_id = self.spv.allocId();
433 const operands = .{ .id_result_type = self.typeId(bool_ty_ref), .id_result = result_id };
434 if (value) {
435 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpConstantTrue, operands);
436 } else {
437 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpConstantFalse, operands);
438 }
439 return result_id;
440 },
441 }
442 }
443
411 const IndirectConstantLowering = struct {444 const IndirectConstantLowering = struct {
412 const undef = 0xAA;445 const undef = 0xAA;
413446
...@@ -427,7 +460,7 @@ pub const DeclGen = struct {...@@ -427,7 +460,7 @@ pub const DeclGen = struct {
427 /// If full, its flushed.460 /// If full, its flushed.
428 partial_word: std.BoundedArray(u8, @sizeOf(Word)) = .{},461 partial_word: std.BoundedArray(u8, @sizeOf(Word)) = .{},
429 /// The declaration dependencies of the constant we are lowering.462 /// The declaration dependencies of the constant we are lowering.
430 decl_deps: std.ArrayList(SpvModule.Decl.Index),463 decl_deps: std.AutoArrayHashMap(SpvModule.Decl.Index, void),
431464
432 /// Utility function to get the section that instructions should be lowered to.465 /// Utility function to get the section that instructions should be lowered to.
433 fn section(self: *@This()) *SpvSection {466 fn section(self: *@This()) *SpvSection {
...@@ -550,14 +583,15 @@ pub const DeclGen = struct {...@@ -550,14 +583,15 @@ pub const DeclGen = struct {
550 // just generate an empty pointer. Function pointers are represented by usize for now,583 // just generate an empty pointer. Function pointers are represented by usize for now,
551 // though.584 // though.
552 try self.addInt(Type.usize, Value.initTag(.zero));585 try self.addInt(Type.usize, Value.initTag(.zero));
586 // TODO: Add dependency
553 return;587 return;
554 },588 },
555 .extern_fn => unreachable, // TODO589 .extern_fn => unreachable, // TODO
556 else => {590 else => {
557 const result_id = dg.spv.allocId();591 const result_id = dg.spv.allocId();
558 log.debug("addDeclRef {s} = {}", .{ decl.name, result_id.id });592 log.debug("addDeclRef: id = {}, index = {}, name = {s}", .{ result_id.id, @enumToInt(spv_decl_index), decl.name });
559593
560 try self.decl_deps.append(spv_decl_index);594 try self.decl_deps.put(spv_decl_index, {});
561595
562 const decl_id = dg.spv.declPtr(spv_decl_index).result_id;596 const decl_id = dg.spv.declPtr(spv_decl_index).result_id;
563 // TODO: Do we need a storage class cast here?597 // TODO: Do we need a storage class cast here?
...@@ -674,7 +708,7 @@ pub const DeclGen = struct {...@@ -674,7 +708,7 @@ pub const DeclGen = struct {
674 try self.addConstBool(has_payload);708 try self.addConstBool(has_payload);
675 return;709 return;
676 } else if (ty.optionalReprIsPayload()) {710 } else if (ty.optionalReprIsPayload()) {
677 // Optional representation is a nullable pointer.711 // Optional representation is a nullable pointer or slice.
678 if (val.castTag(.opt_payload)) |payload| {712 if (val.castTag(.opt_payload)) |payload| {
679 try self.lower(payload_ty, payload.data);713 try self.lower(payload_ty, payload.data);
680 } else if (has_payload) {714 } else if (has_payload) {
...@@ -765,21 +799,18 @@ pub const DeclGen = struct {...@@ -765,21 +799,18 @@ pub const DeclGen = struct {
765 const is_pl = val.errorUnionIsPayload();799 const is_pl = val.errorUnionIsPayload();
766 const error_val = if (!is_pl) val else Value.initTag(.zero);800 const error_val = if (!is_pl) val else Value.initTag(.zero);
767801
768 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) {802 const eu_layout = dg.errorUnionLayout(payload_ty);
803 if (!eu_layout.payload_has_bits) {
769 return try self.lower(Type.anyerror, error_val);804 return try self.lower(Type.anyerror, error_val);
770 }805 }
771806
772 const payload_align = payload_ty.abiAlignment(target);
773 const error_align = Type.anyerror.abiAlignment(target);
774
775 const payload_size = payload_ty.abiSize(target);807 const payload_size = payload_ty.abiSize(target);
776 const error_size = Type.anyerror.abiAlignment(target);808 const error_size = Type.anyerror.abiAlignment(target);
777 const ty_size = ty.abiSize(target);809 const ty_size = ty.abiSize(target);
778 const padding = ty_size - payload_size - error_size;810 const padding = ty_size - payload_size - error_size;
779
780 const payload_val = if (val.castTag(.eu_payload)) |pl| pl.data else Value.initTag(.undef);811 const payload_val = if (val.castTag(.eu_payload)) |pl| pl.data else Value.initTag(.undef);
781812
782 if (error_align > payload_align) {813 if (eu_layout.error_first) {
783 try self.lower(Type.anyerror, error_val);814 try self.lower(Type.anyerror, error_val);
784 try self.lower(payload_ty, payload_val);815 try self.lower(payload_ty, payload_val);
785 } else {816 } else {
...@@ -832,7 +863,8 @@ pub const DeclGen = struct {...@@ -832,7 +863,8 @@ pub const DeclGen = struct {
832863
833 assert(storage_class != .Generic and storage_class != .Function);864 assert(storage_class != .Generic and storage_class != .Function);
834865
835 log.debug("lowerIndirectConstant: ty = {}, val = {}", .{ ty.fmt(self.module), val.fmtDebug() });866 const var_id = self.spv.allocId();
867 log.debug("lowerIndirectConstant: id = {}, index = {}, ty = {}, val = {}", .{ var_id.id, @enumToInt(spv_decl_index), ty.fmt(self.module), val.fmtDebug() });
836868
837 const section = &self.spv.globals.section;869 const section = &self.spv.globals.section;
838870
...@@ -868,7 +900,7 @@ pub const DeclGen = struct {...@@ -868,7 +900,7 @@ pub const DeclGen = struct {
868 .u32_ty_id = self.typeId(u32_ty_ref),900 .u32_ty_id = self.typeId(u32_ty_ref),
869 .members = std.ArrayList(SpvType.Payload.Struct.Member).init(self.gpa),901 .members = std.ArrayList(SpvType.Payload.Struct.Member).init(self.gpa),
870 .initializers = std.ArrayList(IdRef).init(self.gpa),902 .initializers = std.ArrayList(IdRef).init(self.gpa),
871 .decl_deps = std.ArrayList(SpvModule.Decl.Index).init(self.gpa),903 .decl_deps = std.AutoArrayHashMap(SpvModule.Decl.Index, void).init(self.gpa),
872 };904 };
873905
874 defer icl.members.deinit();906 defer icl.members.deinit();
...@@ -888,7 +920,6 @@ pub const DeclGen = struct {...@@ -888,7 +920,6 @@ pub const DeclGen = struct {
888 .constituents = icl.initializers.items,920 .constituents = icl.initializers.items,
889 });921 });
890922
891 const var_id = self.spv.allocId();
892 self.spv.globalPtr(spv_decl_index).?.result_id = var_id;923 self.spv.globalPtr(spv_decl_index).?.result_id = var_id;
893 try section.emit(self.spv.gpa, .OpVariable, .{924 try section.emit(self.spv.gpa, .OpVariable, .{
894 .id_result_type = self.typeId(ptr_constant_struct_ty_ref),925 .id_result_type = self.typeId(ptr_constant_struct_ty_ref),
...@@ -922,7 +953,7 @@ pub const DeclGen = struct {...@@ -922,7 +953,7 @@ pub const DeclGen = struct {
922 });953 });
923 }954 }
924955
925 try self.spv.declareDeclDeps(spv_decl_index, icl.decl_deps.items);956 try self.spv.declareDeclDeps(spv_decl_index, icl.decl_deps.keys());
926 self.spv.endGlobal(spv_decl_index, begin_inst);957 self.spv.endGlobal(spv_decl_index, begin_inst);
927 }958 }
928959
...@@ -948,11 +979,11 @@ pub const DeclGen = struct {...@@ -948,11 +979,11 @@ pub const DeclGen = struct {
948979
949 switch (ty.zigTypeTag()) {980 switch (ty.zigTypeTag()) {
950 .Int => {981 .Int => {
951 const int_bits = if (ty.isSignedInt())982 if (ty.isSignedInt()) {
952 @bitCast(u64, val.toSignedInt(target))983 try self.genConstInt(result_ty_ref, result_id, val.toSignedInt(target));
953 else984 } else {
954 val.toUnsignedInt(target);985 try self.genConstInt(result_ty_ref, result_id, val.toUnsignedInt(target));
955 try self.genConstInt(result_ty_ref, result_id, int_bits);986 }
956 },987 },
957 .Bool => {988 .Bool => {
958 const operands = .{ .id_result_type = result_ty_id, .id_result = result_id };989 const operands = .{ .id_result_type = result_ty_id, .id_result = result_id };
...@@ -978,7 +1009,8 @@ pub const DeclGen = struct {...@@ -978,7 +1009,8 @@ pub const DeclGen = struct {
978 false,1009 false,
979 alignment,1010 alignment,
980 );1011 );
981 try self.func.decl_deps.append(self.spv.gpa, spv_decl_index);1012 log.debug("indirect constant: index = {}", .{@enumToInt(spv_decl_index)});
1013 try self.func.decl_deps.put(self.spv.gpa, spv_decl_index, {});
9821014
983 try self.func.body.emit(self.spv.gpa, .OpLoad, .{1015 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
984 .id_result_type = result_ty_id,1016 .id_result_type = result_ty_id,
...@@ -1260,7 +1292,7 @@ pub const DeclGen = struct {...@@ -1260,7 +1292,7 @@ pub const DeclGen = struct {
12601292
1261 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);1293 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);
1262 if (ty.optionalReprIsPayload()) {1294 if (ty.optionalReprIsPayload()) {
1263 // Optional is actually a pointer.1295 // Optional is actually a pointer or a slice.
1264 return payload_ty_ref;1296 return payload_ty_ref;
1265 }1297 }
12661298
...@@ -1277,18 +1309,16 @@ pub const DeclGen = struct {...@@ -1277,18 +1309,16 @@ pub const DeclGen = struct {
1277 .ErrorUnion => {1309 .ErrorUnion => {
1278 const payload_ty = ty.errorUnionPayload();1310 const payload_ty = ty.errorUnionPayload();
1279 const error_ty_ref = try self.resolveType(Type.anyerror, .indirect);1311 const error_ty_ref = try self.resolveType(Type.anyerror, .indirect);
1280 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) {1312
1313 const eu_layout = self.errorUnionLayout(payload_ty);
1314 if (!eu_layout.payload_has_bits) {
1281 return error_ty_ref;1315 return error_ty_ref;
1282 }1316 }
12831317
1284 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);1318 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);
12851319
1286 const payload_align = payload_ty.abiAlignment(target);
1287 const error_align = Type.anyerror.abiAlignment(target);
1288
1289 var members = std.BoundedArray(SpvType.Payload.Struct.Member, 2){};1320 var members = std.BoundedArray(SpvType.Payload.Struct.Member, 2){};
1290 // Similar to unions, we're going to put the most aligned member first.1321 if (eu_layout.error_first) {
1291 if (error_align > payload_align) {
1292 // Put the error first1322 // Put the error first
1293 members.appendAssumeCapacity(.{ .ty = error_ty_ref, .name = "error" });1323 members.appendAssumeCapacity(.{ .ty = error_ty_ref, .name = "error" });
1294 members.appendAssumeCapacity(.{ .ty = payload_ty_ref, .name = "payload" });1324 members.appendAssumeCapacity(.{ .ty = payload_ty_ref, .name = "payload" });
...@@ -1336,6 +1366,34 @@ pub const DeclGen = struct {...@@ -1336,6 +1366,34 @@ pub const DeclGen = struct {
1336 };1366 };
1337 }1367 }
13381368
1369 const ErrorUnionLayout = struct {
1370 payload_has_bits: bool,
1371 error_first: bool,
1372
1373 fn errorFieldIndex(self: @This()) u32 {
1374 assert(self.payload_has_bits);
1375 return if (self.error_first) 0 else 1;
1376 }
1377
1378 fn payloadFieldIndex(self: @This()) u32 {
1379 assert(self.payload_has_bits);
1380 return if (self.error_first) 1 else 0;
1381 }
1382 };
1383
1384 fn errorUnionLayout(self: *DeclGen, payload_ty: Type) ErrorUnionLayout {
1385 const target = self.getTarget();
1386
1387 const error_align = Type.anyerror.abiAlignment(target);
1388 const payload_align = payload_ty.abiAlignment(target);
1389
1390 const error_first = error_align > payload_align;
1391 return .{
1392 .payload_has_bits = payload_ty.hasRuntimeBitsIgnoreComptime(),
1393 .error_first = error_first,
1394 };
1395 }
1396
1339 /// The SPIR-V backend is not yet advanced enough to support the std testing infrastructure.1397 /// The SPIR-V backend is not yet advanced enough to support the std testing infrastructure.
1340 /// In order to be able to run tests, we "temporarily" lower test kernels into separate entry-1398 /// In order to be able to run tests, we "temporarily" lower test kernels into separate entry-
1341 /// points. The test executor will then be able to invoke these to run the tests.1399 /// points. The test executor will then be able to invoke these to run the tests.
...@@ -1416,7 +1474,7 @@ pub const DeclGen = struct {...@@ -1416,7 +1474,7 @@ pub const DeclGen = struct {
1416 const spv_decl_index = try self.resolveDecl(self.decl_index);1474 const spv_decl_index = try self.resolveDecl(self.decl_index);
14171475
1418 const decl_id = self.spv.declPtr(spv_decl_index).result_id;1476 const decl_id = self.spv.declPtr(spv_decl_index).result_id;
1419 log.debug("genDecl {s} = {}", .{ decl.name, decl_id });1477 log.debug("genDecl: id = {}, index = {}, name = {s}", .{ decl_id.id, @enumToInt(spv_decl_index), decl.name });
14201478
1421 if (decl.val.castTag(.function)) |_| {1479 if (decl.val.castTag(.function)) |_| {
1422 assert(decl.ty.zigTypeTag() == .Fn);1480 assert(decl.ty.zigTypeTag() == .Fn);
...@@ -1500,6 +1558,93 @@ pub const DeclGen = struct {...@@ -1500,6 +1558,93 @@ pub const DeclGen = struct {
1500 }1558 }
1501 }1559 }
15021560
1561 /// Convert representation from indirect (in memory) to direct (in 'register')
1562 /// This converts the argument type from resolveType(ty, .indirect) to resolveType(ty, .direct).
1563 fn convertToDirect(self: *DeclGen, ty: Type, operand_id: IdRef) !IdRef {
1564 // const direct_ty_ref = try self.resolveType(ty, .direct);
1565 return switch (ty.zigTypeTag()) {
1566 .Bool => blk: {
1567 const direct_bool_ty_ref = try self.resolveType(ty, .direct);
1568 const indirect_bool_ty_ref = try self.resolveType(ty, .indirect);
1569 const zero_id = try self.constInt(indirect_bool_ty_ref, 0);
1570 const result_id = self.spv.allocId();
1571 try self.func.body.emit(self.spv.gpa, .OpINotEqual, .{
1572 .id_result_type = self.typeId(direct_bool_ty_ref),
1573 .id_result = result_id,
1574 .operand_1 = operand_id,
1575 .operand_2 = zero_id,
1576 });
1577 break :blk result_id;
1578 },
1579 else => operand_id,
1580 };
1581 }
1582
1583 /// Convert representation from direct (in 'register) to direct (in memory)
1584 /// This converts the argument type from resolveType(ty, .direct) to resolveType(ty, .indirect).
1585 fn convertToIndirect(self: *DeclGen, ty: Type, operand_id: IdRef) !IdRef {
1586 return switch (ty.zigTypeTag()) {
1587 .Bool => blk: {
1588 const indirect_bool_ty_ref = try self.resolveType(ty, .indirect);
1589 const zero_id = try self.constInt(indirect_bool_ty_ref, 0);
1590 const one_id = try self.constInt(indirect_bool_ty_ref, 1);
1591 const result_id = self.spv.allocId();
1592 try self.func.body.emit(self.spv.gpa, .OpSelect, .{
1593 .id_result_type = self.typeId(indirect_bool_ty_ref),
1594 .id_result = result_id,
1595 .condition = operand_id,
1596 .object_1 = one_id,
1597 .object_2 = zero_id,
1598 });
1599 break :blk result_id;
1600 },
1601 else => operand_id,
1602 };
1603 }
1604
1605 fn extractField(self: *DeclGen, result_ty: Type, object: IdRef, field: u32) !IdRef {
1606 const result_ty_ref = try self.resolveType(result_ty, .indirect);
1607 const result_id = self.spv.allocId();
1608 const indexes = [_]u32{field};
1609 try self.func.body.emit(self.spv.gpa, .OpCompositeExtract, .{
1610 .id_result_type = self.typeId(result_ty_ref),
1611 .id_result = result_id,
1612 .composite = object,
1613 .indexes = &indexes,
1614 });
1615 // Convert bools; direct structs have their field types as indirect values.
1616 return try self.convertToDirect(result_ty, result_id);
1617 }
1618
1619 fn load(self: *DeclGen, ptr_ty: Type, ptr_id: IdRef) !IdRef {
1620 const value_ty = ptr_ty.childType();
1621 const indirect_value_ty_ref = try self.resolveType(value_ty, .indirect);
1622 const result_id = self.spv.allocId();
1623 const access = spec.MemoryAccess.Extended{
1624 .Volatile = ptr_ty.isVolatilePtr(),
1625 };
1626 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
1627 .id_result_type = self.typeId(indirect_value_ty_ref),
1628 .id_result = result_id,
1629 .pointer = ptr_id,
1630 .memory_access = access,
1631 });
1632 return try self.convertToDirect(value_ty, result_id);
1633 }
1634
1635 fn store(self: *DeclGen, ptr_ty: Type, ptr_id: IdRef, value_id: IdRef) !void {
1636 const value_ty = ptr_ty.childType();
1637 const indirect_value_id = try self.convertToIndirect(value_ty, value_id);
1638 const access = spec.MemoryAccess.Extended{
1639 .Volatile = ptr_ty.isVolatilePtr(),
1640 };
1641 try self.func.body.emit(self.spv.gpa, .OpStore, .{
1642 .pointer = ptr_id,
1643 .object = indirect_value_id,
1644 .memory_access = access,
1645 });
1646 }
1647
1503 fn genBody(self: *DeclGen, body: []const Air.Inst.Index) Error!void {1648 fn genBody(self: *DeclGen, body: []const Air.Inst.Index) Error!void {
1504 for (body) |inst| {1649 for (body) |inst| {
1505 try self.genInst(inst);1650 try self.genInst(inst);
...@@ -1543,9 +1688,9 @@ pub const DeclGen = struct {...@@ -1543,9 +1688,9 @@ pub const DeclGen = struct {
15431688
1544 .shl => try self.airShift(inst, .OpShiftLeftLogical),1689 .shl => try self.airShift(inst, .OpShiftLeftLogical),
15451690
1546 .bitcast => try self.airBitcast(inst),1691 .bitcast => try self.airBitcast(inst),
1547 .intcast => try self.airIntcast(inst),1692 .intcast, .trunc => try self.airIntcast(inst),
1548 .not => try self.airNot(inst),1693 .not => try self.airNot(inst),
15491694
1550 .slice_ptr => try self.airSliceField(inst, 0),1695 .slice_ptr => try self.airSliceField(inst, 0),
1551 .slice_len => try self.airSliceField(inst, 1),1696 .slice_len => try self.airSliceField(inst, 1),
...@@ -1573,20 +1718,30 @@ pub const DeclGen = struct {...@@ -1573,20 +1718,30 @@ pub const DeclGen = struct {
1573 .ret_ptr => try self.airAlloc(inst),1718 .ret_ptr => try self.airAlloc(inst),
1574 .block => try self.airBlock(inst),1719 .block => try self.airBlock(inst),
15751720
1576 .load => try self.airLoad(inst),1721 .load => try self.airLoad(inst),
1577 .store => return self.airStore(inst),1722 .store, .store_safe => return self.airStore(inst),
15781723
1579 .br => return self.airBr(inst),1724 .br => return self.airBr(inst),
1580 .breakpoint => return,1725 .breakpoint => return,
1581 .cond_br => return self.airCondBr(inst),1726 .cond_br => return self.airCondBr(inst),
1582 .constant => unreachable,1727 .constant => unreachable,
1583 .const_ty => unreachable,1728 .const_ty => unreachable,
1584 .dbg_stmt => return self.airDbgStmt(inst),1729 .dbg_stmt => return self.airDbgStmt(inst),
1585 .loop => return self.airLoop(inst),1730 .loop => return self.airLoop(inst),
1586 .ret => return self.airRet(inst),1731 .ret => return self.airRet(inst),
1587 .ret_load => return self.airRetLoad(inst),1732 .ret_load => return self.airRetLoad(inst),
1588 .switch_br => return self.airSwitchBr(inst),1733 .@"try" => try self.airTry(inst),
1589 .unreach => return self.airUnreach(),1734 .switch_br => return self.airSwitchBr(inst),
1735 .unreach, .trap => return self.airUnreach(),
1736
1737 .unwrap_errunion_err => try self.airErrUnionErr(inst),
1738 .wrap_errunion_err => try self.airWrapErrUnionErr(inst),
1739
1740 .is_null => try self.airIsNull(inst, .is_null),
1741 .is_non_null => try self.airIsNull(inst, .is_non_null),
1742
1743 .optional_payload => try self.airUnwrapOptional(inst),
1744 .wrap_optional => try self.airWrapOptional(inst),
15901745
1591 .assembly => try self.airAssembly(inst),1746 .assembly => try self.airAssembly(inst),
15921747
...@@ -1749,19 +1904,17 @@ pub const DeclGen = struct {...@@ -1749,19 +1904,17 @@ pub const DeclGen = struct {
1749 .float, .bool => unreachable,1904 .float, .bool => unreachable,
1750 }1905 }
17511906
1752 const operand_ty_id = try self.resolveTypeId(operand_ty);1907 // The operand type must be the same as the result type in SPIR-V.
1753 const result_type_id = try self.resolveTypeId(result_ty);1908 const operand_ty_ref = try self.resolveType(operand_ty, .direct);
17541909 const operand_ty_id = self.typeId(operand_ty_ref);
1755 const overflow_member_ty = try self.intType(.unsigned, info.bits);
1756 const overflow_member_ty_id = self.typeId(overflow_member_ty);
17571910
1758 const op_result_id = blk: {1911 const op_result_id = blk: {
1759 // Construct the SPIR-V result type.1912 // Construct the SPIR-V result type.
1760 // It is almost the same as the zig one, except that the fields must be the same type1913 // It is almost the same as the zig one, except that the fields must be the same type
1761 // and they must be unsigned.1914 // and they must be unsigned.
1762 const overflow_result_ty_ref = try self.spv.simpleStructType(&.{1915 const overflow_result_ty_ref = try self.spv.simpleStructType(&.{
1763 .{ .ty = overflow_member_ty, .name = "res" },1916 .{ .ty = operand_ty_ref, .name = "res" },
1764 .{ .ty = overflow_member_ty, .name = "ov" },1917 .{ .ty = operand_ty_ref, .name = "ov" },
1765 });1918 });
1766 const result_id = self.spv.allocId();1919 const result_id = self.spv.allocId();
1767 try self.func.body.emit(self.spv.gpa, .OpIAddCarry, .{1920 try self.func.body.emit(self.spv.gpa, .OpIAddCarry, .{
...@@ -1775,11 +1928,13 @@ pub const DeclGen = struct {...@@ -1775,11 +1928,13 @@ pub const DeclGen = struct {
17751928
1776 // Now convert the SPIR-V flavor result into a Zig-flavor result.1929 // Now convert the SPIR-V flavor result into a Zig-flavor result.
1777 // First, extract the two fields.1930 // First, extract the two fields.
1778 const unsigned_result = try self.extractField(overflow_member_ty_id, op_result_id, 0);1931 const unsigned_result = try self.extractField(operand_ty, op_result_id, 0);
1779 const overflow = try self.extractField(overflow_member_ty_id, op_result_id, 1);1932 const overflow = try self.extractField(operand_ty, op_result_id, 1);
17801933
1781 // We need to convert the results to the types that Zig expects here.1934 // We need to convert the results to the types that Zig expects here.
1782 // The `result` is the same type except unsigned, so we can just bitcast that.1935 // The `result` is the same type except unsigned, so we can just bitcast that.
1936 // TODO: This can be removed in Kernels as there are only unsigned ints. Maybe for
1937 // shaders as well?
1783 const result = try self.bitcast(operand_ty_id, unsigned_result);1938 const result = try self.bitcast(operand_ty_id, unsigned_result);
17841939
1785 // The overflow needs to be converted into whatever is used to represent it in Zig.1940 // The overflow needs to be converted into whatever is used to represent it in Zig.
...@@ -1802,7 +1957,7 @@ pub const DeclGen = struct {...@@ -1802,7 +1957,7 @@ pub const DeclGen = struct {
1802 const result_id = self.spv.allocId();1957 const result_id = self.spv.allocId();
1803 const constituents = [_]IdRef{ result, casted_overflow };1958 const constituents = [_]IdRef{ result, casted_overflow };
1804 try self.func.body.emit(self.spv.gpa, .OpCompositeConstruct, .{1959 try self.func.body.emit(self.spv.gpa, .OpCompositeConstruct, .{
1805 .id_result_type = result_type_id,1960 .id_result_type = operand_ty_id,
1806 .id_result = result_id,1961 .id_result = result_id,
1807 .constituents = &constituents,1962 .constituents = &constituents,
1808 });1963 });
...@@ -1954,24 +2109,14 @@ pub const DeclGen = struct {...@@ -1954,24 +2109,14 @@ pub const DeclGen = struct {
1954 return result_id;2109 return result_id;
1955 }2110 }
19562111
1957 fn extractField(self: *DeclGen, result_ty: IdResultType, object: IdRef, field: u32) !IdRef {
1958 const result_id = self.spv.allocId();
1959 const indexes = [_]u32{field};
1960 try self.func.body.emit(self.spv.gpa, .OpCompositeExtract, .{
1961 .id_result_type = result_ty,
1962 .id_result = result_id,
1963 .composite = object,
1964 .indexes = &indexes,
1965 });
1966 return result_id;
1967 }
1968
1969 fn airSliceField(self: *DeclGen, inst: Air.Inst.Index, field: u32) !?IdRef {2112 fn airSliceField(self: *DeclGen, inst: Air.Inst.Index, field: u32) !?IdRef {
1970 if (self.liveness.isUnused(inst)) return null;2113 if (self.liveness.isUnused(inst)) return null;
1971 const ty_op = self.air.instructions.items(.data)[inst].ty_op;2114 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2115 const field_ty = self.air.typeOfIndex(inst);
2116 const operand_id = try self.resolve(ty_op.operand);
1972 return try self.extractField(2117 return try self.extractField(
1973 try self.resolveTypeId(self.air.typeOfIndex(inst)),2118 field_ty,
1974 try self.resolve(ty_op.operand),2119 operand_id,
1975 field,2120 field,
1976 );2121 );
1977 }2122 }
...@@ -2264,15 +2409,15 @@ pub const DeclGen = struct {...@@ -2264,15 +2409,15 @@ pub const DeclGen = struct {
2264 return null;2409 return null;
22652410
2266 // Combine the result from the blocks using the Phi instruction.2411 // Combine the result from the blocks using the Phi instruction.
2267
2268 const result_id = self.spv.allocId();2412 const result_id = self.spv.allocId();
22692413
2270 // TODO: OpPhi is limited in the types that it may produce, such as pointers. Figure out which other types2414 // TODO: OpPhi is limited in the types that it may produce, such as pointers. Figure out which other types
2271 // are not allowed to be created from a phi node, and throw an error for those.2415 // are not allowed to be created from a phi node, and throw an error for those.
2272 const result_type_id = try self.resolveTypeId(ty);2416 const result_type_id = try self.resolveTypeId(ty);
2273 _ = result_type_id;
22742417
2275 try self.func.body.emitRaw(self.spv.gpa, .OpPhi, 2 + @intCast(u16, incoming_blocks.items.len * 2)); // result type + result + variable/parent...2418 try self.func.body.emitRaw(self.spv.gpa, .OpPhi, 2 + @intCast(u16, incoming_blocks.items.len * 2)); // result type + result + variable/parent...
2419 self.func.body.writeOperand(spec.IdResultType, result_type_id);
2420 self.func.body.writeOperand(spec.IdRef, result_id);
22762421
2277 for (incoming_blocks.items) |incoming| {2422 for (incoming_blocks.items) |incoming| {
2278 self.func.body.writeOperand(spec.PairIdRefIdRef, .{ incoming.break_value_id, incoming.src_label_id });2423 self.func.body.writeOperand(spec.PairIdRefIdRef, .{ incoming.break_value_id, incoming.src_label_id });
...@@ -2340,71 +2485,20 @@ pub const DeclGen = struct {...@@ -2340,71 +2485,20 @@ pub const DeclGen = struct {
2340 return try self.load(ptr_ty, operand);2485 return try self.load(ptr_ty, operand);
2341 }2486 }
23422487
2343 fn load(self: *DeclGen, ptr_ty: Type, ptr: IdRef) !IdRef {
2344 const value_ty = ptr_ty.childType();
2345 const direct_result_ty_ref = try self.resolveType(value_ty, .direct);
2346 const indirect_result_ty_ref = try self.resolveType(value_ty, .indirect);
2347 const result_id = self.spv.allocId();
2348 const access = spec.MemoryAccess.Extended{
2349 .Volatile = ptr_ty.isVolatilePtr(),
2350 };
2351 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
2352 .id_result_type = self.typeId(indirect_result_ty_ref),
2353 .id_result = result_id,
2354 .pointer = ptr,
2355 .memory_access = access,
2356 });
2357 if (value_ty.zigTypeTag() == .Bool) {
2358 // Convert indirect bool to direct bool
2359 const zero_id = try self.constInt(indirect_result_ty_ref, 0);
2360 const casted_result_id = self.spv.allocId();
2361 try self.func.body.emit(self.spv.gpa, .OpINotEqual, .{
2362 .id_result_type = self.typeId(direct_result_ty_ref),
2363 .id_result = casted_result_id,
2364 .operand_1 = result_id,
2365 .operand_2 = zero_id,
2366 });
2367 return casted_result_id;
2368 }
2369 return result_id;
2370 }
2371
2372 fn airStore(self: *DeclGen, inst: Air.Inst.Index) !void {2488 fn airStore(self: *DeclGen, inst: Air.Inst.Index) !void {
2373 const bin_op = self.air.instructions.items(.data)[inst].bin_op;2489 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
2374 const ptr_ty = self.air.typeOf(bin_op.lhs);2490 const ptr_ty = self.air.typeOf(bin_op.lhs);
2375 const ptr = try self.resolve(bin_op.lhs);2491 const ptr = try self.resolve(bin_op.lhs);
2376 const value = try self.resolve(bin_op.rhs);2492 const value = try self.resolve(bin_op.rhs);
2493 const ptr_ty_ref = try self.resolveType(ptr_ty, .direct);
23772494
2378 try self.store(ptr_ty, ptr, value);2495 const val_is_undef = if (self.air.value(bin_op.rhs)) |val| val.isUndefDeep() else false;
2379 }2496 if (val_is_undef) {
23802497 const undef = try self.constUndef(ptr_ty_ref);
2381 fn store(self: *DeclGen, ptr_ty: Type, ptr: IdRef, value: IdRef) !void {2498 try self.store(ptr_ty, ptr, undef);
2382 const value_ty = ptr_ty.childType();2499 } else {
2383 const converted_value = switch (value_ty.zigTypeTag()) {2500 try self.store(ptr_ty, ptr, value);
2384 .Bool => blk: {2501 }
2385 const indirect_bool_ty_ref = try self.resolveType(value_ty, .indirect);
2386 const result_id = self.spv.allocId();
2387 const zero = try self.constInt(indirect_bool_ty_ref, 0);
2388 const one = try self.constInt(indirect_bool_ty_ref, 1);
2389 try self.func.body.emit(self.spv.gpa, .OpSelect, .{
2390 .id_result_type = self.typeId(indirect_bool_ty_ref),
2391 .id_result = result_id,
2392 .condition = value,
2393 .object_1 = one,
2394 .object_2 = zero,
2395 });
2396 break :blk result_id;
2397 },
2398 else => value,
2399 };
2400 const access = spec.MemoryAccess.Extended{
2401 .Volatile = ptr_ty.isVolatilePtr(),
2402 };
2403 try self.func.body.emit(self.spv.gpa, .OpStore, .{
2404 .pointer = ptr,
2405 .object = converted_value,
2406 .memory_access = access,
2407 });
2408 }2502 }
24092503
2410 fn airLoop(self: *DeclGen, inst: Air.Inst.Index) !void {2504 fn airLoop(self: *DeclGen, inst: Air.Inst.Index) !void {
...@@ -2451,6 +2545,232 @@ pub const DeclGen = struct {...@@ -2451,6 +2545,232 @@ pub const DeclGen = struct {
2451 });2545 });
2452 }2546 }
24532547
2548 fn airTry(self: *DeclGen, inst: Air.Inst.Index) !?IdRef {
2549 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
2550 const err_union_id = try self.resolve(pl_op.operand);
2551 const extra = self.air.extraData(Air.Try, pl_op.payload);
2552 const body = self.air.extra[extra.end..][0..extra.data.body_len];
2553
2554 const err_union_ty = self.air.typeOf(pl_op.operand);
2555 const payload_ty = self.air.typeOfIndex(inst);
2556
2557 const err_ty_ref = try self.resolveType(Type.anyerror, .direct);
2558 const bool_ty_ref = try self.resolveType(Type.bool, .direct);
2559
2560 const eu_layout = self.errorUnionLayout(payload_ty);
2561
2562 if (!err_union_ty.errorUnionSet().errorSetIsEmpty()) {
2563 const err_id = if (eu_layout.payload_has_bits)
2564 try self.extractField(Type.anyerror, err_union_id, eu_layout.errorFieldIndex())
2565 else
2566 err_union_id;
2567
2568 const zero_id = try self.constInt(err_ty_ref, 0);
2569 const is_err_id = self.spv.allocId();
2570 try self.func.body.emit(self.spv.gpa, .OpINotEqual, .{
2571 .id_result_type = self.typeId(bool_ty_ref),
2572 .id_result = is_err_id,
2573 .operand_1 = err_id,
2574 .operand_2 = zero_id,
2575 });
2576
2577 // When there is an error, we must evaluate `body`. Otherwise we must continue
2578 // with the current body.
2579 // Just generate a new block here, then generate a new block inline for the remainder of the body.
2580
2581 const err_block = self.spv.allocId();
2582 const ok_block = self.spv.allocId();
2583
2584 // TODO: Merge block
2585 try self.func.body.emit(self.spv.gpa, .OpBranchConditional, .{
2586 .condition = is_err_id,
2587 .true_label = err_block,
2588 .false_label = ok_block,
2589 });
2590
2591 try self.beginSpvBlock(err_block);
2592 try self.genBody(body);
2593
2594 try self.beginSpvBlock(ok_block);
2595 // Now just extract the payload, if required.
2596 }
2597 if (self.liveness.isUnused(inst)) {
2598 return null;
2599 }
2600 if (!eu_layout.payload_has_bits) {
2601 return null;
2602 }
2603
2604 return try self.extractField(payload_ty, err_union_id, eu_layout.payloadFieldIndex());
2605 }
2606
2607 fn airErrUnionErr(self: *DeclGen, inst: Air.Inst.Index) !?IdRef {
2608 if (self.liveness.isUnused(inst)) return null;
2609
2610 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2611 const operand_id = try self.resolve(ty_op.operand);
2612 const err_union_ty = self.air.typeOf(ty_op.operand);
2613 const err_ty_ref = try self.resolveType(Type.anyerror, .direct);
2614
2615 if (err_union_ty.errorUnionSet().errorSetIsEmpty()) {
2616 // No error possible, so just return undefined.
2617 return try self.constUndef(err_ty_ref);
2618 }
2619
2620 const payload_ty = err_union_ty.errorUnionPayload();
2621 const eu_layout = self.errorUnionLayout(payload_ty);
2622
2623 if (!eu_layout.payload_has_bits) {
2624 // If no payload, error union is represented by error set.
2625 return operand_id;
2626 }
2627
2628 return try self.extractField(Type.anyerror, operand_id, eu_layout.errorFieldIndex());
2629 }
2630
2631 fn airWrapErrUnionErr(self: *DeclGen, inst: Air.Inst.Index) !?IdRef {
2632 if (self.liveness.isUnused(inst)) return null;
2633
2634 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2635 const err_union_ty = self.air.typeOfIndex(inst);
2636 const payload_ty = err_union_ty.errorUnionPayload();
2637 const operand_id = try self.resolve(ty_op.operand);
2638 const eu_layout = self.errorUnionLayout(payload_ty);
2639
2640 if (!eu_layout.payload_has_bits) {
2641 return operand_id;
2642 }
2643
2644 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);
2645 var members = std.BoundedArray(IdRef, 2){};
2646 const payload_id = try self.constUndef(payload_ty_ref);
2647 if (eu_layout.error_first) {
2648 members.appendAssumeCapacity(operand_id);
2649 members.appendAssumeCapacity(payload_id);
2650 // TODO: ABI padding?
2651 } else {
2652 members.appendAssumeCapacity(payload_id);
2653 members.appendAssumeCapacity(operand_id);
2654 // TODO: ABI padding?
2655 }
2656
2657 const err_union_ty_ref = try self.resolveType(err_union_ty, .direct);
2658 const result_id = self.spv.allocId();
2659 try self.func.body.emit(self.spv.gpa, .OpCompositeConstruct, .{
2660 .id_result_type = self.typeId(err_union_ty_ref),
2661 .id_result = result_id,
2662 .constituents = members.slice(),
2663 });
2664 return result_id;
2665 }
2666
2667 fn airIsNull(self: *DeclGen, inst: Air.Inst.Index, pred: enum { is_null, is_non_null }) !?IdRef {
2668 if (self.liveness.isUnused(inst)) return null;
2669
2670 const un_op = self.air.instructions.items(.data)[inst].un_op;
2671 const operand_id = try self.resolve(un_op);
2672 const optional_ty = self.air.typeOf(un_op);
2673
2674 var buf: Type.Payload.ElemType = undefined;
2675 const payload_ty = optional_ty.optionalChild(&buf);
2676
2677 const bool_ty_ref = try self.resolveType(Type.bool, .direct);
2678
2679 if (optional_ty.optionalReprIsPayload()) {
2680 // Pointer payload represents nullability: pointer or slice.
2681
2682 var ptr_buf: Type.SlicePtrFieldTypeBuffer = undefined;
2683 const ptr_ty = if (payload_ty.isSlice())
2684 payload_ty.slicePtrFieldType(&ptr_buf)
2685 else
2686 payload_ty;
2687
2688 const ptr_id = if (payload_ty.isSlice())
2689 try self.extractField(Type.bool, operand_id, 0)
2690 else
2691 operand_id;
2692
2693 const payload_ty_ref = try self.resolveType(ptr_ty, .direct);
2694 const null_id = try self.constNull(payload_ty_ref);
2695 const result_id = self.spv.allocId();
2696 const operands = .{
2697 .id_result_type = self.typeId(bool_ty_ref),
2698 .id_result = result_id,
2699 .operand_1 = ptr_id,
2700 .operand_2 = null_id,
2701 };
2702 switch (pred) {
2703 .is_null => try self.func.body.emit(self.spv.gpa, .OpPtrEqual, operands),
2704 .is_non_null => try self.func.body.emit(self.spv.gpa, .OpPtrNotEqual, operands),
2705 }
2706 return result_id;
2707 }
2708
2709 const is_non_null_id = if (optional_ty.hasRuntimeBitsIgnoreComptime())
2710 try self.extractField(Type.bool, operand_id, 1)
2711 else
2712 // Optional representation is bool indicating whether the optional is set
2713 operand_id;
2714
2715 return switch (pred) {
2716 .is_null => blk: {
2717 // Invert condition
2718 const result_id = self.spv.allocId();
2719 try self.func.body.emit(self.spv.gpa, .OpLogicalNot, .{
2720 .id_result_type = self.typeId(bool_ty_ref),
2721 .id_result = result_id,
2722 .operand = is_non_null_id,
2723 });
2724 break :blk result_id;
2725 },
2726 .is_non_null => is_non_null_id,
2727 };
2728 }
2729
2730 fn airUnwrapOptional(self: *DeclGen, inst: Air.Inst.Index) !?IdRef {
2731 if (self.liveness.isUnused(inst)) return null;
2732
2733 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2734 const operand_id = try self.resolve(ty_op.operand);
2735 const optional_ty = self.air.typeOf(ty_op.operand);
2736 const payload_ty = self.air.typeOfIndex(inst);
2737
2738 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) return null;
2739
2740 if (optional_ty.optionalReprIsPayload()) {
2741 return operand_id;
2742 }
2743
2744 return try self.extractField(payload_ty, operand_id, 0);
2745 }
2746
2747 fn airWrapOptional(self: *DeclGen, inst: Air.Inst.Index) !?IdRef {
2748 if (self.liveness.isUnused(inst)) return null;
2749
2750 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2751 const payload_ty = self.air.typeOf(ty_op.operand);
2752
2753 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) {
2754 return try self.constBool(true, .direct);
2755 }
2756
2757 const operand_id = try self.resolve(ty_op.operand);
2758 const optional_ty = self.air.typeOfIndex(inst);
2759 if (optional_ty.optionalReprIsPayload()) {
2760 return operand_id;
2761 }
2762
2763 const optional_ty_ref = try self.resolveType(optional_ty, .direct);
2764 const result_id = self.spv.allocId();
2765 const members = [_]IdRef{ operand_id, try self.constBool(true, .indirect) };
2766 try self.func.body.emit(self.spv.gpa, .OpCompositeConstruct, .{
2767 .id_result_type = self.typeId(optional_ty_ref),
2768 .id_result = result_id,
2769 .constituents = &members,
2770 });
2771 return result_id;
2772 }
2773
2454 fn airSwitchBr(self: *DeclGen, inst: Air.Inst.Index) !void {2774 fn airSwitchBr(self: *DeclGen, inst: Air.Inst.Index) !void {
2455 const target = self.getTarget();2775 const target = self.getTarget();
2456 const pl_op = self.air.instructions.items(.data)[inst].pl_op;2776 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
...@@ -2717,19 +3037,29 @@ pub const DeclGen = struct {...@@ -2717,19 +3037,29 @@ pub const DeclGen = struct {
2717 const result_id = self.spv.allocId();3037 const result_id = self.spv.allocId();
2718 const callee_id = try self.resolve(pl_op.operand);3038 const callee_id = try self.resolve(pl_op.operand);
27193039
2720 try self.func.body.emitRaw(self.spv.gpa, .OpFunctionCall, 3 + args.len);3040 const params = try self.gpa.alloc(spec.IdRef, args.len);
2721 self.func.body.writeOperand(spec.IdResultType, result_type_id);3041 defer self.gpa.free(params);
2722 self.func.body.writeOperand(spec.IdResult, result_id);
2723 self.func.body.writeOperand(spec.IdRef, callee_id);
27243042
3043 var n_params: usize = 0;
2725 for (args) |arg| {3044 for (args) |arg| {
3045 // Note: resolve() might emit instructions, so we need to call it
3046 // before starting to emit OpFunctionCall instructions. Hence the
3047 // temporary params buffer.
2726 const arg_id = try self.resolve(arg);3048 const arg_id = try self.resolve(arg);
2727 const arg_ty = self.air.typeOf(arg);3049 const arg_ty = self.air.typeOf(arg);
2728 if (!arg_ty.hasRuntimeBitsIgnoreComptime()) continue;3050 if (!arg_ty.hasRuntimeBitsIgnoreComptime()) continue;
27293051
2730 self.func.body.writeOperand(spec.IdRef, arg_id);3052 params[n_params] = arg_id;
3053 n_params += 1;
2731 }3054 }
27323055
3056 try self.func.body.emit(self.spv.gpa, .OpFunctionCall, .{
3057 .id_result_type = result_type_id,
3058 .id_result = result_id,
3059 .function = callee_id,
3060 .id_ref_3 = params[0..n_params],
3061 });
3062
2733 if (return_type.isNoReturn()) {3063 if (return_type.isNoReturn()) {
2734 try self.func.body.emit(self.spv.gpa, .OpUnreachable, {});3064 try self.func.body.emit(self.spv.gpa, .OpUnreachable, {});
2735 }3065 }
src/codegen/spirv/Module.zig+8-5
...@@ -40,14 +40,14 @@ pub const Fn = struct {...@@ -40,14 +40,14 @@ pub const Fn = struct {
40 /// the end of this function definition.40 /// the end of this function definition.
41 body: Section = .{},41 body: Section = .{},
42 /// The decl dependencies that this function depends on.42 /// The decl dependencies that this function depends on.
43 decl_deps: std.ArrayListUnmanaged(Decl.Index) = .{},43 decl_deps: std.AutoArrayHashMapUnmanaged(Decl.Index, void) = .{},
4444
45 /// Reset this function without deallocating resources, so that45 /// Reset this function without deallocating resources, so that
46 /// it may be used to emit code for another function.46 /// it may be used to emit code for another function.
47 pub fn reset(self: *Fn) void {47 pub fn reset(self: *Fn) void {
48 self.prologue.reset();48 self.prologue.reset();
49 self.body.reset();49 self.body.reset();
50 self.decl_deps.items.len = 0;50 self.decl_deps.clearRetainingCapacity();
51 }51 }
5252
53 /// Free the resources owned by this function.53 /// Free the resources owned by this function.
...@@ -358,7 +358,7 @@ pub fn flush(self: *Module, file: std.fs.File) !void {...@@ -358,7 +358,7 @@ pub fn flush(self: *Module, file: std.fs.File) !void {
358pub fn addFunction(self: *Module, decl_index: Decl.Index, func: Fn) !void {358pub fn addFunction(self: *Module, decl_index: Decl.Index, func: Fn) !void {
359 try self.sections.functions.append(self.gpa, func.prologue);359 try self.sections.functions.append(self.gpa, func.prologue);
360 try self.sections.functions.append(self.gpa, func.body);360 try self.sections.functions.append(self.gpa, func.body);
361 try self.declareDeclDeps(decl_index, func.decl_deps.items);361 try self.declareDeclDeps(decl_index, func.decl_deps.keys());
362}362}
363363
364/// Fetch the result-id of an OpString instruction that encodes the path of the source364/// Fetch the result-id of an OpString instruction that encodes the path of the source
...@@ -393,11 +393,14 @@ pub fn resolveSourceFileName(self: *Module, decl: *ZigDecl) !IdRef {...@@ -393,11 +393,14 @@ pub fn resolveSourceFileName(self: *Module, decl: *ZigDecl) !IdRef {
393/// be emitted at this point.393/// be emitted at this point.
394pub fn resolveType(self: *Module, ty: Type) !Type.Ref {394pub fn resolveType(self: *Module, ty: Type) !Type.Ref {
395 const result = try self.type_cache.getOrPut(self.gpa, ty);395 const result = try self.type_cache.getOrPut(self.gpa, ty);
396 const index = @intToEnum(Type.Ref, result.index);
397
396 if (!result.found_existing) {398 if (!result.found_existing) {
397 result.value_ptr.* = try self.emitType(ty);399 const ref = try self.emitType(ty);
400 self.type_cache.values()[result.index] = ref;
398 }401 }
399402
400 return @intToEnum(Type.Ref, result.index);403 return index;
401}404}
402405
403pub fn resolveTypeId(self: *Module, ty: Type) !IdResultType {406pub fn resolveTypeId(self: *Module, ty: Type) !IdResultType {
test/behavior.zig+2-1
...@@ -241,7 +241,8 @@ test {...@@ -241,7 +241,8 @@ test {
241 builtin.zig_backend != .stage2_x86_64 and241 builtin.zig_backend != .stage2_x86_64 and
242 builtin.zig_backend != .stage2_aarch64 and242 builtin.zig_backend != .stage2_aarch64 and
243 builtin.zig_backend != .stage2_wasm and243 builtin.zig_backend != .stage2_wasm and
244 builtin.zig_backend != .stage2_c)244 builtin.zig_backend != .stage2_c and
245 builtin.zig_backend != .stage2_spirv64)
245 {246 {
246 _ = @import("behavior/bugs/13063.zig");247 _ = @import("behavior/bugs/13063.zig");
247 _ = @import("behavior/bugs/11227.zig");248 _ = @import("behavior/bugs/11227.zig");
test/behavior/align.zig+23
...@@ -19,6 +19,7 @@ test "slicing array of length 1 can not assume runtime index is always zero" {...@@ -19,6 +19,7 @@ test "slicing array of length 1 can not assume runtime index is always zero" {
19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2223
23 var runtime_index: usize = 1;24 var runtime_index: usize = 1;
24 const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];25 const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];
...@@ -32,6 +33,8 @@ test "default alignment allows unspecified in type syntax" {...@@ -32,6 +33,8 @@ test "default alignment allows unspecified in type syntax" {
32}33}
3334
34test "implicitly decreasing pointer alignment" {35test "implicitly decreasing pointer alignment" {
36 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
37
35 const a: u32 align(4) = 3;38 const a: u32 align(4) = 3;
36 const b: u32 align(8) = 4;39 const b: u32 align(8) = 4;
37 try expect(addUnaligned(&a, &b) == 7);40 try expect(addUnaligned(&a, &b) == 7);
...@@ -42,6 +45,8 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {...@@ -42,6 +45,8 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {
42}45}
4346
44test "@alignCast pointers" {47test "@alignCast pointers" {
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
49
45 var x: u32 align(4) = 1;50 var x: u32 align(4) = 1;
46 expectsOnly1(&x);51 expectsOnly1(&x);
47 try expect(x == 2);52 try expect(x == 2);
...@@ -214,6 +219,8 @@ test "alignment and size of structs with 128-bit fields" {...@@ -214,6 +219,8 @@ test "alignment and size of structs with 128-bit fields" {
214}219}
215220
216test "@ptrCast preserves alignment of bigger source" {221test "@ptrCast preserves alignment of bigger source" {
222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
223
217 var x: u32 align(16) = 1234;224 var x: u32 align(16) = 1234;
218 const ptr = @ptrCast(*u8, &x);225 const ptr = @ptrCast(*u8, &x);
219 try expect(@TypeOf(ptr) == *align(16) u8);226 try expect(@TypeOf(ptr) == *align(16) u8);
...@@ -231,6 +238,7 @@ fn fnWithAlignedStack() i32 {...@@ -231,6 +238,7 @@ fn fnWithAlignedStack() i32 {
231test "implicitly decreasing slice alignment" {238test "implicitly decreasing slice alignment" {
232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
234242
235 const a: u32 align(4) = 3;243 const a: u32 align(4) = 3;
236 const b: u32 align(8) = 4;244 const b: u32 align(8) = 4;
...@@ -256,6 +264,7 @@ test "@alignCast slices" {...@@ -256,6 +264,7 @@ test "@alignCast slices" {
256 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
257 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
259268
260 var array align(4) = [_]u32{ 1, 1 };269 var array align(4) = [_]u32{ 1, 1 };
261 const slice = array[0..];270 const slice = array[0..];
...@@ -273,6 +282,7 @@ test "return error union with 128-bit integer" {...@@ -273,6 +282,7 @@ test "return error union with 128-bit integer" {
273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;282 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
276286
277 try expect(3 == try give());287 try expect(3 == try give());
278}288}
...@@ -284,6 +294,7 @@ test "page aligned array on stack" {...@@ -284,6 +294,7 @@ test "page aligned array on stack" {
284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
285 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
287298
288 if (builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) {299 if (builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) {
289 // https://github.com/ziglang/zig/issues/13679300 // https://github.com/ziglang/zig/issues/13679
...@@ -329,6 +340,7 @@ test "implicitly decreasing fn alignment" {...@@ -329,6 +340,7 @@ test "implicitly decreasing fn alignment" {
329 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332344
333 // function alignment is a compile error on wasm32/wasm64345 // function alignment is a compile error on wasm32/wasm64
334 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;346 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -352,6 +364,7 @@ test "@alignCast functions" {...@@ -352,6 +364,7 @@ test "@alignCast functions" {
352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO366 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
367 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
355368
356 // function alignment is a compile error on wasm32/wasm64369 // function alignment is a compile error on wasm32/wasm64
357 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;370 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -395,6 +408,7 @@ test "function align expression depends on generic parameter" {...@@ -395,6 +408,7 @@ test "function align expression depends on generic parameter" {
395408
396test "function callconv expression depends on generic parameter" {409test "function callconv expression depends on generic parameter" {
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398412
399 const S = struct {413 const S = struct {
400 fn doTheTest() !void {414 fn doTheTest() !void {
...@@ -412,6 +426,7 @@ test "function callconv expression depends on generic parameter" {...@@ -412,6 +426,7 @@ test "function callconv expression depends on generic parameter" {
412426
413test "runtime-known array index has best alignment possible" {427test "runtime-known array index has best alignment possible" {
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
429 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
415430
416 // take full advantage of over-alignment431 // take full advantage of over-alignment
417 var array align(4) = [_]u8{ 1, 2, 3, 4 };432 var array align(4) = [_]u8{ 1, 2, 3, 4 };
...@@ -451,6 +466,8 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {...@@ -451,6 +466,8 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {
451}466}
452467
453test "alignment of function with c calling convention" {468test "alignment of function with c calling convention" {
469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
470
454 var runtime_nothing = &nothing;471 var runtime_nothing = &nothing;
455 const casted1 = @ptrCast(*const u8, runtime_nothing);472 const casted1 = @ptrCast(*const u8, runtime_nothing);
456 const casted2 = @ptrCast(*const fn () callconv(.C) void, casted1);473 const casted2 = @ptrCast(*const fn () callconv(.C) void, casted1);
...@@ -468,6 +485,7 @@ test "read 128-bit field from default aligned struct in stack memory" {...@@ -468,6 +485,7 @@ test "read 128-bit field from default aligned struct in stack memory" {
468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
471489
472 var default_aligned = DefaultAligned{490 var default_aligned = DefaultAligned{
473 .nevermind = 1,491 .nevermind = 1,
...@@ -485,6 +503,7 @@ test "read 128-bit field from default aligned struct in global memory" {...@@ -485,6 +503,7 @@ test "read 128-bit field from default aligned struct in global memory" {
485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO505 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
488507
489 try expect(12 == default_aligned_global.badguy);508 try expect(12 == default_aligned_global.badguy);
490}509}
...@@ -493,6 +512,7 @@ test "struct field explicit alignment" {...@@ -493,6 +512,7 @@ test "struct field explicit alignment" {
493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;512 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
494 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;513 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO514 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
515 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
496516
497 const S = struct {517 const S = struct {
498 const Node = struct {518 const Node = struct {
...@@ -537,6 +557,7 @@ test "align(N) on functions" {...@@ -537,6 +557,7 @@ test "align(N) on functions" {
537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO558 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
560 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
540561
541 // This is not supported on MSVC562 // This is not supported on MSVC
542 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) {563 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) {
...@@ -558,6 +579,7 @@ test "comptime alloc alignment" {...@@ -558,6 +579,7 @@ test "comptime alloc alignment" {
558 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
559 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO580 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
582 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
561583
562 comptime var bytes1 = [_]u8{0};584 comptime var bytes1 = [_]u8{0};
563 _ = bytes1;585 _ = bytes1;
...@@ -570,6 +592,7 @@ test "comptime alloc alignment" {...@@ -570,6 +592,7 @@ test "comptime alloc alignment" {
570test "@alignCast null" {592test "@alignCast null" {
571 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;593 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
572 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
573596
574 var ptr: ?*anyopaque = null;597 var ptr: ?*anyopaque = null;
575 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);598 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);
test/behavior/array.zig+30
...@@ -21,6 +21,7 @@ test "arrays" {...@@ -21,6 +21,7 @@ test "arrays" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
25 var array: [5]u32 = undefined;26 var array: [5]u32 = undefined;
2627
...@@ -48,6 +49,7 @@ fn getArrayLen(a: []const u32) usize {...@@ -48,6 +49,7 @@ fn getArrayLen(a: []const u32) usize {
48test "array concat with undefined" {49test "array concat with undefined" {
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5153
52 const S = struct {54 const S = struct {
53 fn doTheTest() !void {55 fn doTheTest() !void {
...@@ -72,6 +74,7 @@ test "array concat with tuple" {...@@ -72,6 +74,7 @@ test "array concat with tuple" {
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7578
76 const array: [2]u8 = .{ 1, 2 };79 const array: [2]u8 = .{ 1, 2 };
77 {80 {
...@@ -86,6 +89,8 @@ test "array concat with tuple" {...@@ -86,6 +89,8 @@ test "array concat with tuple" {
8689
87test "array init with concat" {90test "array init with concat" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
93
89 const a = 'a';94 const a = 'a';
90 var i: [4]u8 = [2]u8{ a, 'b' } ++ [2]u8{ 'c', 'd' };95 var i: [4]u8 = [2]u8{ a, 'b' } ++ [2]u8{ 'c', 'd' };
91 try expect(std.mem.eql(u8, &i, "abcd"));96 try expect(std.mem.eql(u8, &i, "abcd"));
...@@ -94,6 +99,7 @@ test "array init with concat" {...@@ -94,6 +99,7 @@ test "array init with concat" {
94test "array init with mult" {99test "array init with mult" {
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
97103
98 const a = 'a';104 const a = 'a';
99 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;105 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;
...@@ -135,6 +141,7 @@ test "array literal with specified size" {...@@ -135,6 +141,7 @@ test "array literal with specified size" {
135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
138145
139 var array = [2]u8{ 1, 2 };146 var array = [2]u8{ 1, 2 };
140 try expect(array[0] == 1);147 try expect(array[0] == 1);
...@@ -156,6 +163,7 @@ test "array len field" {...@@ -156,6 +163,7 @@ test "array len field" {
156test "array with sentinels" {163test "array with sentinels" {
157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
159167
160 const S = struct {168 const S = struct {
161 fn doTheTest(is_ct: bool) !void {169 fn doTheTest(is_ct: bool) !void {
...@@ -193,6 +201,7 @@ test "nested arrays of strings" {...@@ -193,6 +201,7 @@ test "nested arrays of strings" {
193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
196205
197 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };206 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
198 for (array_of_strings, 0..) |s, i| {207 for (array_of_strings, 0..) |s, i| {
...@@ -222,6 +231,7 @@ test "nested arrays of integers" {...@@ -222,6 +231,7 @@ test "nested arrays of integers" {
222test "implicit comptime in array type size" {231test "implicit comptime in array type size" {
223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225235
226 var arr: [plusOne(10)]bool = undefined;236 var arr: [plusOne(10)]bool = undefined;
227 try expect(arr.len == 11);237 try expect(arr.len == 11);
...@@ -234,6 +244,7 @@ fn plusOne(x: u32) u32 {...@@ -234,6 +244,7 @@ fn plusOne(x: u32) u32 {
234test "single-item pointer to array indexing and slicing" {244test "single-item pointer to array indexing and slicing" {
235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237248
238 try testSingleItemPtrArrayIndexSlice();249 try testSingleItemPtrArrayIndexSlice();
239 comptime try testSingleItemPtrArrayIndexSlice();250 comptime try testSingleItemPtrArrayIndexSlice();
...@@ -259,6 +270,7 @@ fn doSomeMangling(array: *[4]u8) void {...@@ -259,6 +270,7 @@ fn doSomeMangling(array: *[4]u8) void {
259270
260test "implicit cast zero sized array ptr to slice" {271test "implicit cast zero sized array ptr to slice" {
261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO272 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
273 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
262274
263 {275 {
264 var b = "".*;276 var b = "".*;
...@@ -276,6 +288,7 @@ test "anonymous list literal syntax" {...@@ -276,6 +288,7 @@ test "anonymous list literal syntax" {
276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279292
280 const S = struct {293 const S = struct {
281 fn doTheTest() !void {294 fn doTheTest() !void {
...@@ -296,6 +309,7 @@ const Str = struct { a: []Sub };...@@ -296,6 +309,7 @@ const Str = struct { a: []Sub };
296test "set global var array via slice embedded in struct" {309test "set global var array via slice embedded in struct" {
297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
299313
300 var s = Str{ .a = s_array[0..] };314 var s = Str{ .a = s_array[0..] };
301315
...@@ -312,6 +326,7 @@ test "read/write through global variable array of struct fields initialized via...@@ -312,6 +326,7 @@ test "read/write through global variable array of struct fields initialized via
312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO328 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315330
316 const S = struct {331 const S = struct {
317 fn doTheTest() !void {332 fn doTheTest() !void {
...@@ -332,6 +347,7 @@ test "read/write through global variable array of struct fields initialized via...@@ -332,6 +347,7 @@ test "read/write through global variable array of struct fields initialized via
332test "implicit cast single-item pointer" {347test "implicit cast single-item pointer" {
333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
335351
336 try testImplicitCastSingleItemPtr();352 try testImplicitCastSingleItemPtr();
337 comptime try testImplicitCastSingleItemPtr();353 comptime try testImplicitCastSingleItemPtr();
...@@ -351,6 +367,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {...@@ -351,6 +367,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {
351test "comptime evaluating function that takes array by value" {367test "comptime evaluating function that takes array by value" {
352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO369 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
354371
355 const arr = [_]u8{ 1, 2 };372 const arr = [_]u8{ 1, 2 };
356 const x = comptime testArrayByValAtComptime(arr);373 const x = comptime testArrayByValAtComptime(arr);
...@@ -362,6 +379,7 @@ test "comptime evaluating function that takes array by value" {...@@ -362,6 +379,7 @@ test "comptime evaluating function that takes array by value" {
362test "runtime initialize array elem and then implicit cast to slice" {379test "runtime initialize array elem and then implicit cast to slice" {
363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
365383
366 var two: i32 = 2;384 var two: i32 = 2;
367 const x: []const i32 = &[_]i32{two};385 const x: []const i32 = &[_]i32{two};
...@@ -371,6 +389,7 @@ test "runtime initialize array elem and then implicit cast to slice" {...@@ -371,6 +389,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
371test "array literal as argument to function" {389test "array literal as argument to function" {
372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
374393
375 const S = struct {394 const S = struct {
376 fn entry(two: i32) !void {395 fn entry(two: i32) !void {
...@@ -399,6 +418,7 @@ test "double nested array to const slice cast in array literal" {...@@ -399,6 +418,7 @@ test "double nested array to const slice cast in array literal" {
399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
402422
403 const S = struct {423 const S = struct {
404 fn entry(two: i32) !void {424 fn entry(two: i32) !void {
...@@ -460,6 +480,7 @@ test "anonymous literal in array" {...@@ -460,6 +480,7 @@ test "anonymous literal in array" {
460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
462 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
463484
464 const S = struct {485 const S = struct {
465 const Foo = struct {486 const Foo = struct {
...@@ -484,6 +505,7 @@ test "anonymous literal in array" {...@@ -484,6 +505,7 @@ test "anonymous literal in array" {
484test "access the null element of a null terminated array" {505test "access the null element of a null terminated array" {
485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
487509
488 const S = struct {510 const S = struct {
489 fn doTheTest() !void {511 fn doTheTest() !void {
...@@ -501,6 +523,7 @@ test "type deduction for array subscript expression" {...@@ -501,6 +523,7 @@ test "type deduction for array subscript expression" {
501 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;523 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
502 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
526 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504527
505 const S = struct {528 const S = struct {
506 fn doTheTest() !void {529 fn doTheTest() !void {
...@@ -519,6 +542,7 @@ test "sentinel element count towards the ABI size calculation" {...@@ -519,6 +542,7 @@ test "sentinel element count towards the ABI size calculation" {
519 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
520 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO543 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
521 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO544 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
545 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
522546
523 const S = struct {547 const S = struct {
524 fn doTheTest() !void {548 fn doTheTest() !void {
...@@ -542,6 +566,7 @@ test "sentinel element count towards the ABI size calculation" {...@@ -542,6 +566,7 @@ test "sentinel element count towards the ABI size calculation" {
542test "zero-sized array with recursive type definition" {566test "zero-sized array with recursive type definition" {
543 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
544 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
569 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
545570
546 const U = struct {571 const U = struct {
547 fn foo(comptime T: type, comptime n: usize) type {572 fn foo(comptime T: type, comptime n: usize) type {
...@@ -564,6 +589,7 @@ test "type coercion of anon struct literal to array" {...@@ -564,6 +589,7 @@ test "type coercion of anon struct literal to array" {
564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
565 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO591 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567593
568 const S = struct {594 const S = struct {
569 const U = union {595 const U = union {
...@@ -596,6 +622,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {...@@ -596,6 +622,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {
596 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
597 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
598 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
599626
600 const S = struct {627 const S = struct {
601 const U = union {628 const U = union {
...@@ -634,6 +661,7 @@ test "tuple to array handles sentinel" {...@@ -634,6 +661,7 @@ test "tuple to array handles sentinel" {
634 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
635 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
636 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
637665
638 const S = struct {666 const S = struct {
639 const a = .{ 1, 2, 3 };667 const a = .{ 1, 2, 3 };
...@@ -646,6 +674,7 @@ test "array init of container level array variable" {...@@ -646,6 +674,7 @@ test "array init of container level array variable" {
646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO674 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
647 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO675 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
648 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO676 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
649678
650 const S = struct {679 const S = struct {
651 var pair: [2]usize = .{ 1, 2 };680 var pair: [2]usize = .{ 1, 2 };
...@@ -676,6 +705,7 @@ test "array of array agregate init" {...@@ -676,6 +705,7 @@ test "array of array agregate init" {
676 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO705 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
677 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO706 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
678 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO707 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
708 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
679709
680 var a = [1]u32{11} ** 10;710 var a = [1]u32{11} ** 10;
681 var b = [1][10]u32{a} ** 2;711 var b = [1][10]u32{a} ** 2;
test/behavior/asm.zig+4
...@@ -24,6 +24,7 @@ test "module level assembly" {...@@ -24,6 +24,7 @@ test "module level assembly" {
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
28 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly29 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
2930
...@@ -38,6 +39,7 @@ test "output constraint modifiers" {...@@ -38,6 +39,7 @@ test "output constraint modifiers" {
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4143
42 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly44 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
4345
...@@ -61,6 +63,7 @@ test "alternative constraints" {...@@ -61,6 +63,7 @@ test "alternative constraints" {
61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6467
65 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly68 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
6669
...@@ -79,6 +82,7 @@ test "sized integer/float in asm input" {...@@ -79,6 +82,7 @@ test "sized integer/float in asm input" {
79 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8286
83 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly87 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
8488
test/behavior/atomics.zig+15
...@@ -14,6 +14,7 @@ test "cmpxchg" {...@@ -14,6 +14,7 @@ test "cmpxchg" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 try testCmpxchg();19 try testCmpxchg();
19 comptime try testCmpxchg();20 comptime try testCmpxchg();
...@@ -39,6 +40,7 @@ fn testCmpxchg() !void {...@@ -39,6 +40,7 @@ fn testCmpxchg() !void {
39test "fence" {40test "fence" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4244
43 var x: i32 = 1234;45 var x: i32 = 1234;
44 @fence(.SeqCst);46 @fence(.SeqCst);
...@@ -49,6 +51,7 @@ test "atomicrmw and atomicload" {...@@ -49,6 +51,7 @@ test "atomicrmw and atomicload" {
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5255
53 var data: u8 = 200;56 var data: u8 = 200;
54 try testAtomicRmw(&data);57 try testAtomicRmw(&data);
...@@ -76,6 +79,7 @@ test "cmpxchg with ptr" {...@@ -76,6 +79,7 @@ test "cmpxchg with ptr" {
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO81 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7983
80 var data1: i32 = 1234;84 var data1: i32 = 1234;
81 var data2: i32 = 5678;85 var data2: i32 = 5678;
...@@ -100,6 +104,7 @@ test "cmpxchg with ignored result" {...@@ -100,6 +104,7 @@ test "cmpxchg with ignored result" {
100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103108
104 var x: i32 = 1234;109 var x: i32 = 1234;
105110
...@@ -115,6 +120,7 @@ test "128-bit cmpxchg" {...@@ -115,6 +120,7 @@ test "128-bit cmpxchg" {
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
118124
119 try test_u128_cmpxchg();125 try test_u128_cmpxchg();
120 comptime try test_u128_cmpxchg();126 comptime try test_u128_cmpxchg();
...@@ -143,6 +149,7 @@ test "cmpxchg on a global variable" {...@@ -143,6 +149,7 @@ test "cmpxchg on a global variable" {
143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
146153
147 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {154 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
148 // https://github.com/ziglang/zig/issues/10627155 // https://github.com/ziglang/zig/issues/10627
...@@ -157,6 +164,7 @@ test "atomic load and rmw with enum" {...@@ -157,6 +164,7 @@ test "atomic load and rmw with enum" {
157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160168
161 const Value = enum(u8) { a, b, c };169 const Value = enum(u8) { a, b, c };
162 var x = Value.a;170 var x = Value.a;
...@@ -173,6 +181,7 @@ test "atomic store" {...@@ -173,6 +181,7 @@ test "atomic store" {
173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
176185
177 var x: u32 = 0;186 var x: u32 = 0;
178 @atomicStore(u32, &x, 1, .SeqCst);187 @atomicStore(u32, &x, 1, .SeqCst);
...@@ -185,6 +194,7 @@ test "atomic store comptime" {...@@ -185,6 +194,7 @@ test "atomic store comptime" {
185 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
188198
189 comptime try testAtomicStore();199 comptime try testAtomicStore();
190 try testAtomicStore();200 try testAtomicStore();
...@@ -203,6 +213,7 @@ test "atomicrmw with floats" {...@@ -203,6 +213,7 @@ test "atomicrmw with floats" {
203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
206217
207 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {218 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
208 // https://github.com/ziglang/zig/issues/10627219 // https://github.com/ziglang/zig/issues/10627
...@@ -231,6 +242,7 @@ test "atomicrmw with ints" {...@@ -231,6 +242,7 @@ test "atomicrmw with ints" {
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
245 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
234246
235 try testAtomicRmwInts();247 try testAtomicRmwInts();
236 comptime try testAtomicRmwInts();248 comptime try testAtomicRmwInts();
...@@ -301,6 +313,7 @@ test "atomicrmw with 128-bit ints" {...@@ -301,6 +313,7 @@ test "atomicrmw with 128-bit ints" {
301313
302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO315 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
316 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
304317
305 // TODO "ld.lld: undefined symbol: __sync_lock_test_and_set_16" on -mcpu x86_64318 // TODO "ld.lld: undefined symbol: __sync_lock_test_and_set_16" on -mcpu x86_64
306 if (builtin.cpu.arch == .x86_64 and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;319 if (builtin.cpu.arch == .x86_64 and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
...@@ -376,6 +389,7 @@ test "atomics with different types" {...@@ -376,6 +389,7 @@ test "atomics with different types" {
376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
378 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO391 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
379393
380 try testAtomicsWithType(bool, true, false);394 try testAtomicsWithType(bool, true, false);
381395
...@@ -404,6 +418,7 @@ test "return @atomicStore, using it as a void value" {...@@ -404,6 +418,7 @@ test "return @atomicStore, using it as a void value" {
404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407422
408 const S = struct {423 const S = struct {
409 const A = struct {424 const A = struct {
test/behavior/basic.zig+55
...@@ -42,6 +42,7 @@ test "truncate to non-power-of-two integers from 128-bit" {...@@ -42,6 +42,7 @@ test "truncate to non-power-of-two integers from 128-bit" {
42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4546
46 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010101, 0x01);47 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010101, 0x01);
47 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010110, 0x00);48 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010110, 0x00);
...@@ -81,6 +82,8 @@ test "type equality" {...@@ -81,6 +82,8 @@ test "type equality" {
81}82}
8283
83test "pointer dereferencing" {84test "pointer dereferencing" {
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
86
84 var x = @as(i32, 3);87 var x = @as(i32, 3);
85 const y = &x;88 const y = &x;
8689
...@@ -131,18 +134,21 @@ fn first4KeysOfHomeRow() []const u8 {...@@ -131,18 +134,21 @@ fn first4KeysOfHomeRow() []const u8 {
131134
132test "return string from function" {135test "return string from function" {
133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134138
135 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));139 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
136}140}
137141
138test "hex escape" {142test "hex escape" {
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
140145
141 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));146 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
142}147}
143148
144test "multiline string" {149test "multiline string" {
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
146152
147 const s1 =153 const s1 =
148 \\one154 \\one
...@@ -155,6 +161,7 @@ test "multiline string" {...@@ -155,6 +161,7 @@ test "multiline string" {
155161
156test "multiline string comments at start" {162test "multiline string comments at start" {
157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158165
159 const s1 =166 const s1 =
160 //\\one167 //\\one
...@@ -167,6 +174,7 @@ test "multiline string comments at start" {...@@ -167,6 +174,7 @@ test "multiline string comments at start" {
167174
168test "multiline string comments at end" {175test "multiline string comments at end" {
169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170178
171 const s1 =179 const s1 =
172 \\one180 \\one
...@@ -179,6 +187,7 @@ test "multiline string comments at end" {...@@ -179,6 +187,7 @@ test "multiline string comments at end" {
179187
180test "multiline string comments in middle" {188test "multiline string comments in middle" {
181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
182191
183 const s1 =192 const s1 =
184 \\one193 \\one
...@@ -191,6 +200,7 @@ test "multiline string comments in middle" {...@@ -191,6 +200,7 @@ test "multiline string comments in middle" {
191200
192test "multiline string comments at multiple places" {201test "multiline string comments at multiple places" {
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194204
195 const s1 =205 const s1 =
196 \\one206 \\one
...@@ -204,11 +214,14 @@ test "multiline string comments at multiple places" {...@@ -204,11 +214,14 @@ test "multiline string comments at multiple places" {
204}214}
205215
206test "string concatenation simple" {216test "string concatenation simple" {
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
218
207 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));219 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
208}220}
209221
210test "array mult operator" {222test "array mult operator" {
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212225
213 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));226 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
214}227}
...@@ -218,6 +231,7 @@ const OpaqueB = opaque {};...@@ -218,6 +231,7 @@ const OpaqueB = opaque {};
218231
219test "opaque types" {232test "opaque types" {
220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
221235
222 try expect(*OpaqueA != *OpaqueB);236 try expect(*OpaqueA != *OpaqueB);
223237
...@@ -289,6 +303,8 @@ test "function closes over local const" {...@@ -289,6 +303,8 @@ test "function closes over local const" {
289}303}
290304
291test "volatile load and store" {305test "volatile load and store" {
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307
292 var number: i32 = 1234;308 var number: i32 = 1234;
293 const ptr = @as(*volatile i32, &number);309 const ptr = @as(*volatile i32, &number);
294 ptr.* += 1;310 ptr.* += 1;
...@@ -304,6 +320,7 @@ fn fB() []const u8 {...@@ -304,6 +320,7 @@ fn fB() []const u8 {
304320
305test "call function pointer in struct" {321test "call function pointer in struct" {
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307324
308 try expect(mem.eql(u8, f3(true), "a"));325 try expect(mem.eql(u8, f3(true), "a"));
309 try expect(mem.eql(u8, f3(false), "b"));326 try expect(mem.eql(u8, f3(false), "b"));
...@@ -327,6 +344,7 @@ const FnPtrWrapper = struct {...@@ -327,6 +344,7 @@ const FnPtrWrapper = struct {
327344
328test "const ptr from var variable" {345test "const ptr from var variable" {
329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
347 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
330348
331 var x: u64 = undefined;349 var x: u64 = undefined;
332 var y: u64 = undefined;350 var y: u64 = undefined;
...@@ -345,6 +363,7 @@ test "call result of if else expression" {...@@ -345,6 +363,7 @@ test "call result of if else expression" {
345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
348367
349 try expect(mem.eql(u8, f2(true), "a"));368 try expect(mem.eql(u8, f2(true), "a"));
350 try expect(mem.eql(u8, f2(false), "b"));369 try expect(mem.eql(u8, f2(false), "b"));
...@@ -354,6 +373,8 @@ fn f2(x: bool) []const u8 {...@@ -354,6 +373,8 @@ fn f2(x: bool) []const u8 {
354}373}
355374
356test "variable is allowed to be a pointer to an opaque type" {375test "variable is allowed to be a pointer to an opaque type" {
376 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
377
357 var x: i32 = 1234;378 var x: i32 = 1234;
358 _ = hereIsAnOpaqueType(@ptrCast(*OpaqueA, &x));379 _ = hereIsAnOpaqueType(@ptrCast(*OpaqueA, &x));
359}380}
...@@ -366,6 +387,7 @@ test "take address of parameter" {...@@ -366,6 +387,7 @@ test "take address of parameter" {
366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;387 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
369391
370 try testTakeAddressOfParameter(12.34);392 try testTakeAddressOfParameter(12.34);
371}393}
...@@ -375,6 +397,8 @@ fn testTakeAddressOfParameter(f: f32) !void {...@@ -375,6 +397,8 @@ fn testTakeAddressOfParameter(f: f32) !void {
375}397}
376398
377test "pointer to void return type" {399test "pointer to void return type" {
400 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401
378 try testPointerToVoidReturnType();402 try testPointerToVoidReturnType();
379}403}
380fn testPointerToVoidReturnType() anyerror!void {404fn testPointerToVoidReturnType() anyerror!void {
...@@ -391,6 +415,7 @@ test "array 2D const double ptr" {...@@ -391,6 +415,7 @@ test "array 2D const double ptr" {
391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
393 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO417 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
418 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394419
395 const rect_2d_vertexes = [_][1]f32{420 const rect_2d_vertexes = [_][1]f32{
396 [_]f32{1.0},421 [_]f32{1.0},
...@@ -404,6 +429,7 @@ test "array 2D const double ptr with offset" {...@@ -404,6 +429,7 @@ test "array 2D const double ptr with offset" {
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;431 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
432 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407433
408 const rect_2d_vertexes = [_][2]f32{434 const rect_2d_vertexes = [_][2]f32{
409 [_]f32{ 3.0, 4.239 },435 [_]f32{ 3.0, 4.239 },
...@@ -417,6 +443,7 @@ test "array 3D const double ptr with offset" {...@@ -417,6 +443,7 @@ test "array 3D const double ptr with offset" {
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
419 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO445 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420447
421 const rect_3d_vertexes = [_][2][2]f32{448 const rect_3d_vertexes = [_][2][2]f32{
422 [_][2]f32{449 [_][2]f32{
...@@ -450,6 +477,7 @@ fn nine() u8 {...@@ -450,6 +477,7 @@ fn nine() u8 {
450test "struct inside function" {477test "struct inside function" {
451 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;478 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
452 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
453481
454 try testStructInFn();482 try testStructInFn();
455 comptime try testStructInFn();483 comptime try testStructInFn();
...@@ -471,6 +499,7 @@ fn testStructInFn() !void {...@@ -471,6 +499,7 @@ fn testStructInFn() !void {
471499
472test "fn call returning scalar optional in equality expression" {500test "fn call returning scalar optional in equality expression" {
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
502 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
474 try expect(getNull() == null);503 try expect(getNull() == null);
475}504}
476505
...@@ -481,6 +510,7 @@ fn getNull() ?*i32 {...@@ -481,6 +510,7 @@ fn getNull() ?*i32 {
481test "global variable assignment with optional unwrapping with var initialized to undefined" {510test "global variable assignment with optional unwrapping with var initialized to undefined" {
482 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
483 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
484514
485 const S = struct {515 const S = struct {
486 var data: i32 = 1234;516 var data: i32 = 1234;
...@@ -569,11 +599,15 @@ test "comptime cast fn to ptr" {...@@ -569,11 +599,15 @@ test "comptime cast fn to ptr" {
569}599}
570600
571test "equality compare fn ptrs" {601test "equality compare fn ptrs" {
602 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
603
572 var a = &emptyFn;604 var a = &emptyFn;
573 try expect(a == a);605 try expect(a == a);
574}606}
575607
576test "self reference through fn ptr field" {608test "self reference through fn ptr field" {
609 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
610
577 const S = struct {611 const S = struct {
578 const A = struct {612 const A = struct {
579 f: *const fn (A) u8,613 f: *const fn (A) u8,
...@@ -591,6 +625,7 @@ test "self reference through fn ptr field" {...@@ -591,6 +625,7 @@ test "self reference through fn ptr field" {
591625
592test "global variable initialized to global variable array element" {626test "global variable initialized to global variable array element" {
593 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO627 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
628 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
594629
595 try expect(global_ptr == &gdt[0]);630 try expect(global_ptr == &gdt[0]);
596}631}
...@@ -622,6 +657,7 @@ test "global constant is loaded with a runtime-known index" {...@@ -622,6 +657,7 @@ test "global constant is loaded with a runtime-known index" {
622657
623test "multiline string literal is null terminated" {658test "multiline string literal is null terminated" {
624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;659 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
660 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625661
626 const s1 =662 const s1 =
627 \\one663 \\one
...@@ -636,6 +672,7 @@ test "string escapes" {...@@ -636,6 +672,7 @@ test "string escapes" {
636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO674 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
639676
640 try expectEqualStrings("\"", "\x22");677 try expectEqualStrings("\"", "\x22");
641 try expectEqualStrings("\'", "\x27");678 try expectEqualStrings("\'", "\x27");
...@@ -653,6 +690,8 @@ test "explicit cast optional pointers" {...@@ -653,6 +690,8 @@ test "explicit cast optional pointers" {
653}690}
654691
655test "pointer comparison" {692test "pointer comparison" {
693 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
694
656 const a = @as([]const u8, "a");695 const a = @as([]const u8, "a");
657 const b = &a;696 const b = &a;
658 try expect(ptrEql(b, b));697 try expect(ptrEql(b, b));
...@@ -665,6 +704,7 @@ test "string concatenation" {...@@ -665,6 +704,7 @@ test "string concatenation" {
665 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;704 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;705 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO706 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
707 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
668708
669 const a = "OK" ++ " IT " ++ "WORKED";709 const a = "OK" ++ " IT " ++ "WORKED";
670 const b = "OK IT WORKED";710 const b = "OK IT WORKED";
...@@ -692,6 +732,7 @@ test "comptime manyptr concatenation" {...@@ -692,6 +732,7 @@ test "comptime manyptr concatenation" {
692 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;732 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
693 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;733 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
694 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO734 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
735 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
695736
696 const s = "epic";737 const s = "epic";
697 const actual = manyptrConcat(s);738 const actual = manyptrConcat(s);
...@@ -713,6 +754,7 @@ test "result location is optional inside error union" {...@@ -713,6 +754,7 @@ test "result location is optional inside error union" {
713 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO754 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
716758
717 const x = maybe(true) catch unreachable;759 const x = maybe(true) catch unreachable;
718 try expect(x.? == 42);760 try expect(x.? == 42);
...@@ -728,6 +770,7 @@ fn maybe(x: bool) anyerror!?u32 {...@@ -728,6 +770,7 @@ fn maybe(x: bool) anyerror!?u32 {
728test "auto created variables have correct alignment" {770test "auto created variables have correct alignment" {
729 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO771 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
730 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO772 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
773 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
731774
732 const S = struct {775 const S = struct {
733 fn foo(str: [*]const u8) u32 {776 fn foo(str: [*]const u8) u32 {
...@@ -748,6 +791,7 @@ test "extern variable with non-pointer opaque type" {...@@ -748,6 +791,7 @@ test "extern variable with non-pointer opaque type" {
748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO791 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO792 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
750 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO793 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
794 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
751795
752 @export(var_to_export, .{ .name = "opaque_extern_var" });796 @export(var_to_export, .{ .name = "opaque_extern_var" });
753 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);797 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);
...@@ -830,6 +874,7 @@ test "labeled block implicitly ends in a break" {...@@ -830,6 +874,7 @@ test "labeled block implicitly ends in a break" {
830test "catch in block has correct result location" {874test "catch in block has correct result location" {
831 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;875 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
832 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO876 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
877 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
833878
834 const S = struct {879 const S = struct {
835 fn open() error{A}!@This() {880 fn open() error{A}!@This() {
...@@ -847,6 +892,8 @@ test "catch in block has correct result location" {...@@ -847,6 +892,8 @@ test "catch in block has correct result location" {
847}892}
848893
849test "labeled block with runtime branch forwards its result location type to break statements" {894test "labeled block with runtime branch forwards its result location type to break statements" {
895 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
896
850 const E = enum { a, b };897 const E = enum { a, b };
851 var a = false;898 var a = false;
852 const e: E = blk: {899 const e: E = blk: {
...@@ -1004,6 +1051,7 @@ comptime {...@@ -1004,6 +1051,7 @@ comptime {
10041051
1005test "switch inside @as gets correct type" {1052test "switch inside @as gets correct type" {
1006 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10071055
1008 var a: u32 = 0;1056 var a: u32 = 0;
1009 var b: [2]u32 = undefined;1057 var b: [2]u32 = undefined;
...@@ -1014,6 +1062,8 @@ test "switch inside @as gets correct type" {...@@ -1014,6 +1062,8 @@ test "switch inside @as gets correct type" {
1014}1062}
10151063
1016test "inline call of function with a switch inside the return statement" {1064test "inline call of function with a switch inside the return statement" {
1065 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1066
1017 const S = struct {1067 const S = struct {
1018 inline fn foo(x: anytype) @TypeOf(x) {1068 inline fn foo(x: anytype) @TypeOf(x) {
1019 return switch (x) {1069 return switch (x) {
...@@ -1029,6 +1079,7 @@ test "namespace lookup ignores decl causing the lookup" {...@@ -1029,6 +1079,7 @@ test "namespace lookup ignores decl causing the lookup" {
1029 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1079 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1030 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1080 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1081 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1082 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10321083
1033 if (builtin.zig_backend == .stage2_llvm) {1084 if (builtin.zig_backend == .stage2_llvm) {
1034 // regressed with LLVM 151085 // regressed with LLVM 15
...@@ -1096,6 +1147,7 @@ test "returning an opaque type from a function" {...@@ -1096,6 +1147,7 @@ test "returning an opaque type from a function" {
1096test "orelse coercion as function argument" {1147test "orelse coercion as function argument" {
1097 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1148 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1098 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1150 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10991151
1100 const Loc = struct { start: i32 = -1 };1152 const Loc = struct { start: i32 = -1 };
1101 const Container = struct {1153 const Container = struct {
...@@ -1112,6 +1164,8 @@ test "orelse coercion as function argument" {...@@ -1112,6 +1164,8 @@ test "orelse coercion as function argument" {
1112}1164}
11131165
1114test "runtime-known globals initialized with undefined" {1166test "runtime-known globals initialized with undefined" {
1167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1168
1115 const S = struct {1169 const S = struct {
1116 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };1170 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
1117 var vp: [*]u32 = undefined;1171 var vp: [*]u32 = undefined;
...@@ -1131,6 +1185,7 @@ test "arrays and vectors with big integers" {...@@ -1131,6 +1185,7 @@ test "arrays and vectors with big integers" {
1131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1132 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1133 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1187 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11341189
1135 // TODO: only aarch64-windows didn't pass in the PR that added this code.1190 // TODO: only aarch64-windows didn't pass in the PR that added this code.
1136 // figure out why if you can run this target.1191 // figure out why if you can run this target.
test/behavior/bit_shifting.zig+1
...@@ -64,6 +64,7 @@ test "sharded table" {...@@ -64,6 +64,7 @@ test "sharded table" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6768
68 // realistic 16-way sharding69 // realistic 16-way sharding
69 try testShardedTable(u32, 4, 8);70 try testShardedTable(u32, 4, 8);
test/behavior/bitcast.zig+15
...@@ -9,6 +9,7 @@ const native_endian = builtin.target.cpu.arch.endian();...@@ -9,6 +9,7 @@ const native_endian = builtin.target.cpu.arch.endian();
99
10test "@bitCast iX -> uX (32, 64)" {10test "@bitCast iX -> uX (32, 64)" {
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 const bit_values = [_]usize{ 32, 64 };14 const bit_values = [_]usize{ 32, 64 };
1415
...@@ -22,6 +23,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {...@@ -22,6 +23,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2527
26 const bit_values = [_]usize{ 8, 16, 128 };28 const bit_values = [_]usize{ 8, 16, 128 };
2729
...@@ -37,6 +39,7 @@ test "@bitCast iX -> uX exotic integers" {...@@ -37,6 +39,7 @@ test "@bitCast iX -> uX exotic integers" {
37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4043
41 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };44 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
4245
...@@ -83,6 +86,7 @@ test "bitcast uX to bytes" {...@@ -83,6 +86,7 @@ test "bitcast uX to bytes" {
83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8690
87 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };91 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
88 inline for (bit_values) |bits| {92 inline for (bit_values) |bits| {
...@@ -150,6 +154,8 @@ test "bitcast literal [4]u8 param to u32" {...@@ -150,6 +154,8 @@ test "bitcast literal [4]u8 param to u32" {
150}154}
151155
152test "bitcast generates a temporary value" {156test "bitcast generates a temporary value" {
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158
153 var y = @as(u16, 0x55AA);159 var y = @as(u16, 0x55AA);
154 const x = @bitCast(u16, @bitCast([2]u8, y));160 const x = @bitCast(u16, @bitCast([2]u8, y));
155 try expect(y == x);161 try expect(y == x);
...@@ -159,6 +165,7 @@ test "@bitCast packed structs at runtime and comptime" {...@@ -159,6 +165,7 @@ test "@bitCast packed structs at runtime and comptime" {
159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
162169
163 const Full = packed struct {170 const Full = packed struct {
164 number: u16,171 number: u16,
...@@ -184,6 +191,7 @@ test "@bitCast packed structs at runtime and comptime" {...@@ -184,6 +191,7 @@ test "@bitCast packed structs at runtime and comptime" {
184test "@bitCast extern structs at runtime and comptime" {191test "@bitCast extern structs at runtime and comptime" {
185 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
187195
188 const Full = extern struct {196 const Full = extern struct {
189 number: u16,197 number: u16,
...@@ -216,6 +224,7 @@ test "bitcast packed struct to integer and back" {...@@ -216,6 +224,7 @@ test "bitcast packed struct to integer and back" {
216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219228
220 const LevelUpMove = packed struct {229 const LevelUpMove = packed struct {
221 move_id: u9,230 move_id: u9,
...@@ -237,6 +246,7 @@ test "bitcast packed struct to integer and back" {...@@ -237,6 +246,7 @@ test "bitcast packed struct to integer and back" {
237test "implicit cast to error union by returning" {246test "implicit cast to error union by returning" {
238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
240250
241 const S = struct {251 const S = struct {
242 fn entry() !void {252 fn entry() !void {
...@@ -292,6 +302,7 @@ test "@bitCast packed struct of floats" {...@@ -292,6 +302,7 @@ test "@bitCast packed struct of floats" {
292 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
295306
296 const Foo = packed struct {307 const Foo = packed struct {
297 a: f16 = 0,308 a: f16 = 0,
...@@ -328,6 +339,7 @@ test "comptime @bitCast packed struct to int and back" {...@@ -328,6 +339,7 @@ test "comptime @bitCast packed struct to int and back" {
328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
330 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
331343
332 if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) {344 if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) {
333 // https://github.com/ziglang/zig/issues/13782345 // https://github.com/ziglang/zig/issues/13782
...@@ -368,6 +380,7 @@ test "comptime bitcast with fields following f80" {...@@ -368,6 +380,7 @@ test "comptime bitcast with fields following f80" {
368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
371384
372 const FloatT = extern struct { f: f80, x: u128 align(16) };385 const FloatT = extern struct { f: f80, x: u128 align(16) };
373 const x: FloatT = .{ .f = 0.5, .x = 123 };386 const x: FloatT = .{ .f = 0.5, .x = 123 };
...@@ -383,6 +396,7 @@ test "bitcast vector to integer and back" {...@@ -383,6 +396,7 @@ test "bitcast vector to integer and back" {
383 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO396 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
386400
387 const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14;401 const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14;
388 var x = @splat(16, true);402 var x = @splat(16, true);
...@@ -408,6 +422,7 @@ test "bitcast nan float does modify signaling bit" {...@@ -408,6 +422,7 @@ test "bitcast nan float does modify signaling bit" {
408 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411 // TODO: https://github.com/ziglang/zig/issues/14366426 // TODO: https://github.com/ziglang/zig/issues/14366
412 if (builtin.cpu.arch == .arm and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;427 if (builtin.cpu.arch == .arm and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
413428
test/behavior/bitreverse.zig+5
...@@ -5,6 +5,7 @@ const minInt = std.math.minInt;...@@ -5,6 +5,7 @@ const minInt = std.math.minInt;
55
6test "@bitReverse large exotic integer" {6test "@bitReverse large exotic integer" {
7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 try expect(@bitReverse(@as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);10 try expect(@bitReverse(@as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
10}11}
...@@ -15,6 +16,7 @@ test "@bitReverse" {...@@ -15,6 +16,7 @@ test "@bitReverse" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
19 comptime try testBitReverse();21 comptime try testBitReverse();
20 try testBitReverse();22 try testBitReverse();
...@@ -100,6 +102,7 @@ test "bitReverse vectors u8" {...@@ -100,6 +102,7 @@ test "bitReverse vectors u8" {
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103106
104 comptime try vector8();107 comptime try vector8();
105 try vector8();108 try vector8();
...@@ -118,6 +121,7 @@ test "bitReverse vectors u16" {...@@ -118,6 +121,7 @@ test "bitReverse vectors u16" {
118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
121125
122 comptime try vector16();126 comptime try vector16();
123 try vector16();127 try vector16();
...@@ -136,6 +140,7 @@ test "bitReverse vectors u24" {...@@ -136,6 +140,7 @@ test "bitReverse vectors u24" {
136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139144
140 comptime try vector24();145 comptime try vector24();
141 try vector24();146 try vector24();
test/behavior/bool.zig+3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const expect = std.testing.expect;3const expect = std.testing.expect;
34
4test "bool literals" {5test "bool literals" {
...@@ -7,6 +8,8 @@ test "bool literals" {...@@ -7,6 +8,8 @@ test "bool literals" {
7}8}
89
9test "cast bool to int" {10test "cast bool to int" {
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12
10 const t = true;13 const t = true;
11 const f = false;14 const f = false;
12 try expect(@boolToInt(t) == @as(u32, 1));15 try expect(@boolToInt(t) == @as(u32, 1));
test/behavior/bugs/10138.zig+1
...@@ -5,6 +5,7 @@ test "registers get overwritten when ignoring return" {...@@ -5,6 +5,7 @@ test "registers get overwritten when ignoring return" {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 if (builtin.cpu.arch != .x86_64 or builtin.os.tag != .linux) return error.SkipZigTest;7 if (builtin.cpu.arch != .x86_64 or builtin.os.tag != .linux) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 const fd = open();10 const fd = open();
10 _ = write(fd, "a", 1);11 _ = write(fd, "a", 1);
test/behavior/bugs/10147.zig+1
...@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {...@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 var x: u32 = 0x1;12 var x: u32 = 0x1;
12 var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 };13 var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 };
test/behavior/bugs/10684.zig+1
...@@ -7,6 +7,7 @@ test "slicing slices" {...@@ -7,6 +7,7 @@ test "slicing slices" {
7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 const foo = "1234";12 const foo = "1234";
12 const bar = foo[0..4];13 const bar = foo[0..4];
test/behavior/bugs/1076.zig+1
...@@ -6,6 +6,7 @@ const expect = std.testing.expect;...@@ -6,6 +6,7 @@ const expect = std.testing.expect;
6test "comptime code should not modify constant data" {6test "comptime code should not modify constant data" {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 try testCastPtrOfArrayToSliceAndPtr();11 try testCastPtrOfArrayToSliceAndPtr();
11 comptime try testCastPtrOfArrayToSliceAndPtr();12 comptime try testCastPtrOfArrayToSliceAndPtr();
test/behavior/bugs/10970.zig+1
...@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {...@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 var cond = true;12 var cond = true;
12 const opt = while (cond) {13 const opt = while (cond) {
test/behavior/bugs/11046.zig+1
...@@ -13,6 +13,7 @@ test "fixed" {...@@ -13,6 +13,7 @@ test "fixed" {
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 bar() catch |err| switch (err) {18 bar() catch |err| switch (err) {
18 error.Foo => {}, // error: expected (inferred error set of bar), found error{Foo}19 error.Foo => {}, // error: expected (inferred error set of bar), found error{Foo}
test/behavior/bugs/11100.zig+4
...@@ -1,4 +1,6 @@...@@ -1,4 +1,6 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
3
2pub fn do() bool {4pub fn do() bool {
3 inline for (.{"a"}) |_| {5 inline for (.{"a"}) |_| {
4 if (true) return false;6 if (true) return false;
...@@ -7,5 +9,7 @@ pub fn do() bool {...@@ -7,5 +9,7 @@ pub fn do() bool {
7}9}
810
9test "bug" {11test "bug" {
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13
10 try std.testing.expect(!do());14 try std.testing.expect(!do());
11}15}
test/behavior/bugs/11139.zig+1
...@@ -6,6 +6,7 @@ test "store array of array of structs at comptime" {...@@ -6,6 +6,7 @@ test "store array of array of structs at comptime" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 try expect(storeArrayOfArrayOfStructs() == 15);11 try expect(storeArrayOfArrayOfStructs() == 15);
11 comptime try expect(storeArrayOfArrayOfStructs() == 15);12 comptime try expect(storeArrayOfArrayOfStructs() == 15);
test/behavior/bugs/11165.zig+2
...@@ -2,6 +2,7 @@ const builtin = @import("builtin");...@@ -2,6 +2,7 @@ const builtin = @import("builtin");
22
3test "bytes" {3test "bytes" {
4 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO4 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
6 const S = struct {7 const S = struct {
7 a: u32,8 a: u32,
...@@ -23,6 +24,7 @@ test "bytes" {...@@ -23,6 +24,7 @@ test "bytes" {
2324
24test "aggregate" {25test "aggregate" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2628
27 const S = struct {29 const S = struct {
28 a: u32,30 a: u32,
test/behavior/bugs/11179.zig+1
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const Type = std.builtin.Type;3const Type = std.builtin.Type;
34
4test "Tuple" {5test "Tuple" {
test/behavior/bugs/11213.zig+2
...@@ -3,6 +3,8 @@ const builtin = @import("builtin");...@@ -3,6 +3,8 @@ const builtin = @import("builtin");
3const testing = std.testing;3const testing = std.testing;
44
5test {5test {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
6 const g: error{Test}!void = error.Test;8 const g: error{Test}!void = error.Test;
79
8 var v: u32 = 0;10 var v: u32 = 0;
test/behavior/bugs/11787.zig+1
...@@ -7,6 +7,7 @@ test "slicing zero length array field of struct" {...@@ -7,6 +7,7 @@ test "slicing zero length array field of struct" {
7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 const S = struct {12 const S = struct {
12 a: [0]usize,13 a: [0]usize,
test/behavior/bugs/11816.zig+1
...@@ -4,6 +4,7 @@ const builtin = @import("builtin");...@@ -4,6 +4,7 @@ const builtin = @import("builtin");
4test {4test {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
8 var x: u32 = 3;9 var x: u32 = 3;
9 const val: usize = while (true) switch (x) {10 const val: usize = while (true) switch (x) {
test/behavior/bugs/11995.zig+2
...@@ -22,6 +22,8 @@ test {...@@ -22,6 +22,8 @@ test {
22 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26
25 var string: [5]u8 = "hello".*;27 var string: [5]u8 = "hello".*;
26 const arg_data = wuffs_base__slice_u8{ .ptr = @ptrCast([*c]u8, &string), .len = string.len };28 const arg_data = wuffs_base__slice_u8{ .ptr = @ptrCast([*c]u8, &string), .len = string.len };
27 var arg_meta = wuffs_base__io_buffer_meta{ .wi = 1, .ri = 2, .pos = 3, .closed = true };29 var arg_meta = wuffs_base__io_buffer_meta{ .wi = 1, .ri = 2, .pos = 3, .closed = true };
test/behavior/bugs/12000.zig+2
...@@ -10,6 +10,8 @@ test {...@@ -10,6 +10,8 @@ test {
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
13 var t: T = .{ .next = null };15 var t: T = .{ .next = null };
14 try std.testing.expect(t.next == null);16 try std.testing.expect(t.next == null);
15}17}
test/behavior/bugs/12025.zig+4
...@@ -1,4 +1,8 @@...@@ -1,4 +1,8 @@
1const builtin = @import("builtin");
2
1test {3test {
4 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5
2 comptime var st = .{6 comptime var st = .{
3 .foo = &1,7 .foo = &1,
4 .bar = &2,8 .bar = &2,
test/behavior/bugs/12033.zig+3
...@@ -1,6 +1,9 @@...@@ -1,6 +1,9 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
23
3test {4test {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
4 const string = "Hello!\x00World!";7 const string = "Hello!\x00World!";
5 try std.testing.expect(@TypeOf(string) == *const [13:0]u8);8 try std.testing.expect(@TypeOf(string) == *const [13:0]u8);
69
test/behavior/bugs/12043.zig+3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const expect = std.testing.expect;3const expect = std.testing.expect;
34
4var ok = false;5var ok = false;
...@@ -6,6 +7,8 @@ fn foo(x: anytype) void {...@@ -6,6 +7,8 @@ fn foo(x: anytype) void {
6 ok = x;7 ok = x;
7}8}
8test {9test {
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
9 const x = &foo;12 const x = &foo;
10 x(true);13 x(true);
11 try expect(ok);14 try expect(ok);
test/behavior/bugs/12051.zig+2
...@@ -7,6 +7,8 @@ test {...@@ -7,6 +7,8 @@ test {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
10 const x = X{};12 const x = X{};
11 try std.testing.expectEqual(@as(u16, 0), x.y.a);13 try std.testing.expectEqual(@as(u16, 0), x.y.a);
12 try std.testing.expectEqual(false, x.y.b);14 try std.testing.expectEqual(false, x.y.b);
test/behavior/bugs/12092.zig+2
...@@ -18,6 +18,8 @@ test {...@@ -18,6 +18,8 @@ test {
18 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22
21 var baz: u32 = 24;23 var baz: u32 = 24;
22 try takeFoo(&.{24 try takeFoo(&.{
23 .a = .{25 .a = .{
test/behavior/bugs/12119.zig+2
...@@ -9,6 +9,8 @@ test {...@@ -9,6 +9,8 @@ test {
9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13
12 const zerox32: u8x32 = [_]u8{0} ** 32;14 const zerox32: u8x32 = [_]u8{0} ** 32;
13 const bigsum: u32x8 = @bitCast(u32x8, zerox32);15 const bigsum: u32x8 = @bitCast(u32x8, zerox32);
14 try std.testing.expectEqual(0, @reduce(.Add, bigsum));16 try std.testing.expectEqual(0, @reduce(.Add, bigsum));
test/behavior/bugs/12142.zig+2
...@@ -23,6 +23,8 @@ test {...@@ -23,6 +23,8 @@ test {
23 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
27
26 const test_struct = Test{28 const test_struct = Test{
27 .holders = &.{29 .holders = &.{
28 Holder{30 Holder{
test/behavior/bugs/12450.zig+2
...@@ -14,6 +14,8 @@ test {...@@ -14,6 +14,8 @@ test {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
17 var f1: *align(16) Foo = @alignCast(16, @ptrCast(*align(1) Foo, &buffer[0]));19 var f1: *align(16) Foo = @alignCast(16, @ptrCast(*align(1) Foo, &buffer[0]));
18 try expect(@typeInfo(@TypeOf(f1)).Pointer.alignment == 16);20 try expect(@typeInfo(@TypeOf(f1)).Pointer.alignment == 16);
19 try expect(@ptrToInt(f1) == @ptrToInt(&f1.a));21 try expect(@ptrToInt(f1) == @ptrToInt(&f1.a));
test/behavior/bugs/12551.zig+1
...@@ -4,6 +4,7 @@ const builtin = @import("builtin");...@@ -4,6 +4,7 @@ const builtin = @import("builtin");
4test {4test {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
8 try std.testing.expect(for ([1]u8{0}) |x| {9 try std.testing.expect(for ([1]u8{0}) |x| {
9 if (x == 0) break true;10 if (x == 0) break true;
test/behavior/bugs/12571.zig+1
...@@ -14,6 +14,7 @@ const Entry = packed struct {...@@ -14,6 +14,7 @@ const Entry = packed struct {
14test {14test {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 const frame = Frame{ .num = 0x7FDE };19 const frame = Frame{ .num = 0x7FDE };
19 var entry = Entry{ .other = 0, .frame = .{ .num = 0xFFFFF } };20 var entry = Entry{ .other = 0, .frame = .{ .num = 0xFFFFF } };
test/behavior/bugs/12644.zig+3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
23
3inline fn foo(comptime T: type) !T {4inline fn foo(comptime T: type) !T {
4 return error.AnError;5 return error.AnError;
...@@ -9,6 +10,8 @@ fn main0() !void {...@@ -9,6 +10,8 @@ fn main0() !void {
9}10}
1011
11test "issue12644" {12test "issue12644" {
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
12 main0() catch |e| {15 main0() catch |e| {
13 try std.testing.expect(e == error.AnError);16 try std.testing.expect(e == error.AnError);
14 };17 };
test/behavior/bugs/12680.zig+1
...@@ -11,6 +11,7 @@ test "export a function twice" {...@@ -11,6 +11,7 @@ test "export a function twice" {
11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14 if (builtin.os.tag == .macos and builtin.zig_backend == .stage2_c) {15 if (builtin.os.tag == .macos and builtin.zig_backend == .stage2_c) {
15 // TODO: test.c: error: aliases are not supported on darwin16 // TODO: test.c: error: aliases are not supported on darwin
16 return error.SkipZigTest;17 return error.SkipZigTest;
test/behavior/bugs/1277.zig+1
...@@ -16,6 +16,7 @@ test "don't emit an LLVM global for a const function when it's in an optional in...@@ -16,6 +16,7 @@ test "don't emit an LLVM global for a const function when it's in an optional in
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
20 try std.testing.expect(s.f.?() == 1234);21 try std.testing.expect(s.f.?() == 1234);
21}22}
test/behavior/bugs/12776.zig+1
...@@ -32,6 +32,7 @@ test {...@@ -32,6 +32,7 @@ test {
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_x86_64) {36 if (builtin.zig_backend == .stage2_x86_64) {
36 // Careful enabling this test, fails randomly.37 // Careful enabling this test, fails randomly.
37 return error.SkipZigTest;38 return error.SkipZigTest;
test/behavior/bugs/12801-2.zig+1
...@@ -18,6 +18,7 @@ test {...@@ -18,6 +18,7 @@ test {
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
22 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };23 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };
23 try std.testing.expect(a.capacity() == 32);24 try std.testing.expect(a.capacity() == 32);
test/behavior/bugs/12890.zig+1
...@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {...@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {
11test {11test {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 var arr: [8]u3 = undefined;16 var arr: [8]u3 = undefined;
16 a(&arr, 5);17 a(&arr, 5);
test/behavior/bugs/12891.zig+14
...@@ -7,21 +7,29 @@ test "issue12891" {...@@ -7,21 +7,29 @@ test "issue12891" {
7 try std.testing.expect(i < f);7 try std.testing.expect(i < f);
8}8}
9test "nan" {9test "nan" {
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
10 const f = comptime std.math.nan(f64);12 const f = comptime std.math.nan(f64);
11 var i: usize = 0;13 var i: usize = 0;
12 try std.testing.expect(!(f < i));14 try std.testing.expect(!(f < i));
13}15}
14test "inf" {16test "inf" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
15 const f = comptime std.math.inf(f64);19 const f = comptime std.math.inf(f64);
16 var i: usize = 0;20 var i: usize = 0;
17 try std.testing.expect(f > i);21 try std.testing.expect(f > i);
18}22}
19test "-inf < 0" {23test "-inf < 0" {
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
25
20 const f = comptime -std.math.inf(f64);26 const f = comptime -std.math.inf(f64);
21 var i: usize = 0;27 var i: usize = 0;
22 try std.testing.expect(f < i);28 try std.testing.expect(f < i);
23}29}
24test "inf >= 1" {30test "inf >= 1" {
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
32
25 const f = comptime std.math.inf(f64);33 const f = comptime std.math.inf(f64);
26 var i: usize = 1;34 var i: usize = 1;
27 try std.testing.expect(f >= i);35 try std.testing.expect(f >= i);
...@@ -29,6 +37,7 @@ test "inf >= 1" {...@@ -29,6 +37,7 @@ test "inf >= 1" {
29test "isNan(nan * 1)" {37test "isNan(nan * 1)" {
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3241
33 const nan_times_one = comptime std.math.nan(f64) * 1;42 const nan_times_one = comptime std.math.nan(f64) * 1;
34 try std.testing.expect(std.math.isNan(nan_times_one));43 try std.testing.expect(std.math.isNan(nan_times_one));
...@@ -36,6 +45,7 @@ test "isNan(nan * 1)" {...@@ -36,6 +45,7 @@ test "isNan(nan * 1)" {
36test "runtime isNan(nan * 1)" {45test "runtime isNan(nan * 1)" {
37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3949
40 const nan_times_one = std.math.nan(f64) * 1;50 const nan_times_one = std.math.nan(f64) * 1;
41 try std.testing.expect(std.math.isNan(nan_times_one));51 try std.testing.expect(std.math.isNan(nan_times_one));
...@@ -43,6 +53,7 @@ test "runtime isNan(nan * 1)" {...@@ -43,6 +53,7 @@ test "runtime isNan(nan * 1)" {
43test "isNan(nan * 0)" {53test "isNan(nan * 0)" {
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4657
47 const nan_times_zero = comptime std.math.nan(f64) * 0;58 const nan_times_zero = comptime std.math.nan(f64) * 0;
48 try std.testing.expect(std.math.isNan(nan_times_zero));59 try std.testing.expect(std.math.isNan(nan_times_zero));
...@@ -52,6 +63,7 @@ test "isNan(nan * 0)" {...@@ -52,6 +63,7 @@ test "isNan(nan * 0)" {
52test "isNan(inf * 0)" {63test "isNan(inf * 0)" {
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5567
56 const inf_times_zero = comptime std.math.inf(f64) * 0;68 const inf_times_zero = comptime std.math.inf(f64) * 0;
57 try std.testing.expect(std.math.isNan(inf_times_zero));69 try std.testing.expect(std.math.isNan(inf_times_zero));
...@@ -61,6 +73,7 @@ test "isNan(inf * 0)" {...@@ -61,6 +73,7 @@ test "isNan(inf * 0)" {
61test "runtime isNan(nan * 0)" {73test "runtime isNan(nan * 0)" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6477
65 const nan_times_zero = std.math.nan(f64) * 0;78 const nan_times_zero = std.math.nan(f64) * 0;
66 try std.testing.expect(std.math.isNan(nan_times_zero));79 try std.testing.expect(std.math.isNan(nan_times_zero));
...@@ -70,6 +83,7 @@ test "runtime isNan(nan * 0)" {...@@ -70,6 +83,7 @@ test "runtime isNan(nan * 0)" {
70test "runtime isNan(inf * 0)" {83test "runtime isNan(inf * 0)" {
71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7387
74 const inf_times_zero = std.math.inf(f64) * 0;88 const inf_times_zero = std.math.inf(f64) * 0;
75 try std.testing.expect(std.math.isNan(inf_times_zero));89 try std.testing.expect(std.math.isNan(inf_times_zero));
test/behavior/bugs/12928.zig+8
...@@ -1,5 +1,7 @@...@@ -1,5 +1,7 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const expect = std.testing.expect;3const expect = std.testing.expect;
4
3const A = extern struct {5const A = extern struct {
4 value: *volatile B,6 value: *volatile B,
5};7};
...@@ -7,11 +9,15 @@ const B = extern struct {...@@ -7,11 +9,15 @@ const B = extern struct {
7 a: u32,9 a: u32,
8 b: i32,10 b: i32,
9};11};
12
10test {13test {
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
11 var a: *A = undefined;16 var a: *A = undefined;
12 try expect(@TypeOf(&a.value.a) == *volatile u32);17 try expect(@TypeOf(&a.value.a) == *volatile u32);
13 try expect(@TypeOf(&a.value.b) == *volatile i32);18 try expect(@TypeOf(&a.value.b) == *volatile i32);
14}19}
20
15const C = extern struct {21const C = extern struct {
16 value: *volatile D,22 value: *volatile D,
17};23};
...@@ -20,6 +26,8 @@ const D = extern union {...@@ -20,6 +26,8 @@ const D = extern union {
20 b: i32,26 b: i32,
21};27};
22test {28test {
29 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
30
23 var c: *C = undefined;31 var c: *C = undefined;
24 try expect(@TypeOf(&c.value.a) == *volatile u32);32 try expect(@TypeOf(&c.value.a) == *volatile u32);
25 try expect(@TypeOf(&c.value.b) == *volatile i32);33 try expect(@TypeOf(&c.value.b) == *volatile i32);
test/behavior/bugs/12972.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 const c: u8 = 42;11 const c: u8 = 42;
11 f(&[_:null]?u8{c});12 f(&[_:null]?u8{c});
test/behavior/bugs/12984.zig+1
...@@ -14,6 +14,7 @@ pub const CustomDraw = DeleagateWithContext(fn (?OnConfirm) void);...@@ -14,6 +14,7 @@ pub const CustomDraw = DeleagateWithContext(fn (?OnConfirm) void);
14test "simple test" {14test "simple test" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 var c: CustomDraw = undefined;19 var c: CustomDraw = undefined;
19 _ = c;20 _ = c;
test/behavior/bugs/13064.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 var x: [10][10]u32 = undefined;11 var x: [10][10]u32 = undefined;
1112
test/behavior/bugs/13065.zig+1
...@@ -11,6 +11,7 @@ test {...@@ -11,6 +11,7 @@ test {
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 var x = U{ .array = undefined };16 var x = U{ .array = undefined };
1617
test/behavior/bugs/13068.zig+1
...@@ -9,6 +9,7 @@ test {...@@ -9,6 +9,7 @@ test {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 list.items.len = 0;14 list.items.len = 0;
14}15}
test/behavior/bugs/13069.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;11 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;
1112
test/behavior/bugs/13113.zig+2
...@@ -11,6 +11,8 @@ test {...@@ -11,6 +11,8 @@ test {
11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
14 const foo = Foo{16 const foo = Foo{
15 .a = 1,17 .a = 1,
16 .b = 2,18 .b = 2,
test/behavior/bugs/13128.zig+1
...@@ -17,6 +17,7 @@ test "runtime union init, most-aligned field != largest" {...@@ -17,6 +17,7 @@ test "runtime union init, most-aligned field != largest" {
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
21 var x: u8 = 1;22 var x: u8 = 1;
22 try foo(.{ .x = x });23 try foo(.{ .x = x });
test/behavior/bugs/13159.zig+2
...@@ -11,6 +11,8 @@ const Bar = packed struct {...@@ -11,6 +11,8 @@ const Bar = packed struct {
1111
12test {12test {
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
14 var foo = Bar.Baz.fizz;16 var foo = Bar.Baz.fizz;
15 try expect(foo == .fizz);17 try expect(foo == .fizz);
16}18}
test/behavior/bugs/13285.zig+1
...@@ -6,6 +6,7 @@ const Crasher = struct {...@@ -6,6 +6,7 @@ const Crasher = struct {
66
7test {7test {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 var a: Crasher = undefined;11 var a: Crasher = undefined;
11 var crasher_ptr = &a;12 var crasher_ptr = &a;
test/behavior/bugs/13366.zig+1
...@@ -18,6 +18,7 @@ test {...@@ -18,6 +18,7 @@ test {
18 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
22 var a: u32 = 16;23 var a: u32 = 16;
23 var reason = .{ .c_import = .{ .a = a } };24 var reason = .{ .c_import = .{ .a = a } };
test/behavior/bugs/13664.zig+1
...@@ -18,6 +18,7 @@ test {...@@ -18,6 +18,7 @@ test {
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
22 const timestamp: i64 = value();23 const timestamp: i64 = value();
23 const id = ID{ .fields = Fields{24 const id = ID{ .fields = Fields{
test/behavior/bugs/13785.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 var a: u8 = 0;11 var a: u8 = 0;
11 try std.io.null_writer.print("\n{} {}\n", .{ a, S{} });12 try std.io.null_writer.print("\n{} {}\n", .{ a, S{} });
test/behavior/bugs/1381.zig+1
...@@ -17,6 +17,7 @@ test "union that needs padding bytes inside an array" {...@@ -17,6 +17,7 @@ test "union that needs padding bytes inside an array" {
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
21 var as = [_]A{22 var as = [_]A{
22 A{ .B = B{ .D = 1 } },23 A{ .B = B{ .D = 1 } },
test/behavior/bugs/1442.zig+2
...@@ -10,6 +10,8 @@ test "const error union field alignment" {...@@ -10,6 +10,8 @@ test "const error union field alignment" {
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
13 var union_or_err: anyerror!Union = Union{ .Color = 1234 };15 var union_or_err: anyerror!Union = Union{ .Color = 1234 };
14 try std.testing.expect((union_or_err catch unreachable).Color == 1234);16 try std.testing.expect((union_or_err catch unreachable).Color == 1234);
15}17}
test/behavior/bugs/14854.zig+3
...@@ -1,6 +1,9 @@...@@ -1,6 +1,9 @@
1const testing = @import("std").testing;1const testing = @import("std").testing;
2const builtin = @import("builtin");
23
3test {4test {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
4 try testing.expect(getGeneric(u8, getU8) == 123);7 try testing.expect(getGeneric(u8, getU8) == 123);
5}8}
69
test/behavior/bugs/1500.zig+2
...@@ -6,6 +6,8 @@ const A = struct {...@@ -6,6 +6,8 @@ const A = struct {
6const B = *const fn (A) void;6const B = *const fn (A) void;
77
8test "allow these dependencies" {8test "allow these dependencies" {
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10
9 var a: A = undefined;11 var a: A = undefined;
10 var b: B = undefined;12 var b: B = undefined;
11 if (false) {13 if (false) {
test/behavior/bugs/1607.zig+2
...@@ -14,6 +14,8 @@ test "slices pointing at the same address as global array." {...@@ -14,6 +14,8 @@ test "slices pointing at the same address as global array." {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
17 try checkAddress(&a);19 try checkAddress(&a);
18 comptime try checkAddress(&a);20 comptime try checkAddress(&a);
19}21}
test/behavior/bugs/1735.zig+2
...@@ -44,6 +44,8 @@ const a = struct {...@@ -44,6 +44,8 @@ const a = struct {
44test "initialization" {44test "initialization" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
48
47 var t = a.init();49 var t = a.init();
48 try std.testing.expect(t.foo.len == 0);50 try std.testing.expect(t.foo.len == 0);
49}51}
test/behavior/bugs/1741.zig+1
...@@ -5,6 +5,7 @@ test "fixed" {...@@ -5,6 +5,7 @@ test "fixed" {
5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 const x: f32 align(128) = 12.34;10 const x: f32 align(128) = 12.34;
10 try std.testing.expect(@ptrToInt(&x) % 128 == 0);11 try std.testing.expect(@ptrToInt(&x) % 128 == 0);
test/behavior/bugs/1851.zig+1
...@@ -7,6 +7,7 @@ test "allocation and looping over 3-byte integer" {...@@ -7,6 +7,7 @@ test "allocation and looping over 3-byte integer" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {12 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {
12 return error.SkipZigTest; // TODO13 return error.SkipZigTest; // TODO
test/behavior/bugs/1914.zig+4
...@@ -12,6 +12,8 @@ const b_list: []B = &[_]B{};...@@ -12,6 +12,8 @@ const b_list: []B = &[_]B{};
12const a = A{ .b_list_pointer = &b_list };12const a = A{ .b_list_pointer = &b_list };
1313
14test "segfault bug" {14test "segfault bug" {
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16
15 const assert = std.debug.assert;17 const assert = std.debug.assert;
16 const obj = B{ .a_pointer = &a };18 const obj = B{ .a_pointer = &a };
17 assert(obj.a_pointer == &a); // this makes zig crash19 assert(obj.a_pointer == &a); // this makes zig crash
...@@ -28,5 +30,7 @@ pub const B2 = struct {...@@ -28,5 +30,7 @@ pub const B2 = struct {
28var b_value = B2{ .pointer_array = &[_]*A2{} };30var b_value = B2{ .pointer_array = &[_]*A2{} };
2931
30test "basic stuff" {32test "basic stuff" {
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
34
31 std.debug.assert(&b_value == &b_value);35 std.debug.assert(&b_value == &b_value);
32}36}
test/behavior/bugs/2006.zig+1
...@@ -7,6 +7,7 @@ const S = struct {...@@ -7,6 +7,7 @@ const S = struct {
7};7};
8test "bug 2006" {8test "bug 2006" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 var a: S = undefined;12 var a: S = undefined;
12 a = S{ .p = undefined };13 a = S{ .p = undefined };
test/behavior/bugs/2114.zig+1
...@@ -14,6 +14,7 @@ test "fixed" {...@@ -14,6 +14,7 @@ test "fixed" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 try testCtz();19 try testCtz();
19 comptime try testCtz();20 comptime try testCtz();
test/behavior/bugs/2578.zig+1
...@@ -15,6 +15,7 @@ test "fixed" {...@@ -15,6 +15,7 @@ test "fixed" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1819
19 bar(t);20 bar(t);
20}21}
test/behavior/bugs/2622.zig+1
...@@ -7,6 +7,7 @@ test "reslice of undefined global var slice" {...@@ -7,6 +7,7 @@ test "reslice of undefined global var slice" {
7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 var mem: [100]u8 = [_]u8{0} ** 100;12 var mem: [100]u8 = [_]u8{0} ** 100;
12 buf = &mem;13 buf = &mem;
test/behavior/bugs/2692.zig+1
...@@ -7,6 +7,7 @@ fn foo(a: []u8) void {...@@ -7,6 +7,7 @@ fn foo(a: []u8) void {
7test "address of 0 length array" {7test "address of 0 length array" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 var pt: [0]u8 = undefined;12 var pt: [0]u8 = undefined;
12 foo(&pt);13 foo(&pt);
test/behavior/bugs/3007.zig+1
...@@ -22,6 +22,7 @@ test "fixed" {...@@ -22,6 +22,7 @@ test "fixed" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2526
26 default_foo = get_foo() catch null; // This Line27 default_foo = get_foo() catch null; // This Line
27 try std.testing.expect(!default_foo.?.free);28 try std.testing.expect(!default_foo.?.free);
test/behavior/bugs/3046.zig+1
...@@ -16,6 +16,7 @@ test "fixed" {...@@ -16,6 +16,7 @@ test "fixed" {
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
20 some_struct = SomeStruct{21 some_struct = SomeStruct{
21 .field = couldFail() catch @as(i32, 0),22 .field = couldFail() catch @as(i32, 0),
test/behavior/bugs/3112.zig+2
...@@ -15,6 +15,8 @@ test "zig test crash" {...@@ -15,6 +15,8 @@ test "zig test crash" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
18 var global: State = undefined;20 var global: State = undefined;
19 global.enter = prev;21 global.enter = prev;
20 global.enter(null);22 global.enter(null);
test/behavior/bugs/3367.zig+2
...@@ -10,6 +10,8 @@ const Mixin = struct {...@@ -10,6 +10,8 @@ const Mixin = struct {
10};10};
1111
12test "container member access usingnamespace decls" {12test "container member access usingnamespace decls" {
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
13 var foo = Foo{};15 var foo = Foo{};
14 foo.two();16 foo.two();
15}17}
test/behavior/bugs/3742.zig+2
...@@ -40,5 +40,7 @@ test "fixed" {...@@ -40,5 +40,7 @@ test "fixed" {
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_llvm and41 if (builtin.zig_backend == .stage2_llvm and
42 builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest;42 builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
44
43 ArgSerializer.serializeCommand(GET.init("banana"));45 ArgSerializer.serializeCommand(GET.init("banana"));
44}46}
test/behavior/bugs/3779.zig+5
...@@ -8,6 +8,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;...@@ -8,6 +8,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
8test "@tagName() returns a string literal" {8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));13 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));14 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
...@@ -21,6 +22,7 @@ const ptr_error_name: [*:0]const u8 = error_name;...@@ -21,6 +22,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
21test "@errorName() returns a string literal" {22test "@errorName() returns a string literal" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2426
25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));27 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));28 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
...@@ -34,6 +36,7 @@ const ptr_type_name: [*:0]const u8 = type_name;...@@ -34,6 +36,7 @@ const ptr_type_name: [*:0]const u8 = type_name;
34test "@typeName() returns a string literal" {36test "@typeName() returns a string literal" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3740
38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));41 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
39 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));42 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
...@@ -47,6 +50,7 @@ const expected_contents = "hello zig\n";...@@ -47,6 +50,7 @@ const expected_contents = "hello zig\n";
47test "@embedFile() returns a string literal" {50test "@embedFile() returns a string literal" {
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5054
51 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));55 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
52 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));56 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
...@@ -61,6 +65,7 @@ fn testFnForSrc() std.builtin.SourceLocation {...@@ -61,6 +65,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
61test "@src() returns a struct containing 0-terminated string slices" {65test "@src() returns a struct containing 0-terminated string slices" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6469
65 const src = testFnForSrc();70 const src = testFnForSrc();
66 try std.testing.expect([:0]const u8 == @TypeOf(src.file));71 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
test/behavior/bugs/421.zig+1
...@@ -5,6 +5,7 @@ test "bitCast to array" {...@@ -5,6 +5,7 @@ test "bitCast to array" {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 comptime try testBitCastArray();10 comptime try testBitCastArray();
10 try testBitCastArray();11 try testBitCastArray();
test/behavior/bugs/4328.zig+5
...@@ -17,6 +17,8 @@ const S = extern struct {...@@ -17,6 +17,8 @@ const S = extern struct {
17};17};
1818
19test "Extern function calls in @TypeOf" {19test "Extern function calls in @TypeOf" {
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
21
20 const Test = struct {22 const Test = struct {
21 fn test_fn_1(a: anytype, b: anytype) @TypeOf(c_printf("%d %s\n", a, b)) {23 fn test_fn_1(a: anytype, b: anytype) @TypeOf(c_printf("%d %s\n", a, b)) {
22 return 0;24 return 0;
...@@ -37,6 +39,8 @@ test "Extern function calls in @TypeOf" {...@@ -37,6 +39,8 @@ test "Extern function calls in @TypeOf" {
37}39}
3840
39test "Peer resolution of extern function calls in @TypeOf" {41test "Peer resolution of extern function calls in @TypeOf" {
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
43
40 const Test = struct {44 const Test = struct {
41 fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {45 fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {
42 return 0;46 return 0;
...@@ -54,6 +58,7 @@ test "Peer resolution of extern function calls in @TypeOf" {...@@ -54,6 +58,7 @@ test "Peer resolution of extern function calls in @TypeOf" {
54test "Extern function calls, dereferences and field access in @TypeOf" {58test "Extern function calls, dereferences and field access in @TypeOf" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5762
58 const Test = struct {63 const Test = struct {
59 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {64 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
test/behavior/bugs/4954.zig+1
...@@ -8,6 +8,7 @@ test "crash" {...@@ -8,6 +8,7 @@ test "crash" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 var buf: [4096]u8 = undefined;13 var buf: [4096]u8 = undefined;
13 f(&buf);14 f(&buf);
test/behavior/bugs/529.zig+1
...@@ -16,6 +16,7 @@ test "issue 529 fixed" {...@@ -16,6 +16,7 @@ test "issue 529 fixed" {
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
20 @import("529_other_file.zig").issue529(null);21 @import("529_other_file.zig").issue529(null);
21 issue529(null);22 issue529(null);
test/behavior/bugs/5398.zig+1
...@@ -22,6 +22,7 @@ test "assignment of field with padding" {...@@ -22,6 +22,7 @@ test "assignment of field with padding" {
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2526
26 renderable = Renderable{27 renderable = Renderable{
27 .mesh = Mesh{ .id = 0 },28 .mesh = Mesh{ .id = 0 },
test/behavior/bugs/6047.zig+1
...@@ -14,6 +14,7 @@ test "`try`ing an if/else expression" {...@@ -14,6 +14,7 @@ test "`try`ing an if/else expression" {
14 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 try @import("std").testing.expectError(error.Test, getError2());19 try @import("std").testing.expectError(error.Test, getError2());
19}20}
test/behavior/bugs/6456.zig+1
...@@ -13,6 +13,7 @@ const text =...@@ -13,6 +13,7 @@ const text =
13test "issue 6456" {13test "issue 6456" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 comptime {18 comptime {
18 var fields: []const StructField = &[0]StructField{};19 var fields: []const StructField = &[0]StructField{};
test/behavior/bugs/656.zig+2
...@@ -14,6 +14,8 @@ test "optional if after an if in a switch prong of a switch with 2 prongs in an...@@ -14,6 +14,8 @@ test "optional if after an if in a switch prong of a switch with 2 prongs in an
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
17 try foo(false, true);19 try foo(false, true);
18}20}
1921
test/behavior/bugs/6781.zig+1
...@@ -68,6 +68,7 @@ test "fixed" {...@@ -68,6 +68,7 @@ test "fixed" {
68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7172
72 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;73 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;
73 var entry = std.mem.bytesAsValue(JournalHeader, buffer[0..@sizeOf(JournalHeader)]);74 var entry = std.mem.bytesAsValue(JournalHeader, buffer[0..@sizeOf(JournalHeader)]);
test/behavior/bugs/6905.zig+1
...@@ -6,6 +6,7 @@ test "sentinel-terminated 0-length slices" {...@@ -6,6 +6,7 @@ test "sentinel-terminated 0-length slices" {
6 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 var u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };11 var u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
1112
test/behavior/bugs/6947.zig+1
...@@ -9,6 +9,7 @@ test {...@@ -9,6 +9,7 @@ test {
9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 var slice: []void = undefined;14 var slice: []void = undefined;
14 destroy(&slice[0]);15 destroy(&slice[0]);
test/behavior/bugs/7047.zig+3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
23
3const U = union(enum) {4const U = union(enum) {
4 T: type,5 T: type,
...@@ -14,6 +15,8 @@ fn S(comptime query: U) type {...@@ -14,6 +15,8 @@ fn S(comptime query: U) type {
14}15}
1516
16test "compiler doesn't consider equal unions with different 'type' payload" {17test "compiler doesn't consider equal unions with different 'type' payload" {
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
17 const s1 = S(U{ .T = u32 }).tag();20 const s1 = S(U{ .T = u32 }).tag();
18 try std.testing.expectEqual(u32, s1);21 try std.testing.expectEqual(u32, s1);
1922
test/behavior/bugs/718.zig+1
...@@ -13,6 +13,7 @@ test "zero keys with @memset" {...@@ -13,6 +13,7 @@ test "zero keys with @memset" {
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 @memset(@ptrCast([*]u8, &keys)[0..@sizeOf(@TypeOf(keys))], 0);18 @memset(@ptrCast([*]u8, &keys)[0..@sizeOf(@TypeOf(keys))], 0);
18 try expect(!keys.up);19 try expect(!keys.up);
test/behavior/bugs/7187.zig+2
...@@ -3,6 +3,8 @@ const builtin = @import("builtin");...@@ -3,6 +3,8 @@ const builtin = @import("builtin");
3const expect = std.testing.expect;3const expect = std.testing.expect;
44
5test "miscompilation with bool return type" {5test "miscompilation with bool return type" {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
6 var x: usize = 1;8 var x: usize = 1;
7 var y: bool = getFalse();9 var y: bool = getFalse();
8 _ = y;10 _ = y;
test/behavior/bugs/726.zig+2
...@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {...@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 const c: u8 = 4;10 const c: u8 = 4;
10 var x: ?*const u8 = @ptrCast(?*const u8, &c);11 var x: ?*const u8 = @ptrCast(?*const u8, &c);
...@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {...@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
19 const container = struct {21 const container = struct {
20 var c: u8 = 4;22 var c: u8 = 4;
test/behavior/bugs/7325.zig+1
...@@ -82,6 +82,7 @@ test {...@@ -82,6 +82,7 @@ test {
82 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8586
86 var param: ParamType = .{87 var param: ParamType = .{
87 .one_of = .{ .name = "name" },88 .one_of = .{ .name = "name" },
test/behavior/bugs/8277.zig+2
...@@ -2,6 +2,8 @@ const std = @import("std");...@@ -2,6 +2,8 @@ const std = @import("std");
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4test "@sizeOf reified union zero-size payload fields" {4test "@sizeOf reified union zero-size payload fields" {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
5 comptime {7 comptime {
6 try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union {}))));8 try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union {}))));
7 try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void }))));9 try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union { a: void }))));
test/behavior/bugs/828.zig+1
...@@ -31,6 +31,7 @@ fn constCount(comptime cb: *const CountBy, comptime unused: u32) void {...@@ -31,6 +31,7 @@ fn constCount(comptime cb: *const CountBy, comptime unused: u32) void {
3131
32test "comptime struct return should not return the same instance" {32test "comptime struct return should not return the same instance" {
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3435
35 //the first parameter must be passed by reference to trigger the bug36 //the first parameter must be passed by reference to trigger the bug
36 //a second parameter is required to trigger the bug37 //a second parameter is required to trigger the bug
test/behavior/bugs/8646.zig+1
...@@ -11,6 +11,7 @@ test {...@@ -11,6 +11,7 @@ test {
11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 try std.testing.expect(array[0].len == 1);16 try std.testing.expect(array[0].len == 1);
16 try std.testing.expectEqualStrings("hello", array[0][0]);17 try std.testing.expectEqualStrings("hello", array[0][0]);
test/behavior/bugs/920.zig+1
...@@ -62,6 +62,7 @@ test "bug 920 fixed" {...@@ -62,6 +62,7 @@ test "bug 920 fixed" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6566
66 const NormalDist1 = blk: {67 const NormalDist1 = blk: {
67 break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case);68 break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case);
test/behavior/bugs/9584.zig+1
...@@ -47,6 +47,7 @@ test {...@@ -47,6 +47,7 @@ test {
47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
51 var flags = A{52 var flags = A{
52 .a = false,53 .a = false,
test/behavior/byteswap.zig+4
...@@ -8,6 +8,7 @@ test "@byteSwap integers" {...@@ -8,6 +8,7 @@ test "@byteSwap integers" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 const ByteSwapIntTest = struct {13 const ByteSwapIntTest = struct {
13 fn run() !void {14 fn run() !void {
...@@ -66,6 +67,7 @@ test "@byteSwap vectors u8" {...@@ -66,6 +67,7 @@ test "@byteSwap vectors u8" {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;68 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6971
70 comptime try vector8();72 comptime try vector8();
71 try vector8();73 try vector8();
...@@ -84,6 +86,7 @@ test "@byteSwap vectors u16" {...@@ -84,6 +86,7 @@ test "@byteSwap vectors u16" {
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8790
88 comptime try vector16();91 comptime try vector16();
89 try vector16();92 try vector16();
...@@ -102,6 +105,7 @@ test "@byteSwap vectors u24" {...@@ -102,6 +105,7 @@ test "@byteSwap vectors u24" {
102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105109
106 comptime try vector24();110 comptime try vector24();
107 try vector24();111 try vector24();
test/behavior/byval_arg_var.zig+1
...@@ -5,6 +5,7 @@ var result: []const u8 = "wrong";...@@ -5,6 +5,7 @@ var result: []const u8 = "wrong";
55
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 start();10 start();
10 blowUpStack(10);11 blowUpStack(10);
test/behavior/call.zig+12
...@@ -24,6 +24,7 @@ test "basic invocations" {...@@ -24,6 +24,7 @@ test "basic invocations" {
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
28 const foo = struct {29 const foo = struct {
29 fn foo() i32 {30 fn foo() i32 {
...@@ -56,6 +57,7 @@ test "tuple parameters" {...@@ -56,6 +57,7 @@ test "tuple parameters" {
56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
60 const add = struct {62 const add = struct {
61 fn add(a: i32, b: i32) i32 {63 fn add(a: i32, b: i32) i32 {
...@@ -88,6 +90,7 @@ test "result location of function call argument through runtime condition and st...@@ -88,6 +90,7 @@ test "result location of function call argument through runtime condition and st
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
90 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9194
92 const E = enum { a, b };95 const E = enum { a, b };
93 const S = struct {96 const S = struct {
...@@ -106,6 +109,7 @@ test "result location of function call argument through runtime condition and st...@@ -106,6 +109,7 @@ test "result location of function call argument through runtime condition and st
106109
107test "function call with 40 arguments" {110test "function call with 40 arguments" {
108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
109113
110 const S = struct {114 const S = struct {
111 fn doTheTest(thirty_nine: i32) !void {115 fn doTheTest(thirty_nine: i32) !void {
...@@ -265,6 +269,7 @@ test "forced tail call" {...@@ -265,6 +269,7 @@ test "forced tail call" {
265 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO269 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO270 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
268273
269 if (builtin.zig_backend == .stage2_llvm) {274 if (builtin.zig_backend == .stage2_llvm) {
270 // Only attempt this test on targets we know have tail call support in LLVM.275 // Only attempt this test on targets we know have tail call support in LLVM.
...@@ -298,6 +303,7 @@ test "inline call preserves tail call" {...@@ -298,6 +303,7 @@ test "inline call preserves tail call" {
298 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
299 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301307
302 if (builtin.zig_backend == .stage2_llvm) {308 if (builtin.zig_backend == .stage2_llvm) {
303 // Only attempt this test on targets we know have tail call support in LLVM.309 // Only attempt this test on targets we know have tail call support in LLVM.
...@@ -329,6 +335,7 @@ test "inline call preserves tail call" {...@@ -329,6 +335,7 @@ test "inline call preserves tail call" {
329test "inline call doesn't re-evaluate non generic struct" {335test "inline call doesn't re-evaluate non generic struct" {
330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
331 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO337 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332339
333 const S = struct {340 const S = struct {
334 fn foo(f: struct { a: u8, b: u8 }) !void {341 fn foo(f: struct { a: u8, b: u8 }) !void {
...@@ -367,6 +374,8 @@ test "Enum constructed by @Type passed as generic argument" {...@@ -367,6 +374,8 @@ test "Enum constructed by @Type passed as generic argument" {
367}374}
368375
369test "generic function with generic function parameter" {376test "generic function with generic function parameter" {
377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378
370 const S = struct {379 const S = struct {
371 fn f(comptime a: fn (anytype) anyerror!void, b: anytype) anyerror!void {380 fn f(comptime a: fn (anytype) anyerror!void, b: anytype) anyerror!void {
372 try a(b);381 try a(b);
...@@ -379,6 +388,8 @@ test "generic function with generic function parameter" {...@@ -379,6 +388,8 @@ test "generic function with generic function parameter" {
379}388}
380389
381test "recursive inline call with comptime known argument" {390test "recursive inline call with comptime known argument" {
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392
382 const S = struct {393 const S = struct {
383 inline fn foo(x: i32) i32 {394 inline fn foo(x: i32) i32 {
384 if (x <= 0) {395 if (x <= 0) {
...@@ -395,6 +406,7 @@ test "recursive inline call with comptime known argument" {...@@ -395,6 +406,7 @@ test "recursive inline call with comptime known argument" {
395test "inline while with @call" {406test "inline while with @call" {
396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398410
399 const S = struct {411 const S = struct {
400 fn inc(a: *u32) void {412 fn inc(a: *u32) void {
test/behavior/cast.zig+88
...@@ -97,6 +97,7 @@ test "@intToFloat" {...@@ -97,6 +97,7 @@ test "@intToFloat" {
97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
100101
101 const S = struct {102 const S = struct {
102 fn doTheTest() !void {103 fn doTheTest() !void {
...@@ -119,6 +120,7 @@ test "@intToFloat(f80)" {...@@ -119,6 +120,7 @@ test "@intToFloat(f80)" {
119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
122124
123 const S = struct {125 const S = struct {
124 fn doTheTest(comptime Int: type) !void {126 fn doTheTest(comptime Int: type) !void {
...@@ -154,6 +156,7 @@ test "@floatToInt" {...@@ -154,6 +156,7 @@ test "@floatToInt" {
154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157160
158 try testFloatToInts();161 try testFloatToInts();
159 comptime try testFloatToInts();162 comptime try testFloatToInts();
...@@ -176,6 +179,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -176,6 +179,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
176test "implicitly cast indirect pointer to maybe-indirect pointer" {179test "implicitly cast indirect pointer to maybe-indirect pointer" {
177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
182 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
179183
180 const S = struct {184 const S = struct {
181 const Self = @This();185 const Self = @This();
...@@ -204,12 +208,16 @@ test "implicitly cast indirect pointer to maybe-indirect pointer" {...@@ -204,12 +208,16 @@ test "implicitly cast indirect pointer to maybe-indirect pointer" {
204}208}
205209
206test "@intCast comptime_int" {210test "@intCast comptime_int" {
211 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212
207 const result = @intCast(i32, 1234);213 const result = @intCast(i32, 1234);
208 try expect(@TypeOf(result) == i32);214 try expect(@TypeOf(result) == i32);
209 try expect(result == 1234);215 try expect(result == 1234);
210}216}
211217
212test "@floatCast comptime_int and comptime_float" {218test "@floatCast comptime_int and comptime_float" {
219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
220
213 {221 {
214 const result = @floatCast(f16, 1234);222 const result = @floatCast(f16, 1234);
215 try expect(@TypeOf(result) == f16);223 try expect(@TypeOf(result) == f16);
...@@ -236,6 +244,7 @@ test "coerce undefined to optional" {...@@ -236,6 +244,7 @@ test "coerce undefined to optional" {
236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
239248
240 try expect(MakeType(void).getNull() == null);249 try expect(MakeType(void).getNull() == null);
241 try expect(MakeType(void).getNonNull() != null);250 try expect(MakeType(void).getNonNull() != null);
...@@ -256,6 +265,7 @@ fn MakeType(comptime T: type) type {...@@ -256,6 +265,7 @@ fn MakeType(comptime T: type) type {
256test "implicit cast from *[N]T to [*c]T" {265test "implicit cast from *[N]T to [*c]T" {
257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
259269
260 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };270 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
261 var y: [*c]u16 = &x;271 var y: [*c]u16 = &x;
...@@ -267,6 +277,8 @@ test "implicit cast from *[N]T to [*c]T" {...@@ -267,6 +277,8 @@ test "implicit cast from *[N]T to [*c]T" {
267}277}
268278
269test "*usize to *void" {279test "*usize to *void" {
280 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
281
270 var i = @as(usize, 0);282 var i = @as(usize, 0);
271 var v = @ptrCast(*void, &i);283 var v = @ptrCast(*void, &i);
272 v.* = {};284 v.* = {};
...@@ -317,6 +329,7 @@ test "peer result null and comptime_int" {...@@ -317,6 +329,7 @@ test "peer result null and comptime_int" {
317test "*const ?[*]const T to [*c]const [*c]const T" {329test "*const ?[*]const T to [*c]const [*c]const T" {
318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
332 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
320333
321 var array = [_]u8{ 'o', 'k' };334 var array = [_]u8{ 'o', 'k' };
322 const opt_array_ptr: ?[*]const u8 = &array;335 const opt_array_ptr: ?[*]const u8 = &array;
...@@ -329,6 +342,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {...@@ -329,6 +342,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
329test "array coersion to undefined at runtime" {342test "array coersion to undefined at runtime" {
330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332346
333 @setRuntimeSafety(true);347 @setRuntimeSafety(true);
334348
...@@ -359,6 +373,7 @@ test "return u8 coercing into ?u32 return type" {...@@ -359,6 +373,7 @@ test "return u8 coercing into ?u32 return type" {
359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
376 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
362377
363 const S = struct {378 const S = struct {
364 fn doTheTest() !void {379 fn doTheTest() !void {
...@@ -380,6 +395,7 @@ test "cast from ?[*]T to ??[*]T" {...@@ -380,6 +395,7 @@ test "cast from ?[*]T to ??[*]T" {
380test "peer type unsigned int to signed" {395test "peer type unsigned int to signed" {
381 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
383399
384 var w: u31 = 5;400 var w: u31 = 5;
385 var x: u8 = 7;401 var x: u8 = 7;
...@@ -392,6 +408,7 @@ test "peer type unsigned int to signed" {...@@ -392,6 +408,7 @@ test "peer type unsigned int to signed" {
392test "expected [*c]const u8, found [*:0]const u8" {408test "expected [*c]const u8, found [*:0]const u8" {
393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
395412
396 var a: [*:0]const u8 = "hello";413 var a: [*:0]const u8 = "hello";
397 var b: [*c]const u8 = a;414 var b: [*c]const u8 = a;
...@@ -403,6 +420,7 @@ test "explicit cast from integer to error type" {...@@ -403,6 +420,7 @@ test "explicit cast from integer to error type" {
403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;420 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
406424
407 try testCastIntToErr(error.ItBroke);425 try testCastIntToErr(error.ItBroke);
408 comptime try testCastIntToErr(error.ItBroke);426 comptime try testCastIntToErr(error.ItBroke);
...@@ -417,6 +435,7 @@ test "peer resolve array and const slice" {...@@ -417,6 +435,7 @@ test "peer resolve array and const slice" {
417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420439
421 try testPeerResolveArrayConstSlice(true);440 try testPeerResolveArrayConstSlice(true);
422 comptime try testPeerResolveArrayConstSlice(true);441 comptime try testPeerResolveArrayConstSlice(true);
...@@ -432,6 +451,7 @@ test "implicitly cast from T to anyerror!?T" {...@@ -432,6 +451,7 @@ test "implicitly cast from T to anyerror!?T" {
432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;451 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;452 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
435455
436 try castToOptionalTypeError(1);456 try castToOptionalTypeError(1);
437 comptime try castToOptionalTypeError(1);457 comptime try castToOptionalTypeError(1);
...@@ -457,6 +477,7 @@ fn castToOptionalTypeError(z: i32) !void {...@@ -457,6 +477,7 @@ fn castToOptionalTypeError(z: i32) !void {
457test "implicitly cast from [0]T to anyerror![]T" {477test "implicitly cast from [0]T to anyerror![]T" {
458 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;478 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
460481
461 try testCastZeroArrayToErrSliceMut();482 try testCastZeroArrayToErrSliceMut();
462 comptime try testCastZeroArrayToErrSliceMut();483 comptime try testCastZeroArrayToErrSliceMut();
...@@ -474,6 +495,7 @@ test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {...@@ -474,6 +495,7 @@ test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
474 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
475 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
498 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
477499
478 const S = struct {500 const S = struct {
479 fn doTheTest() anyerror!void {501 fn doTheTest() anyerror!void {
...@@ -505,6 +527,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {...@@ -505,6 +527,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
505test "implicit cast from *const [N]T to []const T" {527test "implicit cast from *const [N]T to []const T" {
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
508531
509 try testCastConstArrayRefToConstSlice();532 try testCastConstArrayRefToConstSlice();
510 comptime try testCastConstArrayRefToConstSlice();533 comptime try testCastConstArrayRefToConstSlice();
...@@ -530,6 +553,7 @@ fn testCastConstArrayRefToConstSlice() !void {...@@ -530,6 +553,7 @@ fn testCastConstArrayRefToConstSlice() !void {
530test "peer type resolution: error and [N]T" {553test "peer type resolution: error and [N]T" {
531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
533557
534 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));558 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
535 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));559 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
...@@ -554,6 +578,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {...@@ -554,6 +578,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
554test "single-item pointer of array to slice to unknown length pointer" {578test "single-item pointer of array to slice to unknown length pointer" {
555 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
557582
558 try testCastPtrOfArrayToSliceAndPtr();583 try testCastPtrOfArrayToSliceAndPtr();
559 comptime try testCastPtrOfArrayToSliceAndPtr();584 comptime try testCastPtrOfArrayToSliceAndPtr();
...@@ -583,6 +608,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {...@@ -583,6 +608,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
583test "cast *[1][*]const u8 to [*]const ?[*]const u8" {608test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;609 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
585 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
611 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
586612
587 const window_name = [1][*]const u8{"window name"};613 const window_name = [1][*]const u8{"window name"};
588 const x: [*]const ?[*]const u8 = &window_name;614 const x: [*]const ?[*]const u8 = &window_name;
...@@ -595,6 +621,7 @@ test "vector casts" {...@@ -595,6 +621,7 @@ test "vector casts" {
595 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
596 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
597 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO623 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
598625
599 const S = struct {626 const S = struct {
600 fn doTheTest() !void {627 fn doTheTest() !void {
...@@ -636,6 +663,7 @@ test "@floatCast cast down" {...@@ -636,6 +663,7 @@ test "@floatCast cast down" {
636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO665 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
639667
640 {668 {
641 var double: f64 = 0.001534;669 var double: f64 = 0.001534;
...@@ -652,6 +680,7 @@ test "@floatCast cast down" {...@@ -652,6 +680,7 @@ test "@floatCast cast down" {
652test "peer type resolution: unreachable, error set, unreachable" {680test "peer type resolution: unreachable, error set, unreachable" {
653 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
654 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
683 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
655684
656 const Error = error{685 const Error = error{
657 FileDescriptorAlreadyPresentInSet,686 FileDescriptorAlreadyPresentInSet,
...@@ -686,6 +715,7 @@ test "peer type resolution: error set supersets" {...@@ -686,6 +715,7 @@ test "peer type resolution: error set supersets" {
686 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
687 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
718 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
689719
690 const a: error{ One, Two } = undefined;720 const a: error{ One, Two } = undefined;
691 const b: error{One} = undefined;721 const b: error{One} = undefined;
...@@ -715,6 +745,7 @@ test "peer type resolution: disjoint error sets" {...@@ -715,6 +745,7 @@ test "peer type resolution: disjoint error sets" {
715 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO745 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO746 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO747 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
718749
719 const a: error{ One, Two } = undefined;750 const a: error{ One, Two } = undefined;
720 const b: error{Three} = undefined;751 const b: error{Three} = undefined;
...@@ -744,6 +775,7 @@ test "peer type resolution: error union and error set" {...@@ -744,6 +775,7 @@ test "peer type resolution: error union and error set" {
744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO775 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO776 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO777 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
778 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
747779
748 const a: error{Three} = undefined;780 const a: error{Three} = undefined;
749 const b: error{ One, Two }!u32 = undefined;781 const b: error{ One, Two }!u32 = undefined;
...@@ -777,6 +809,7 @@ test "peer type resolution: error union after non-error" {...@@ -777,6 +809,7 @@ test "peer type resolution: error union after non-error" {
777 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
778 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO811 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
812 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
780813
781 const a: u32 = undefined;814 const a: u32 = undefined;
782 const b: error{ One, Two }!u32 = undefined;815 const b: error{ One, Two }!u32 = undefined;
...@@ -810,6 +843,7 @@ test "peer cast *[0]T to E![]const T" {...@@ -810,6 +843,7 @@ test "peer cast *[0]T to E![]const T" {
810 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
811 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;844 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
812 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO845 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
846 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
813847
814 var buffer: [5]u8 = "abcde".*;848 var buffer: [5]u8 = "abcde".*;
815 var buf: anyerror![]const u8 = buffer[0..];849 var buf: anyerror![]const u8 = buffer[0..];
...@@ -824,6 +858,7 @@ test "peer cast *[0]T to []const T" {...@@ -824,6 +858,7 @@ test "peer cast *[0]T to []const T" {
824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;858 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;859 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
826 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO860 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
861 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
827862
828 var buffer: [5]u8 = "abcde".*;863 var buffer: [5]u8 = "abcde".*;
829 var buf: []const u8 = buffer[0..];864 var buf: []const u8 = buffer[0..];
...@@ -834,6 +869,7 @@ test "peer cast *[0]T to []const T" {...@@ -834,6 +869,7 @@ test "peer cast *[0]T to []const T" {
834869
835test "peer cast *[N]T to [*]T" {870test "peer cast *[N]T to [*]T" {
836 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO871 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
872 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
837873
838 var array = [4:99]i32{ 1, 2, 3, 4 };874 var array = [4:99]i32{ 1, 2, 3, 4 };
839 var dest: [*]i32 = undefined;875 var dest: [*]i32 = undefined;
...@@ -845,6 +881,7 @@ test "peer resolution of string literals" {...@@ -845,6 +881,7 @@ test "peer resolution of string literals" {
845 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;881 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
846 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO882 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
847 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO883 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
848885
849 const S = struct {886 const S = struct {
850 const E = enum { a, b, c, d };887 const E = enum { a, b, c, d };
...@@ -866,6 +903,7 @@ test "peer resolution of string literals" {...@@ -866,6 +903,7 @@ test "peer resolution of string literals" {
866test "peer cast [:x]T to []T" {903test "peer cast [:x]T to []T" {
867 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;904 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
868 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO905 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
906 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
869907
870 const S = struct {908 const S = struct {
871 fn doTheTest() !void {909 fn doTheTest() !void {
...@@ -882,6 +920,7 @@ test "peer cast [:x]T to []T" {...@@ -882,6 +920,7 @@ test "peer cast [:x]T to []T" {
882test "peer cast [N:x]T to [N]T" {920test "peer cast [N:x]T to [N]T" {
883 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;921 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
884 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO922 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
923 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
885924
886 const S = struct {925 const S = struct {
887 fn doTheTest() !void {926 fn doTheTest() !void {
...@@ -897,6 +936,7 @@ test "peer cast [N:x]T to [N]T" {...@@ -897,6 +936,7 @@ test "peer cast [N:x]T to [N]T" {
897test "peer cast *[N:x]T to *[N]T" {936test "peer cast *[N:x]T to *[N]T" {
898 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
900940
901 const S = struct {941 const S = struct {
902 fn doTheTest() !void {942 fn doTheTest() !void {
...@@ -912,6 +952,7 @@ test "peer cast *[N:x]T to *[N]T" {...@@ -912,6 +952,7 @@ test "peer cast *[N:x]T to *[N]T" {
912test "peer cast [*:x]T to [*]T" {952test "peer cast [*:x]T to [*]T" {
913 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO953 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
914 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO954 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
955 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
915956
916 const S = struct {957 const S = struct {
917 fn doTheTest() !void {958 fn doTheTest() !void {
...@@ -932,6 +973,7 @@ test "peer cast [:x]T to [*:x]T" {...@@ -932,6 +973,7 @@ test "peer cast [:x]T to [*:x]T" {
932 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;973 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
933 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO974 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
934 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO975 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
976 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
935977
936 const S = struct {978 const S = struct {
937 fn doTheTest() !void {979 fn doTheTest() !void {
...@@ -952,6 +994,7 @@ test "peer cast [:x]T to [*:x]T" {...@@ -952,6 +994,7 @@ test "peer cast [:x]T to [*:x]T" {
952test "peer type resolution implicit cast to return type" {994test "peer type resolution implicit cast to return type" {
953 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;995 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
954 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO996 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
997 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
955998
956 const S = struct {999 const S = struct {
957 fn doTheTest() !void {1000 fn doTheTest() !void {
...@@ -972,6 +1015,7 @@ test "peer type resolution implicit cast to return type" {...@@ -972,6 +1015,7 @@ test "peer type resolution implicit cast to return type" {
972test "peer type resolution implicit cast to variable type" {1015test "peer type resolution implicit cast to variable type" {
973 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1016 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
974 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1017 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1018 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9751019
976 const S = struct {1020 const S = struct {
977 fn doTheTest() !void {1021 fn doTheTest() !void {
...@@ -996,6 +1040,7 @@ test "variable initialization uses result locations properly with regards to the...@@ -996,6 +1040,7 @@ test "variable initialization uses result locations properly with regards to the
996test "cast between C pointer with different but compatible types" {1040test "cast between C pointer with different but compatible types" {
997 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1041 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
998 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1042 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1043 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9991044
1000 const S = struct {1045 const S = struct {
1001 fn foo(arg: [*]c_ushort) u16 {1046 fn foo(arg: [*]c_ushort) u16 {
...@@ -1013,6 +1058,7 @@ test "cast between C pointer with different but compatible types" {...@@ -1013,6 +1058,7 @@ test "cast between C pointer with different but compatible types" {
1013test "peer type resolve string lit with sentinel-terminated mutable slice" {1058test "peer type resolve string lit with sentinel-terminated mutable slice" {
1014 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1059 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10161062
1017 var array: [4:0]u8 = undefined;1063 var array: [4:0]u8 = undefined;
1018 array[4] = 0; // TODO remove this when #4372 is solved1064 array[4] = 0; // TODO remove this when #4372 is solved
...@@ -1022,6 +1068,8 @@ test "peer type resolve string lit with sentinel-terminated mutable slice" {...@@ -1022,6 +1068,8 @@ test "peer type resolve string lit with sentinel-terminated mutable slice" {
1022}1068}
10231069
1024test "peer type resolve array pointers, one of them const" {1070test "peer type resolve array pointers, one of them const" {
1071 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1072
1025 var array1: [4]u8 = undefined;1073 var array1: [4]u8 = undefined;
1026 const array2: [5]u8 = undefined;1074 const array2: [5]u8 = undefined;
1027 comptime try expect(@TypeOf(&array1, &array2) == []const u8);1075 comptime try expect(@TypeOf(&array1, &array2) == []const u8);
...@@ -1029,6 +1077,8 @@ test "peer type resolve array pointers, one of them const" {...@@ -1029,6 +1077,8 @@ test "peer type resolve array pointers, one of them const" {
1029}1077}
10301078
1031test "peer type resolve array pointer and unknown pointer" {1079test "peer type resolve array pointer and unknown pointer" {
1080 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1081
1032 const const_array: [4]u8 = undefined;1082 const const_array: [4]u8 = undefined;
1033 var array: [4]u8 = undefined;1083 var array: [4]u8 = undefined;
1034 var const_ptr: [*]const u8 = undefined;1084 var const_ptr: [*]const u8 = undefined;
...@@ -1048,6 +1098,8 @@ test "peer type resolve array pointer and unknown pointer" {...@@ -1048,6 +1098,8 @@ test "peer type resolve array pointer and unknown pointer" {
1048}1098}
10491099
1050test "comptime float casts" {1100test "comptime float casts" {
1101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1102
1051 const a = @intToFloat(comptime_float, 1);1103 const a = @intToFloat(comptime_float, 1);
1052 try expect(a == 1);1104 try expect(a == 1);
1053 try expect(@TypeOf(a) == comptime_float);1105 try expect(@TypeOf(a) == comptime_float);
...@@ -1078,6 +1130,7 @@ test "implicit cast from [*]T to ?*anyopaque" {...@@ -1078,6 +1130,7 @@ test "implicit cast from [*]T to ?*anyopaque" {
1078 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1079 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1080 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10811134
1082 var a = [_]u8{ 3, 2, 1 };1135 var a = [_]u8{ 3, 2, 1 };
1083 var runtime_zero: usize = 0;1136 var runtime_zero: usize = 0;
...@@ -1093,6 +1146,8 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {...@@ -1093,6 +1146,8 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
1093}1146}
10941147
1095test "compile time int to ptr of function" {1148test "compile time int to ptr of function" {
1149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1150
1096 try foobar(FUNCTION_CONSTANT);1151 try foobar(FUNCTION_CONSTANT);
1097}1152}
10981153
...@@ -1109,6 +1164,7 @@ test "implicit ptr to *anyopaque" {...@@ -1109,6 +1164,7 @@ test "implicit ptr to *anyopaque" {
1109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11121168
1113 var a: u32 = 1;1169 var a: u32 = 1;
1114 var ptr: *align(@alignOf(u32)) anyopaque = &a;1170 var ptr: *align(@alignOf(u32)) anyopaque = &a;
...@@ -1122,6 +1178,7 @@ test "implicit ptr to *anyopaque" {...@@ -1122,6 +1178,7 @@ test "implicit ptr to *anyopaque" {
1122test "return null from fn() anyerror!?&T" {1178test "return null from fn() anyerror!?&T" {
1123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1181 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11251182
1126 const a = returnNullFromOptionalTypeErrorRef();1183 const a = returnNullFromOptionalTypeErrorRef();
1127 const b = returnNullLitFromOptionalTypeErrorRef();1184 const b = returnNullLitFromOptionalTypeErrorRef();
...@@ -1138,6 +1195,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {...@@ -1138,6 +1195,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
1138test "peer type resolution: [0]u8 and []const u8" {1195test "peer type resolution: [0]u8 and []const u8" {
1139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11411199
1142 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);1200 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
1143 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);1201 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
...@@ -1158,6 +1216,7 @@ test "implicitly cast from [N]T to ?[]const T" {...@@ -1158,6 +1216,7 @@ test "implicitly cast from [N]T to ?[]const T" {
1158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11611220
1162 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));1221 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
1163 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));1222 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
...@@ -1172,6 +1231,7 @@ test "cast u128 to f128 and back" {...@@ -1172,6 +1231,7 @@ test "cast u128 to f128 and back" {
1172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1173 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1232 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11751235
1176 comptime try testCast128();1236 comptime try testCast128();
1177 try testCast128();1237 try testCast128();
...@@ -1193,6 +1253,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -1193,6 +1253,7 @@ test "implicit cast from *[N]T to ?[*]T" {
1193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11961257
1197 var x: ?[*]u16 = null;1258 var x: ?[*]u16 = null;
1198 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };1259 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
...@@ -1208,6 +1269,7 @@ test "implicit cast from *T to ?*anyopaque" {...@@ -1208,6 +1269,7 @@ test "implicit cast from *T to ?*anyopaque" {
1208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1270 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12111273
1212 var a: u8 = 1;1274 var a: u8 = 1;
1213 incrementVoidPtrValue(&a);1275 incrementVoidPtrValue(&a);
...@@ -1221,6 +1283,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {...@@ -1221,6 +1283,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
1221test "implicit cast *[0]T to E![]const u8" {1283test "implicit cast *[0]T to E![]const u8" {
1222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1286 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12241287
1225 var x = @as(anyerror![]const u8, &[0]u8{});1288 var x = @as(anyerror![]const u8, &[0]u8{});
1226 try expect((x catch unreachable).len == 0);1289 try expect((x catch unreachable).len == 0);
...@@ -1228,10 +1291,14 @@ test "implicit cast *[0]T to E![]const u8" {...@@ -1228,10 +1291,14 @@ test "implicit cast *[0]T to E![]const u8" {
12281291
1229var global_array: [4]u8 = undefined;1292var global_array: [4]u8 = undefined;
1230test "cast from array reference to fn: comptime fn ptr" {1293test "cast from array reference to fn: comptime fn ptr" {
1294 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1295
1231 const f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);1296 const f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
1232 try expect(@ptrToInt(f) == @ptrToInt(&global_array));1297 try expect(@ptrToInt(f) == @ptrToInt(&global_array));
1233}1298}
1234test "cast from array reference to fn: runtime fn ptr" {1299test "cast from array reference to fn: runtime fn ptr" {
1300 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1301
1235 var f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);1302 var f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
1236 try expect(@ptrToInt(f) == @ptrToInt(&global_array));1303 try expect(@ptrToInt(f) == @ptrToInt(&global_array));
1237}1304}
...@@ -1240,6 +1307,7 @@ test "*const [N]null u8 to ?[]const u8" {...@@ -1240,6 +1307,7 @@ test "*const [N]null u8 to ?[]const u8" {
1240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1310 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12431311
1244 const S = struct {1312 const S = struct {
1245 fn doTheTest() !void {1313 fn doTheTest() !void {
...@@ -1253,6 +1321,8 @@ test "*const [N]null u8 to ?[]const u8" {...@@ -1253,6 +1321,8 @@ test "*const [N]null u8 to ?[]const u8" {
1253}1321}
12541322
1255test "cast between [*c]T and ?[*:0]T on fn parameter" {1323test "cast between [*c]T and ?[*:0]T on fn parameter" {
1324 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1325
1256 const S = struct {1326 const S = struct {
1257 const Handler = ?fn ([*c]const u8) callconv(.C) void;1327 const Handler = ?fn ([*c]const u8) callconv(.C) void;
1258 fn addCallback(comptime handler: Handler) void {1328 fn addCallback(comptime handler: Handler) void {
...@@ -1275,12 +1345,15 @@ test "assignment to optional pointer result loc" {...@@ -1275,12 +1345,15 @@ test "assignment to optional pointer result loc" {
1275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12781349
1279 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };1350 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
1280 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));1351 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));
1281}1352}
12821353
1283test "cast between *[N]void and []void" {1354test "cast between *[N]void and []void" {
1355 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1356
1284 var a: [4]void = undefined;1357 var a: [4]void = undefined;
1285 var b: []void = &a;1358 var b: []void = &a;
1286 try expect(b.len == 4);1359 try expect(b.len == 4);
...@@ -1289,6 +1362,7 @@ test "cast between *[N]void and []void" {...@@ -1289,6 +1362,7 @@ test "cast between *[N]void and []void" {
1289test "peer resolve arrays of different size to const slice" {1362test "peer resolve arrays of different size to const slice" {
1290 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1365 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12921366
1293 try expect(mem.eql(u8, boolToStr(true), "true"));1367 try expect(mem.eql(u8, boolToStr(true), "true"));
1294 try expect(mem.eql(u8, boolToStr(false), "false"));1368 try expect(mem.eql(u8, boolToStr(false), "false"));
...@@ -1305,6 +1379,7 @@ test "cast f16 to wider types" {...@@ -1305,6 +1379,7 @@ test "cast f16 to wider types" {
1305 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1379 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1306 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1380 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1307 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1382 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13081383
1309 const S = struct {1384 const S = struct {
1310 fn doTheTest() !void {1385 fn doTheTest() !void {
...@@ -1324,6 +1399,7 @@ test "cast f128 to narrower types" {...@@ -1324,6 +1399,7 @@ test "cast f128 to narrower types" {
1324 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1325 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1400 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1326 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13271403
1328 const S = struct {1404 const S = struct {
1329 fn doTheTest() !void {1405 fn doTheTest() !void {
...@@ -1341,6 +1417,7 @@ test "peer type resolution: unreachable, null, slice" {...@@ -1341,6 +1417,7 @@ test "peer type resolution: unreachable, null, slice" {
1341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1420 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13441421
1345 const S = struct {1422 const S = struct {
1346 fn doTheTest(num: usize, word: []const u8) !void {1423 fn doTheTest(num: usize, word: []const u8) !void {
...@@ -1380,6 +1457,7 @@ test "cast compatible optional types" {...@@ -1380,6 +1457,7 @@ test "cast compatible optional types" {
1380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1460 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13831461
1384 var a: ?[:0]const u8 = null;1462 var a: ?[:0]const u8 = null;
1385 var b: ?[]const u8 = a;1463 var b: ?[]const u8 = a;
...@@ -1389,6 +1467,7 @@ test "cast compatible optional types" {...@@ -1389,6 +1467,7 @@ test "cast compatible optional types" {
1389test "coerce undefined single-item pointer of array to error union of slice" {1467test "coerce undefined single-item pointer of array to error union of slice" {
1390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13921471
1393 const a = @as([*]u8, undefined)[0..0];1472 const a = @as([*]u8, undefined)[0..0];
1394 var b: error{a}![]const u8 = a;1473 var b: error{a}![]const u8 = a;
...@@ -1398,6 +1477,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {...@@ -1398,6 +1477,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {
13981477
1399test "pointer to empty struct literal to mutable slice" {1478test "pointer to empty struct literal to mutable slice" {
1400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14011481
1402 var x: []i32 = &.{};1482 var x: []i32 = &.{};
1403 try expect(x.len == 0);1483 try expect(x.len == 0);
...@@ -1409,6 +1489,7 @@ test "coerce between pointers of compatible differently-named floats" {...@@ -1409,6 +1489,7 @@ test "coerce between pointers of compatible differently-named floats" {
1409 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1489 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1410 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1490 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1411 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1491 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1492 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14121493
1413 if (builtin.os.tag == .windows) {1494 if (builtin.os.tag == .windows) {
1414 // https://github.com/ziglang/zig/issues/123961495 // https://github.com/ziglang/zig/issues/12396
...@@ -1463,6 +1544,7 @@ test "cast typed undefined to int" {...@@ -1463,6 +1544,7 @@ test "cast typed undefined to int" {
14631544
1464test "implicit cast from [:0]T to [*c]T" {1545test "implicit cast from [:0]T to [*c]T" {
1465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14661548
1467 var a: [:0]const u8 = "foo";1549 var a: [:0]const u8 = "foo";
1468 var b: [*c]const u8 = a;1550 var b: [*c]const u8 = a;
...@@ -1485,6 +1567,7 @@ test "bitcast packed struct with u0" {...@@ -1485,6 +1567,7 @@ test "bitcast packed struct with u0" {
14851567
1486test "optional pointer coerced to optional allowzero pointer" {1568test "optional pointer coerced to optional allowzero pointer" {
1487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1570 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14881571
1489 var p: ?*u32 = undefined;1572 var p: ?*u32 = undefined;
1490 var q: ?*allowzero u32 = undefined;1573 var q: ?*allowzero u32 = undefined;
...@@ -1494,6 +1577,8 @@ test "optional pointer coerced to optional allowzero pointer" {...@@ -1494,6 +1577,8 @@ test "optional pointer coerced to optional allowzero pointer" {
1494}1577}
14951578
1496test "single item pointer to pointer to array to slice" {1579test "single item pointer to pointer to array to slice" {
1580 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1581
1497 var x: i32 = 1234;1582 var x: i32 = 1234;
1498 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);1583 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
1499 const z1 = @as([]const i32, @as(*[1]i32, &x));1584 const z1 = @as([]const i32, @as(*[1]i32, &x));
...@@ -1502,6 +1587,7 @@ test "single item pointer to pointer to array to slice" {...@@ -1502,6 +1587,7 @@ test "single item pointer to pointer to array to slice" {
15021587
1503test "peer type resolution forms error union" {1588test "peer type resolution forms error union" {
1504 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1589 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1590 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15051591
1506 var foo: i32 = 123;1592 var foo: i32 = 123;
1507 const result = if (foo < 0) switch (-foo) {1593 const result = if (foo < 0) switch (-foo) {
...@@ -1528,6 +1614,8 @@ test "@volatileCast without a result location" {...@@ -1528,6 +1614,8 @@ test "@volatileCast without a result location" {
1528}1614}
15291615
1530test "coercion from single-item pointer to @as to slice" {1616test "coercion from single-item pointer to @as to slice" {
1617 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1618
1531 var x: u32 = 1;1619 var x: u32 = 1;
15321620
1533 // Why the following line gets a compile error?1621 // Why the following line gets a compile error?
test/behavior/cast_int.zig+1
...@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {...@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 var x: u128 = maxInt(u128);13 var x: u128 = maxInt(u128);
13 var y: i32 = 120;14 var y: i32 = 120;
test/behavior/const_slice_child.zig+1
...@@ -10,6 +10,7 @@ test "const slice child" {...@@ -10,6 +10,7 @@ test "const slice child" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1314
14 const strs = [_][*]const u8{ "one", "two", "three" };15 const strs = [_][*]const u8{ "one", "two", "three" };
15 argv = &strs;16 argv = &strs;
test/behavior/decltest.zig+4
...@@ -1,7 +1,11 @@...@@ -1,7 +1,11 @@
1const builtin = @import("builtin");
2
1pub fn the_add_function(a: u32, b: u32) u32 {3pub fn the_add_function(a: u32, b: u32) u32 {
2 return a + b;4 return a + b;
3}5}
46
5test the_add_function {7test the_add_function {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
6 if (the_add_function(1, 2) != 3) unreachable;10 if (the_add_function(1, 2) != 3) unreachable;
7}11}
test/behavior/defer.zig+9
...@@ -5,6 +5,8 @@ const expectEqual = std.testing.expectEqual;...@@ -5,6 +5,8 @@ const expectEqual = std.testing.expectEqual;
5const expectError = std.testing.expectError;5const expectError = std.testing.expectError;
66
7test "break and continue inside loop inside defer expression" {7test "break and continue inside loop inside defer expression" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
8 testBreakContInDefer(10);10 testBreakContInDefer(10);
9 comptime testBreakContInDefer(10);11 comptime testBreakContInDefer(10);
10}12}
...@@ -21,6 +23,8 @@ fn testBreakContInDefer(x: usize) void {...@@ -21,6 +23,8 @@ fn testBreakContInDefer(x: usize) void {
21}23}
2224
23test "defer and labeled break" {25test "defer and labeled break" {
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
27
24 var i = @as(usize, 0);28 var i = @as(usize, 0);
2529
26 blk: {30 blk: {
...@@ -34,6 +38,7 @@ test "defer and labeled break" {...@@ -34,6 +38,7 @@ test "defer and labeled break" {
34test "errdefer does not apply to fn inside fn" {38test "errdefer does not apply to fn inside fn" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3742
38 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);43 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
39}44}
...@@ -53,6 +58,7 @@ test "return variable while defer expression in scope to modify it" {...@@ -53,6 +58,7 @@ test "return variable while defer expression in scope to modify it" {
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5662
57 const S = struct {63 const S = struct {
58 fn doTheTest() !void {64 fn doTheTest() !void {
...@@ -94,6 +100,7 @@ test "mixing normal and error defers" {...@@ -94,6 +100,7 @@ test "mixing normal and error defers" {
94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
97104
98 try expect(runSomeErrorDefers(true) catch unreachable);105 try expect(runSomeErrorDefers(true) catch unreachable);
99 try expect(result[0] == 'c');106 try expect(result[0] == 'c');
...@@ -113,6 +120,7 @@ test "errdefer with payload" {...@@ -113,6 +120,7 @@ test "errdefer with payload" {
113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
116124
117 const S = struct {125 const S = struct {
118 fn foo() !i32 {126 fn foo() !i32 {
...@@ -132,6 +140,7 @@ test "errdefer with payload" {...@@ -132,6 +140,7 @@ test "errdefer with payload" {
132test "simple else prong doesn't emit an error for unreachable else prong" {140test "simple else prong doesn't emit an error for unreachable else prong" {
133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135144
136 const S = struct {145 const S = struct {
137 fn foo() error{Foo}!void {146 fn foo() error{Foo}!void {
test/behavior/duplicated_test_names.zig+4
...@@ -1,3 +1,5 @@...@@ -1,3 +1,5 @@
1const builtin = @import("builtin");
2
1const Namespace = struct {3const Namespace = struct {
2 test "thingy" {}4 test "thingy" {}
3};5};
...@@ -13,5 +15,7 @@ comptime {...@@ -13,5 +15,7 @@ comptime {
13test "thingy" {}15test "thingy" {}
1416
15test thingy {17test thingy {
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
16 if (thingy(1, 2) != 3) unreachable;20 if (thingy(1, 2) != 3) unreachable;
17}21}
test/behavior/empty_tuple_fields.zig+2
...@@ -4,6 +4,7 @@ const builtin = @import("builtin");...@@ -4,6 +4,7 @@ const builtin = @import("builtin");
4test "empty file level struct" {4test "empty file level struct" {
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
8 const T = @import("empty_file_level_struct.zig");9 const T = @import("empty_file_level_struct.zig");
9 const info = @typeInfo(T);10 const info = @typeInfo(T);
...@@ -15,6 +16,7 @@ test "empty file level struct" {...@@ -15,6 +16,7 @@ test "empty file level struct" {
15test "empty file level union" {16test "empty file level union" {
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
19 const T = @import("empty_file_level_union.zig");21 const T = @import("empty_file_level_union.zig");
20 const info = @typeInfo(T);22 const info = @typeInfo(T);
test/behavior/empty_union.zig+6
...@@ -12,6 +12,7 @@ test "switch on empty enum" {...@@ -12,6 +12,7 @@ test "switch on empty enum" {
1212
13test "switch on empty enum with a specified tag type" {13test "switch on empty enum with a specified tag type" {
14 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1516
16 const E = enum(u8) {};17 const E = enum(u8) {};
17 var e: E = undefined;18 var e: E = undefined;
...@@ -21,6 +22,7 @@ test "switch on empty enum with a specified tag type" {...@@ -21,6 +22,7 @@ test "switch on empty enum with a specified tag type" {
21test "switch on empty auto numbered tagged union" {22test "switch on empty auto numbered tagged union" {
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2426
25 const U = union(enum(u8)) {};27 const U = union(enum(u8)) {};
26 var u: U = undefined;28 var u: U = undefined;
...@@ -50,6 +52,8 @@ test "empty extern union" {...@@ -50,6 +52,8 @@ test "empty extern union" {
50}52}
5153
52test "empty union passed as argument" {54test "empty union passed as argument" {
55 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
53 const U = union(enum) {57 const U = union(enum) {
54 fn f(u: @This()) void {58 fn f(u: @This()) void {
55 switch (u) {}59 switch (u) {}
...@@ -59,6 +63,8 @@ test "empty union passed as argument" {...@@ -59,6 +63,8 @@ test "empty union passed as argument" {
59}63}
6064
61test "empty enum passed as argument" {65test "empty enum passed as argument" {
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
67
62 const E = enum {68 const E = enum {
63 fn f(e: @This()) void {69 fn f(e: @This()) void {
64 switch (e) {}70 switch (e) {}
test/behavior/enum.zig+23
...@@ -27,6 +27,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };...@@ -27,6 +27,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
27test "int to enum" {27test "int to enum" {
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3031
31 try testIntToEnumEval(3);32 try testIntToEnumEval(3);
32}33}
...@@ -575,6 +576,8 @@ test "enum literal equality" {...@@ -575,6 +576,8 @@ test "enum literal equality" {
575}576}
576577
577test "enum literal cast to enum" {578test "enum literal cast to enum" {
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580
578 const Color = enum { Auto, Off, On };581 const Color = enum { Auto, Off, On };
579582
580 var color1: Color = .Auto;583 var color1: Color = .Auto;
...@@ -617,6 +620,7 @@ test "enum with specified tag values" {...@@ -617,6 +620,7 @@ test "enum with specified tag values" {
617test "non-exhaustive enum" {620test "non-exhaustive enum" {
618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
619 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
620624
621 const S = struct {625 const S = struct {
622 const E = enum(u8) { a, b, _ };626 const E = enum(u8) { a, b, _ };
...@@ -659,6 +663,8 @@ test "non-exhaustive enum" {...@@ -659,6 +663,8 @@ test "non-exhaustive enum" {
659}663}
660664
661test "empty non-exhaustive enum" {665test "empty non-exhaustive enum" {
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
667
662 const S = struct {668 const S = struct {
663 const E = enum(u8) { _ };669 const E = enum(u8) { _ };
664670
...@@ -680,6 +686,7 @@ test "empty non-exhaustive enum" {...@@ -680,6 +686,7 @@ test "empty non-exhaustive enum" {
680test "single field non-exhaustive enum" {686test "single field non-exhaustive enum" {
681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
683690
684 const S = struct {691 const S = struct {
685 const E = enum(u8) { a, _ };692 const E = enum(u8) { a, _ };
...@@ -852,6 +859,8 @@ fn doALoopThing(id: EnumWithOneMember) void {...@@ -852,6 +859,8 @@ fn doALoopThing(id: EnumWithOneMember) void {
852}859}
853860
854test "comparison operator on enum with one member is comptime-known" {861test "comparison operator on enum with one member is comptime-known" {
862 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
863
855 doALoopThing(EnumWithOneMember.Eof);864 doALoopThing(EnumWithOneMember.Eof);
856}865}
857866
...@@ -865,6 +874,8 @@ test "switch on enum with one member is comptime-known" {...@@ -865,6 +874,8 @@ test "switch on enum with one member is comptime-known" {
865}874}
866875
867test "method call on an enum" {876test "method call on an enum" {
877 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
878
868 const S = struct {879 const S = struct {
869 const E = enum {880 const E = enum {
870 one,881 one,
...@@ -904,6 +915,7 @@ test "enum literal casting to tagged union" {...@@ -904,6 +915,7 @@ test "enum literal casting to tagged union" {
904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;915 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
905 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;916 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO917 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
918 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
907919
908 const Arch = union(enum) {920 const Arch = union(enum) {
909 x86_64,921 x86_64,
...@@ -929,6 +941,7 @@ const Bar = enum { A, B, C, D };...@@ -929,6 +941,7 @@ const Bar = enum { A, B, C, D };
929test "enum literal casting to error union with payload enum" {941test "enum literal casting to error union with payload enum" {
930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;942 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO943 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
944 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
932945
933 var bar: error{B}!Bar = undefined;946 var bar: error{B}!Bar = undefined;
934 bar = .B; // should never cast to the error set947 bar = .B; // should never cast to the error set
...@@ -940,6 +953,7 @@ test "constant enum initialization with differing sizes" {...@@ -940,6 +953,7 @@ test "constant enum initialization with differing sizes" {
940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
941 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;954 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
942 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO955 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
956 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
943957
944 try test3_1(test3_foo);958 try test3_1(test3_foo);
945 try test3_2(test3_bar);959 try test3_2(test3_bar);
...@@ -982,6 +996,7 @@ test "@tagName" {...@@ -982,6 +996,7 @@ test "@tagName" {
982 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;996 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
983 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;997 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
984 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO998 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
999 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9851000
986 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));1001 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
987 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));1002 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
...@@ -997,6 +1012,7 @@ test "@tagName non-exhaustive enum" {...@@ -997,6 +1012,7 @@ test "@tagName non-exhaustive enum" {
997 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1012 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
998 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
999 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10001016
1001 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));1017 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
1002 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));1018 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
...@@ -1007,6 +1023,7 @@ test "@tagName is null-terminated" {...@@ -1007,6 +1023,7 @@ test "@tagName is null-terminated" {
1007 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1023 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1008 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1024 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1009 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1025 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1026 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10101027
1011 const S = struct {1028 const S = struct {
1012 fn doTheTest(n: BareNumber) !void {1029 fn doTheTest(n: BareNumber) !void {
...@@ -1021,6 +1038,7 @@ test "tag name with assigned enum values" {...@@ -1021,6 +1038,7 @@ test "tag name with assigned enum values" {
1021 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1022 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1039 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1023 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1041 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10241042
1025 const LocalFoo = enum(u8) {1043 const LocalFoo = enum(u8) {
1026 A = 1,1044 A = 1,
...@@ -1033,6 +1051,7 @@ test "tag name with assigned enum values" {...@@ -1033,6 +1051,7 @@ test "tag name with assigned enum values" {
1033test "@tagName on enum literals" {1051test "@tagName on enum literals" {
1034 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1052 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1035 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10361055
1037 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1056 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
1038 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1057 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
...@@ -1042,6 +1061,7 @@ test "enum literal casting to optional" {...@@ -1042,6 +1061,7 @@ test "enum literal casting to optional" {
1042 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1061 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1043 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1062 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1044 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1063 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10451065
1046 var bar: ?Bar = undefined;1066 var bar: ?Bar = undefined;
1047 bar = .B;1067 bar = .B;
...@@ -1070,6 +1090,7 @@ test "bit field access with enum fields" {...@@ -1070,6 +1090,7 @@ test "bit field access with enum fields" {
1070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1090 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1091 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1092 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1093 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10731094
1074 var data = bit_field_1;1095 var data = bit_field_1;
1075 try expect(getA(&data) == A.Two);1096 try expect(getA(&data) == A.Two);
...@@ -1110,6 +1131,7 @@ test "tag name functions are unique" {...@@ -1110,6 +1131,7 @@ test "tag name functions are unique" {
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11131135
1114 {1136 {
1115 const E = enum { a, b };1137 const E = enum { a, b };
...@@ -1128,6 +1150,7 @@ test "tag name functions are unique" {...@@ -1128,6 +1150,7 @@ test "tag name functions are unique" {
1128test "size of enum with only one tag which has explicit integer tag type" {1150test "size of enum with only one tag which has explicit integer tag type" {
1129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11311154
1132 const E = enum(u8) { nope = 10 };1155 const E = enum(u8) { nope = 10 };
1133 const S0 = struct { e: E };1156 const S0 = struct { e: E };
test/behavior/error.zig+39
...@@ -16,12 +16,14 @@ fn expectError(expected_err: anyerror, observed_err_union: anytype) !void {...@@ -16,12 +16,14 @@ fn expectError(expected_err: anyerror, observed_err_union: anytype) !void {
16}16}
1717
18test "error values" {18test "error values" {
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19 const a = @errorToInt(error.err1);20 const a = @errorToInt(error.err1);
20 const b = @errorToInt(error.err2);21 const b = @errorToInt(error.err2);
21 try expect(a != b);22 try expect(a != b);
22}23}
2324
24test "redefinition of error values allowed" {25test "redefinition of error values allowed" {
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
25 shouldBeNotEqual(error.AnError, error.SecondError);27 shouldBeNotEqual(error.AnError, error.SecondError);
26}28}
27fn shouldBeNotEqual(a: anyerror, b: anyerror) void {29fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
...@@ -30,6 +32,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {...@@ -30,6 +32,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
3032
31test "error binary operator" {33test "error binary operator" {
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3336
34 const a = errBinaryOperatorG(true) catch 3;37 const a = errBinaryOperatorG(true) catch 3;
35 const b = errBinaryOperatorG(false) catch 3;38 const b = errBinaryOperatorG(false) catch 3;
...@@ -61,12 +64,14 @@ pub fn baz() anyerror!i32 {...@@ -61,12 +64,14 @@ pub fn baz() anyerror!i32 {
6164
62test "error wrapping" {65test "error wrapping" {
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6468
65 try expect((baz() catch unreachable) == 15);69 try expect((baz() catch unreachable) == 15);
66}70}
6771
68test "unwrap simple value from error" {72test "unwrap simple value from error" {
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7075
71 const i = unwrapSimpleValueFromErrorDo() catch unreachable;76 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
72 try expect(i == 13);77 try expect(i == 13);
...@@ -77,6 +82,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {...@@ -77,6 +82,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
7782
78test "error return in assignment" {83test "error return in assignment" {
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8086
81 doErrReturnInAssignment() catch unreachable;87 doErrReturnInAssignment() catch unreachable;
82}88}
...@@ -99,6 +105,7 @@ test "syntax: optional operator in front of error union operator" {...@@ -99,6 +105,7 @@ test "syntax: optional operator in front of error union operator" {
99test "widen cast integer payload of error union function call" {105test "widen cast integer payload of error union function call" {
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102109
103 const S = struct {110 const S = struct {
104 fn errorable() !u64 {111 fn errorable() !u64 {
...@@ -124,6 +131,7 @@ test "debug info for optional error set" {...@@ -124,6 +131,7 @@ test "debug info for optional error set" {
124131
125test "implicit cast to optional to error union to return result loc" {132test "implicit cast to optional to error union to return result loc" {
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127135
128 const S = struct {136 const S = struct {
129 fn entry() !void {137 fn entry() !void {
...@@ -144,11 +152,13 @@ test "implicit cast to optional to error union to return result loc" {...@@ -144,11 +152,13 @@ test "implicit cast to optional to error union to return result loc" {
144}152}
145153
146test "fn returning empty error set can be passed as fn returning any error" {154test "fn returning empty error set can be passed as fn returning any error" {
155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147 entry();156 entry();
148 comptime entry();157 comptime entry();
149}158}
150159
151test "fn returning empty error set can be passed as fn returning any error - pointer" {160test "fn returning empty error set can be passed as fn returning any error - pointer" {
161 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
152 entryPtr();162 entryPtr();
153 comptime entryPtr();163 comptime entryPtr();
154}164}
...@@ -216,6 +226,7 @@ fn testErrorSetType() !void {...@@ -216,6 +226,7 @@ fn testErrorSetType() !void {
216226
217test "explicit error set cast" {227test "explicit error set cast" {
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219230
220 try testExplicitErrorSetCast(Set1.A);231 try testExplicitErrorSetCast(Set1.A);
221 comptime try testExplicitErrorSetCast(Set1.A);232 comptime try testExplicitErrorSetCast(Set1.A);
...@@ -234,6 +245,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {...@@ -234,6 +245,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
234245
235test "comptime test error for empty error set" {246test "comptime test error for empty error set" {
236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237249
238 try testComptimeTestErrorEmptySet(1234);250 try testComptimeTestErrorEmptySet(1234);
239 comptime try testComptimeTestErrorEmptySet(1234);251 comptime try testComptimeTestErrorEmptySet(1234);
...@@ -269,6 +281,7 @@ test "inferred empty error set comptime catch" {...@@ -269,6 +281,7 @@ test "inferred empty error set comptime catch" {
269}281}
270282
271test "error inference with an empty set" {283test "error inference with an empty set" {
284 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
272 const S = struct {285 const S = struct {
273 const Struct = struct {286 const Struct = struct {
274 pub fn func() (error{})!usize {287 pub fn func() (error{})!usize {
...@@ -291,6 +304,7 @@ test "error inference with an empty set" {...@@ -291,6 +304,7 @@ test "error inference with an empty set" {
291304
292test "error union peer type resolution" {305test "error union peer type resolution" {
293 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
294308
295 try testErrorUnionPeerTypeResolution(1);309 try testErrorUnionPeerTypeResolution(1);
296}310}
...@@ -322,6 +336,7 @@ fn quux_1() !i32 {...@@ -322,6 +336,7 @@ fn quux_1() !i32 {
322336
323test "error: Zero sized error set returned with value payload crash" {337test "error: Zero sized error set returned with value payload crash" {
324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO338 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
339 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
325340
326 _ = try foo3(0);341 _ = try foo3(0);
327 _ = comptime try foo3(0);342 _ = comptime try foo3(0);
...@@ -334,6 +349,7 @@ fn foo3(b: usize) Error!usize {...@@ -334,6 +349,7 @@ fn foo3(b: usize) Error!usize {
334349
335test "error: Infer error set from literals" {350test "error: Infer error set from literals" {
336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337353
338 _ = nullLiteral("n") catch |err| handleErrors(err);354 _ = nullLiteral("n") catch |err| handleErrors(err);
339 _ = floatLiteral("n") catch |err| handleErrors(err);355 _ = floatLiteral("n") catch |err| handleErrors(err);
...@@ -373,6 +389,7 @@ test "nested error union function call in optional unwrap" {...@@ -373,6 +389,7 @@ test "nested error union function call in optional unwrap" {
373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
376393
377 const S = struct {394 const S = struct {
378 const Foo = struct {395 const Foo = struct {
...@@ -419,6 +436,7 @@ test "nested error union function call in optional unwrap" {...@@ -419,6 +436,7 @@ test "nested error union function call in optional unwrap" {
419test "return function call to error set from error union function" {436test "return function call to error set from error union function" {
420 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422440
423 const S = struct {441 const S = struct {
424 fn errorable() anyerror!i32 {442 fn errorable() anyerror!i32 {
...@@ -437,6 +455,7 @@ test "optional error set is the same size as error set" {...@@ -437,6 +455,7 @@ test "optional error set is the same size as error set" {
437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
438 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
440459
441 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));460 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));
442 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));461 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));
...@@ -452,6 +471,7 @@ test "optional error set is the same size as error set" {...@@ -452,6 +471,7 @@ test "optional error set is the same size as error set" {
452test "nested catch" {471test "nested catch" {
453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
474 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
455475
456 const S = struct {476 const S = struct {
457 fn entry() !void {477 fn entry() !void {
...@@ -476,6 +496,7 @@ test "nested catch" {...@@ -476,6 +496,7 @@ test "nested catch" {
476496
477test "function pointer with return type that is error union with payload which is pointer of parent struct" {497test "function pointer with return type that is error union with payload which is pointer of parent struct" {
478 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO498 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
499 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
479500
480 const S = struct {501 const S = struct {
481 const Foo = struct {502 const Foo = struct {
...@@ -501,6 +522,7 @@ test "return result loc as peer result loc in inferred error set function" {...@@ -501,6 +522,7 @@ test "return result loc as peer result loc in inferred error set function" {
501 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO522 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
502 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504526
505 const S = struct {527 const S = struct {
506 fn doTheTest() !void {528 fn doTheTest() !void {
...@@ -532,6 +554,7 @@ test "error payload type is correctly resolved" {...@@ -532,6 +554,7 @@ test "error payload type is correctly resolved" {
532 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO554 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO555 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
535558
536 const MyIntWrapper = struct {559 const MyIntWrapper = struct {
537 const Self = @This();560 const Self = @This();
...@@ -561,6 +584,7 @@ test "@errorName" {...@@ -561,6 +584,7 @@ test "@errorName" {
561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;584 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
562 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;585 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
563 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
564588
565 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));589 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));
566 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));590 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));
...@@ -574,6 +598,7 @@ test "@errorName sentinel length matches slice length" {...@@ -574,6 +598,7 @@ test "@errorName sentinel length matches slice length" {
574 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;598 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO600 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
577602
578 const name = testBuiltinErrorName(error.FooBar);603 const name = testBuiltinErrorName(error.FooBar);
579 const length: usize = 6;604 const length: usize = 6;
...@@ -647,6 +672,7 @@ test "peer type resolution of two different error unions" {...@@ -647,6 +672,7 @@ test "peer type resolution of two different error unions" {
647}672}
648673
649test "coerce error set to the current inferred error set" {674test "coerce error set to the current inferred error set" {
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
650 const S = struct {676 const S = struct {
651 fn foo() !void {677 fn foo() !void {
652 var a = false;678 var a = false;
...@@ -665,6 +691,7 @@ test "error union payload is properly aligned" {...@@ -665,6 +691,7 @@ test "error union payload is properly aligned" {
665 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO691 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
666 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO692 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO693 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
694 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
668695
669 const S = struct {696 const S = struct {
670 a: u128,697 a: u128,
...@@ -697,6 +724,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {...@@ -697,6 +724,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {
697test "simple else prong allowed even when all errors handled" {724test "simple else prong allowed even when all errors handled" {
698 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO725 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
727 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
700728
701 const S = struct {729 const S = struct {
702 fn foo() !u8 {730 fn foo() !u8 {
...@@ -725,6 +753,7 @@ test "pointer to error union payload" {...@@ -725,6 +753,7 @@ test "pointer to error union payload" {
725 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
726 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO754 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
727 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
756 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
728757
729 var err_union: anyerror!u8 = 15;758 var err_union: anyerror!u8 = 15;
730759
...@@ -758,6 +787,7 @@ test "error union of noreturn used with if" {...@@ -758,6 +787,7 @@ test "error union of noreturn used with if" {
758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO788 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
760 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO789 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
790 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
761791
762 NoReturn.a = 64;792 NoReturn.a = 64;
763 if (NoReturn.loop()) {793 if (NoReturn.loop()) {
...@@ -772,6 +802,7 @@ test "error union of noreturn used with try" {...@@ -772,6 +802,7 @@ test "error union of noreturn used with try" {
772 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO802 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
773 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO803 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO804 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
805 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
775806
776 NoReturn.a = 64;807 NoReturn.a = 64;
777 const err = NoReturn.testTry();808 const err = NoReturn.testTry();
...@@ -783,6 +814,7 @@ test "error union of noreturn used with catch" {...@@ -783,6 +814,7 @@ test "error union of noreturn used with catch" {
783 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO814 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
784 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO815 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
785 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO816 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
786818
787 NoReturn.a = 64;819 NoReturn.a = 64;
788 const err = NoReturn.testCatch();820 const err = NoReturn.testCatch();
...@@ -793,6 +825,7 @@ test "alignment of wrapping an error union payload" {...@@ -793,6 +825,7 @@ test "alignment of wrapping an error union payload" {
793 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
794 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;826 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
795 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
828 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
796829
797 const S = struct {830 const S = struct {
798 const I = extern struct { x: i128 };831 const I = extern struct { x: i128 };
...@@ -807,6 +840,7 @@ test "alignment of wrapping an error union payload" {...@@ -807,6 +840,7 @@ test "alignment of wrapping an error union payload" {
807840
808test "compare error union and error set" {841test "compare error union and error set" {
809 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
810844
811 var a: anyerror = error.Foo;845 var a: anyerror = error.Foo;
812 var b: anyerror!u32 = error.Bar;846 var b: anyerror!u32 = error.Bar;
...@@ -835,6 +869,8 @@ fn non_errorable() void {...@@ -835,6 +869,8 @@ fn non_errorable() void {
835}869}
836870
837test "catch within a function that calls no errorable functions" {871test "catch within a function that calls no errorable functions" {
872 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
873
838 non_errorable();874 non_errorable();
839}875}
840876
...@@ -842,6 +878,7 @@ test "error from comptime string" {...@@ -842,6 +878,7 @@ test "error from comptime string" {
842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO878 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO879 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
881 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
845882
846 const name = "Weird error name!";883 const name = "Weird error name!";
847 const S = struct {884 const S = struct {
...@@ -865,6 +902,7 @@ test "field access of anyerror results in smaller error set" {...@@ -865,6 +902,7 @@ test "field access of anyerror results in smaller error set" {
865test "optional error union return type" {902test "optional error union return type" {
866 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO903 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
867 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
905 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
868906
869 const S = struct {907 const S = struct {
870 fn foo() ?anyerror!u32 {908 fn foo() ?anyerror!u32 {
...@@ -878,6 +916,7 @@ test "optional error union return type" {...@@ -878,6 +916,7 @@ test "optional error union return type" {
878test "optional error set return type" {916test "optional error set return type" {
879 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO917 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
880 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
919 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
881920
882 const E = error{ A, B };921 const E = error{ A, B };
883 const S = struct {922 const S = struct {
test/behavior/eval.zig+54
...@@ -5,6 +5,8 @@ const expect = std.testing.expect;...@@ -5,6 +5,8 @@ const expect = std.testing.expect;
5const expectEqual = std.testing.expectEqual;5const expectEqual = std.testing.expectEqual;
66
7test "compile time recursion" {7test "compile time recursion" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
8 try expect(some_data.len == 21);10 try expect(some_data.len == 21);
9}11}
10var some_data: [@intCast(usize, fibonacci(7))]u8 = undefined;12var some_data: [@intCast(usize, fibonacci(7))]u8 = undefined;
...@@ -21,6 +23,7 @@ test "static add one" {...@@ -21,6 +23,7 @@ test "static add one" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2427
25 try expect(should_be_1235 == 1235);28 try expect(should_be_1235 == 1235);
26}29}
...@@ -45,6 +48,8 @@ test "inline variable gets result of const if" {...@@ -45,6 +48,8 @@ test "inline variable gets result of const if" {
45}48}
4649
47test "static function evaluation" {50test "static function evaluation" {
51 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
52
48 try expect(statically_added_number == 3);53 try expect(statically_added_number == 3);
49}54}
50const statically_added_number = staticAdd(1, 2);55const statically_added_number = staticAdd(1, 2);
...@@ -72,6 +77,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {...@@ -72,6 +77,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {
72test "constant expressions" {77test "constant expressions" {
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7581
76 var array: [array_size]u8 = undefined;82 var array: [array_size]u8 = undefined;
77 try expect(@sizeOf(@TypeOf(array)) == 20);83 try expect(@sizeOf(@TypeOf(array)) == 20);
...@@ -140,6 +146,7 @@ test "pointer to type" {...@@ -140,6 +146,7 @@ test "pointer to type" {
140test "a type constructed in a global expression" {146test "a type constructed in a global expression" {
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143150
144 var l: List = undefined;151 var l: List = undefined;
145 l.array[0] = 10;152 l.array[0] = 10;
...@@ -198,6 +205,8 @@ test "@setEvalBranchQuota" {...@@ -198,6 +205,8 @@ test "@setEvalBranchQuota" {
198}205}
199206
200test "constant struct with negation" {207test "constant struct with negation" {
208 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
209
201 try expect(vertices[0].x == @as(f32, -0.6));210 try expect(vertices[0].x == @as(f32, -0.6));
202}211}
203const Vertex = struct {212const Vertex = struct {
...@@ -302,6 +311,8 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {...@@ -302,6 +311,8 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {
302}311}
303312
304test "comptime iterate over fn ptr list" {313test "comptime iterate over fn ptr list" {
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315
305 try expect(performFn('t', 1) == 6);316 try expect(performFn('t', 1) == 6);
306 try expect(performFn('o', 0) == 1);317 try expect(performFn('o', 0) == 1);
307 try expect(performFn('w', 99) == 99);318 try expect(performFn('w', 99) == 99);
...@@ -340,6 +351,7 @@ fn doesAlotT(comptime T: type, value: usize) T {...@@ -340,6 +351,7 @@ fn doesAlotT(comptime T: type, value: usize) T {
340test "@setEvalBranchQuota at same scope as generic function call" {351test "@setEvalBranchQuota at same scope as generic function call" {
341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
343355
344 try expect(doesAlotT(u32, 2) == 2);356 try expect(doesAlotT(u32, 2) == 2);
345}357}
...@@ -376,6 +388,8 @@ test "zero extend from u0 to u1" {...@@ -376,6 +388,8 @@ test "zero extend from u0 to u1" {
376}388}
377389
378test "return 0 from function that has u0 return type" {390test "return 0 from function that has u0 return type" {
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392
379 const S = struct {393 const S = struct {
380 fn foo_zero() u0 {394 fn foo_zero() u0 {
381 return 0;395 return 0;
...@@ -391,6 +405,7 @@ test "return 0 from function that has u0 return type" {...@@ -391,6 +405,7 @@ test "return 0 from function that has u0 return type" {
391test "statically initialized struct" {405test "statically initialized struct" {
392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
393 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394409
395 st_init_str_foo.x += 1;410 st_init_str_foo.x += 1;
396 try expect(st_init_str_foo.x == 14);411 try expect(st_init_str_foo.x == 14);
...@@ -405,6 +420,8 @@ var st_init_str_foo = StInitStrFoo{...@@ -405,6 +420,8 @@ var st_init_str_foo = StInitStrFoo{
405};420};
406421
407test "inline for with same type but different values" {422test "inline for with same type but different values" {
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
424
408 var res: usize = 0;425 var res: usize = 0;
409 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {426 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
410 var a: T = undefined;427 var a: T = undefined;
...@@ -440,6 +457,7 @@ test "binary math operator in partially inlined function" {...@@ -440,6 +457,7 @@ test "binary math operator in partially inlined function" {
440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO457 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
441 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO458 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
460 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443461
444 var s: [4]u32 = undefined;462 var s: [4]u32 = undefined;
445 var b: [16]u8 = undefined;463 var b: [16]u8 = undefined;
...@@ -459,6 +477,7 @@ test "comptime shl" {...@@ -459,6 +477,7 @@ test "comptime shl" {
459 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
462481
463 var a: u128 = 3;482 var a: u128 = 3;
464 var b: u7 = 63;483 var b: u7 = 63;
...@@ -486,6 +505,7 @@ test "comptime bitwise operators" {...@@ -486,6 +505,7 @@ test "comptime bitwise operators" {
486test "comptime shlWithOverflow" {505test "comptime shlWithOverflow" {
487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
489509
490 const ct_shifted = @shlWithOverflow(~@as(u64, 0), 16)[0];510 const ct_shifted = @shlWithOverflow(~@as(u64, 0), 16)[0];
491 var a = ~@as(u64, 0);511 var a = ~@as(u64, 0);
...@@ -497,6 +517,7 @@ test "comptime shlWithOverflow" {...@@ -497,6 +517,7 @@ test "comptime shlWithOverflow" {
497test "const ptr to variable data changes at runtime" {517test "const ptr to variable data changes at runtime" {
498 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
499 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
520 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
500521
501 try expect(foo_ref.name[0] == 'a');522 try expect(foo_ref.name[0] == 'a');
502 foo_ref.name = "b";523 foo_ref.name = "b";
...@@ -516,6 +537,7 @@ test "runtime 128 bit integer division" {...@@ -516,6 +537,7 @@ test "runtime 128 bit integer division" {
516 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
519541
520 var a: u128 = 152313999999999991610955792383;542 var a: u128 = 152313999999999991610955792383;
521 var b: u128 = 10000000000000000000;543 var b: u128 = 10000000000000000000;
...@@ -526,6 +548,7 @@ test "runtime 128 bit integer division" {...@@ -526,6 +548,7 @@ test "runtime 128 bit integer division" {
526test "@tagName of @typeInfo" {548test "@tagName of @typeInfo" {
527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO550 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
529552
530 const str = @tagName(@typeInfo(u8));553 const str = @tagName(@typeInfo(u8));
531 try expect(std.mem.eql(u8, str, "Int"));554 try expect(std.mem.eql(u8, str, "Int"));
...@@ -535,6 +558,7 @@ test "static eval list init" {...@@ -535,6 +558,7 @@ test "static eval list init" {
535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO558 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO559 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
561 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
538562
539 try expect(static_vec3.data[2] == 1.0);563 try expect(static_vec3.data[2] == 1.0);
540 try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0);564 try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0);
...@@ -566,6 +590,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio...@@ -566,6 +590,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio
566test "ptr to local array argument at comptime" {590test "ptr to local array argument at comptime" {
567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO591 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
593 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
569594
570 comptime {595 comptime {
571 var bytes: [10]u8 = undefined;596 var bytes: [10]u8 = undefined;
...@@ -602,6 +627,7 @@ const hi1 = "hi";...@@ -602,6 +627,7 @@ const hi1 = "hi";
602const hi2 = hi1;627const hi2 = hi1;
603test "const global shares pointer with other same one" {628test "const global shares pointer with other same one" {
604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO629 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
630 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
605631
606 try assertEqualPtrs(&hi1[0], &hi2[0]);632 try assertEqualPtrs(&hi1[0], &hi2[0]);
607 comptime try expect(&hi1[0] == &hi2[0]);633 comptime try expect(&hi1[0] == &hi2[0]);
...@@ -637,6 +663,8 @@ pub fn TypeWithCompTimeSlice(comptime field_name: []const u8) type {...@@ -637,6 +663,8 @@ pub fn TypeWithCompTimeSlice(comptime field_name: []const u8) type {
637}663}
638664
639test "comptime function with mutable pointer is not memoized" {665test "comptime function with mutable pointer is not memoized" {
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
667
640 comptime {668 comptime {
641 var x: i32 = 1;669 var x: i32 = 1;
642 const ptr = &x;670 const ptr = &x;
...@@ -728,6 +756,7 @@ test "array concatenation of function calls" {...@@ -728,6 +756,7 @@ test "array concatenation of function calls" {
728 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
729 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
730 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
731760
732 var a = oneItem(3) ++ oneItem(4);761 var a = oneItem(3) ++ oneItem(4);
733 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));762 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
...@@ -737,6 +766,7 @@ test "array multiplication of function calls" {...@@ -737,6 +766,7 @@ test "array multiplication of function calls" {
737 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
738 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;767 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
739 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
769 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
740770
741 var a = oneItem(3) ** scalar(2);771 var a = oneItem(3) ** scalar(2);
742 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));772 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
...@@ -754,6 +784,7 @@ test "array concatenation peer resolves element types - value" {...@@ -754,6 +784,7 @@ test "array concatenation peer resolves element types - value" {
754 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
755 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;785 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO786 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
757788
758 var a = [2]u3{ 1, 7 };789 var a = [2]u3{ 1, 7 };
759 var b = [3]u8{ 200, 225, 255 };790 var b = [3]u8{ 200, 225, 255 };
...@@ -770,6 +801,7 @@ test "array concatenation peer resolves element types - pointer" {...@@ -770,6 +801,7 @@ test "array concatenation peer resolves element types - pointer" {
770 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
771 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;802 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
772 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO803 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
804 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
773805
774 var a = [2]u3{ 1, 7 };806 var a = [2]u3{ 1, 7 };
775 var b = [3]u8{ 200, 225, 255 };807 var b = [3]u8{ 200, 225, 255 };
...@@ -788,6 +820,7 @@ test "array concatenation sets the sentinel - value" {...@@ -788,6 +820,7 @@ test "array concatenation sets the sentinel - value" {
788 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
789 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;821 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO822 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
791824
792 var a = [2]u3{ 1, 7 };825 var a = [2]u3{ 1, 7 };
793 var b = [3:69]u8{ 200, 225, 255 };826 var b = [3:69]u8{ 200, 225, 255 };
...@@ -805,6 +838,7 @@ test "array concatenation sets the sentinel - value" {...@@ -805,6 +838,7 @@ test "array concatenation sets the sentinel - value" {
805test "array concatenation sets the sentinel - pointer" {838test "array concatenation sets the sentinel - pointer" {
806 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO840 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
808842
809 var a = [2]u3{ 1, 7 };843 var a = [2]u3{ 1, 7 };
810 var b = [3:69]u8{ 200, 225, 255 };844 var b = [3:69]u8{ 200, 225, 255 };
...@@ -825,6 +859,7 @@ test "array multiplication sets the sentinel - value" {...@@ -825,6 +859,7 @@ test "array multiplication sets the sentinel - value" {
825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
826 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO861 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
862 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
828863
829 var a = [2:7]u3{ 1, 6 };864 var a = [2:7]u3{ 1, 6 };
830 var b = a ** 2;865 var b = a ** 2;
...@@ -841,6 +876,7 @@ test "array multiplication sets the sentinel - pointer" {...@@ -841,6 +876,7 @@ test "array multiplication sets the sentinel - pointer" {
841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;876 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;877 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
843 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO878 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
879 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
844880
845 var a = [2:7]u3{ 1, 6 };881 var a = [2:7]u3{ 1, 6 };
846 var b = &a ** 2;882 var b = &a ** 2;
...@@ -965,6 +1001,7 @@ test "closure capture type of runtime-known parameter" {...@@ -965,6 +1001,7 @@ test "closure capture type of runtime-known parameter" {
9651001
966test "comptime break passing through runtime condition converted to runtime break" {1002test "comptime break passing through runtime condition converted to runtime break" {
967 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1003 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1004 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9681005
969 const S = struct {1006 const S = struct {
970 fn doTheTest() !void {1007 fn doTheTest() !void {
...@@ -998,6 +1035,7 @@ test "comptime break to outer loop passing through runtime condition converted t...@@ -998,6 +1035,7 @@ test "comptime break to outer loop passing through runtime condition converted t
998 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1035 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
999 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1036 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1000 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10011039
1002 const S = struct {1040 const S = struct {
1003 fn doTheTest() !void {1041 fn doTheTest() !void {
...@@ -1069,6 +1107,7 @@ test "comptime break operand passing through runtime switch converted to runtime...@@ -1069,6 +1107,7 @@ test "comptime break operand passing through runtime switch converted to runtime
1069test "no dependency loop for alignment of self struct" {1107test "no dependency loop for alignment of self struct" {
1070 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1071 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10721111
1073 const S = struct {1112 const S = struct {
1074 fn doTheTest() !void {1113 fn doTheTest() !void {
...@@ -1106,6 +1145,7 @@ test "no dependency loop for alignment of self struct" {...@@ -1106,6 +1145,7 @@ test "no dependency loop for alignment of self struct" {
1106test "no dependency loop for alignment of self bare union" {1145test "no dependency loop for alignment of self bare union" {
1107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1148 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11091149
1110 const S = struct {1150 const S = struct {
1111 fn doTheTest() !void {1151 fn doTheTest() !void {
...@@ -1143,6 +1183,7 @@ test "no dependency loop for alignment of self bare union" {...@@ -1143,6 +1183,7 @@ test "no dependency loop for alignment of self bare union" {
1143test "no dependency loop for alignment of self tagged union" {1183test "no dependency loop for alignment of self tagged union" {
1144 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11461187
1147 const S = struct {1188 const S = struct {
1148 fn doTheTest() !void {1189 fn doTheTest() !void {
...@@ -1186,6 +1227,7 @@ test "storing an array of type in a field" {...@@ -1186,6 +1227,7 @@ test "storing an array of type in a field" {
1186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1228 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1230 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11891231
1190 const S = struct {1232 const S = struct {
1191 fn doTheTest() void {1233 fn doTheTest() void {
...@@ -1214,6 +1256,7 @@ test "storing an array of type in a field" {...@@ -1214,6 +1256,7 @@ test "storing an array of type in a field" {
1214test "pass pointer to field of comptime-only type as a runtime parameter" {1256test "pass pointer to field of comptime-only type as a runtime parameter" {
1215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12171260
1218 const S = struct {1261 const S = struct {
1219 const Mixed = struct {1262 const Mixed = struct {
...@@ -1331,6 +1374,7 @@ test "lazy value is resolved as slice operand" {...@@ -1331,6 +1374,7 @@ test "lazy value is resolved as slice operand" {
1331 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13341378
1335 const A = struct { a: u32 };1379 const A = struct { a: u32 };
1336 var a: [512]u64 = undefined;1380 var a: [512]u64 = undefined;
...@@ -1388,6 +1432,7 @@ test "inline for inside a runtime condition" {...@@ -1388,6 +1432,7 @@ test "inline for inside a runtime condition" {
13881432
1389test "continue in inline for inside a comptime switch" {1433test "continue in inline for inside a comptime switch" {
1390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1435 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13911436
1392 const arr = .{ 1, 2, 3 };1437 const arr = .{ 1, 2, 3 };
1393 var count: u8 = 0;1438 var count: u8 = 0;
...@@ -1453,6 +1498,7 @@ test "continue nested inline for loop in named block expr" {...@@ -1453,6 +1498,7 @@ test "continue nested inline for loop in named block expr" {
14531498
1454test "x and false is comptime-known false" {1499test "x and false is comptime-known false" {
1455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1501 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14561502
1457 const T = struct {1503 const T = struct {
1458 var x: u32 = 0;1504 var x: u32 = 0;
...@@ -1480,6 +1526,7 @@ test "x and false is comptime-known false" {...@@ -1480,6 +1526,7 @@ test "x and false is comptime-known false" {
14801526
1481test "x or true is comptime-known true" {1527test "x or true is comptime-known true" {
1482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1529 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14831530
1484 const T = struct {1531 const T = struct {
1485 var x: u32 = 0;1532 var x: u32 = 0;
...@@ -1510,6 +1557,7 @@ test "non-optional and optional array elements concatenated" {...@@ -1510,6 +1557,7 @@ test "non-optional and optional array elements concatenated" {
1510 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1558 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1560 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15131561
1514 const array = [1]u8{'A'} ++ [1]?u8{null};1562 const array = [1]u8{'A'} ++ [1]?u8{null};
1515 var index: usize = 0;1563 var index: usize = 0;
...@@ -1540,6 +1588,8 @@ test "comptime function turns function value to function pointer" {...@@ -1540,6 +1588,8 @@ test "comptime function turns function value to function pointer" {
1540}1588}
15411589
1542test "container level const and var have unique addresses" {1590test "container level const and var have unique addresses" {
1591 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1592
1543 const S = struct {1593 const S = struct {
1544 x: i32,1594 x: i32,
1545 y: i32,1595 y: i32,
...@@ -1596,6 +1646,8 @@ test "result of nested switch assigned to variable" {...@@ -1596,6 +1646,8 @@ test "result of nested switch assigned to variable" {
1596}1646}
15971647
1598test "inline for loop of functions returning error unions" {1648test "inline for loop of functions returning error unions" {
1649 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1650
1599 const T1 = struct {1651 const T1 = struct {
1600 fn v() error{}!usize {1652 fn v() error{}!usize {
1601 return 1;1653 return 1;
...@@ -1649,6 +1701,8 @@ test "early exit in container level const" {...@@ -1649,6 +1701,8 @@ test "early exit in container level const" {
1649}1701}
16501702
1651test "@inComptime" {1703test "@inComptime" {
1704 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1705
1652 const S = struct {1706 const S = struct {
1653 fn inComptime() bool {1707 fn inComptime() bool {
1654 return @inComptime();1708 return @inComptime();
test/behavior/field_parent_ptr.zig+7
...@@ -4,6 +4,8 @@ const builtin = @import("builtin");...@@ -4,6 +4,8 @@ const builtin = @import("builtin");
4test "@fieldParentPtr non-first field" {4test "@fieldParentPtr non-first field" {
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8
7 try testParentFieldPtr(&foo.c);9 try testParentFieldPtr(&foo.c);
8 comptime try testParentFieldPtr(&foo.c);10 comptime try testParentFieldPtr(&foo.c);
9}11}
...@@ -12,6 +14,8 @@ test "@fieldParentPtr first field" {...@@ -12,6 +14,8 @@ test "@fieldParentPtr first field" {
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
15 try testParentFieldPtrFirst(&foo.a);19 try testParentFieldPtrFirst(&foo.a);
16 comptime try testParentFieldPtrFirst(&foo.a);20 comptime try testParentFieldPtrFirst(&foo.a);
17}21}
...@@ -51,6 +55,7 @@ test "@fieldParentPtr untagged union" {...@@ -51,6 +55,7 @@ test "@fieldParentPtr untagged union" {
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5459
55 try testFieldParentPtrUnion(&bar.c);60 try testFieldParentPtrUnion(&bar.c);
56 comptime try testFieldParentPtrUnion(&bar.c);61 comptime try testFieldParentPtrUnion(&bar.c);
...@@ -78,6 +83,7 @@ test "@fieldParentPtr tagged union" {...@@ -78,6 +83,7 @@ test "@fieldParentPtr tagged union" {
78 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8187
82 try testFieldParentPtrTaggedUnion(&bar_tagged.c);88 try testFieldParentPtrTaggedUnion(&bar_tagged.c);
83 comptime try testFieldParentPtrTaggedUnion(&bar_tagged.c);89 comptime try testFieldParentPtrTaggedUnion(&bar_tagged.c);
...@@ -105,6 +111,7 @@ test "@fieldParentPtr extern union" {...@@ -105,6 +111,7 @@ test "@fieldParentPtr extern union" {
105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
108115
109 try testFieldParentPtrExternUnion(&bar_extern.c);116 try testFieldParentPtrExternUnion(&bar_extern.c);
110 comptime try testFieldParentPtrExternUnion(&bar_extern.c);117 comptime try testFieldParentPtrExternUnion(&bar_extern.c);
test/behavior/floatop.zig+51
...@@ -58,6 +58,7 @@ test "different sized float comparisons" {...@@ -58,6 +58,7 @@ test "different sized float comparisons" {
58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6162
62 try testDifferentSizedFloatComparisons();63 try testDifferentSizedFloatComparisons();
63 comptime try testDifferentSizedFloatComparisons();64 comptime try testDifferentSizedFloatComparisons();
...@@ -101,6 +102,7 @@ test "@sqrt" {...@@ -101,6 +102,7 @@ test "@sqrt" {
101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104106
105 comptime try testSqrt();107 comptime try testSqrt();
106 try testSqrt();108 try testSqrt();
...@@ -138,6 +140,7 @@ test "@sqrt with vectors" {...@@ -138,6 +140,7 @@ test "@sqrt with vectors" {
138 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO140 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
141144
142 comptime try testSqrtWithVectors();145 comptime try testSqrtWithVectors();
143 try testSqrtWithVectors();146 try testSqrtWithVectors();
...@@ -157,6 +160,7 @@ test "more @sqrt f16 tests" {...@@ -157,6 +160,7 @@ test "more @sqrt f16 tests" {
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160164
161 // TODO these are not all passing at comptime165 // TODO these are not all passing at comptime
162 try expect(@sqrt(@as(f16, 0.0)) == 0.0);166 try expect(@sqrt(@as(f16, 0.0)) == 0.0);
...@@ -181,6 +185,7 @@ test "another, possibly redundant @sqrt test" {...@@ -181,6 +185,7 @@ test "another, possibly redundant @sqrt test" {
181 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
183 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
184189
185 try testSqrtLegacy(f64, 12.0);190 try testSqrtLegacy(f64, 12.0);
186 comptime try testSqrtLegacy(f64, 12.0);191 comptime try testSqrtLegacy(f64, 12.0);
...@@ -207,6 +212,7 @@ test "@sin" {...@@ -207,6 +212,7 @@ test "@sin" {
207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210216
211 comptime try testSin();217 comptime try testSin();
212 try testSin();218 try testSin();
...@@ -227,6 +233,7 @@ test "@sin with vectors" {...@@ -227,6 +233,7 @@ test "@sin with vectors" {
227 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
228 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
236 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
230237
231 comptime try testSinWithVectors();238 comptime try testSinWithVectors();
232 try testSinWithVectors();239 try testSinWithVectors();
...@@ -246,6 +253,7 @@ test "@cos" {...@@ -246,6 +253,7 @@ test "@cos" {
246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
249257
250 comptime try testCos();258 comptime try testCos();
251 try testCos();259 try testCos();
...@@ -266,6 +274,7 @@ test "@cos with vectors" {...@@ -266,6 +274,7 @@ test "@cos with vectors" {
266 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
269278
270 comptime try testCosWithVectors();279 comptime try testCosWithVectors();
271 try testCosWithVectors();280 try testCosWithVectors();
...@@ -285,6 +294,7 @@ test "@exp" {...@@ -285,6 +294,7 @@ test "@exp" {
285 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
286 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
288298
289 comptime try testExp();299 comptime try testExp();
290 try testExp();300 try testExp();
...@@ -304,6 +314,7 @@ test "@exp with vectors" {...@@ -304,6 +314,7 @@ test "@exp with vectors" {
304 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO315 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
317 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307318
308 comptime try testExpWithVectors();319 comptime try testExpWithVectors();
309 try testExpWithVectors();320 try testExpWithVectors();
...@@ -323,6 +334,7 @@ test "@exp2" {...@@ -323,6 +334,7 @@ test "@exp2" {
323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
326338
327 comptime try testExp2();339 comptime try testExp2();
328 try testExp2();340 try testExp2();
...@@ -342,6 +354,7 @@ test "@exp2 with @vectors" {...@@ -342,6 +354,7 @@ test "@exp2 with @vectors" {
342 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
345358
346 comptime try testExp2WithVectors();359 comptime try testExp2WithVectors();
347 try testExp2WithVectors();360 try testExp2WithVectors();
...@@ -361,6 +374,7 @@ test "@log" {...@@ -361,6 +374,7 @@ test "@log" {
361 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
364378
365 comptime try testLog();379 comptime try testLog();
366 try testLog();380 try testLog();
...@@ -392,6 +406,7 @@ test "@log with @vectors" {...@@ -392,6 +406,7 @@ test "@log with @vectors" {
392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO408 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
395410
396 {411 {
397 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };412 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
...@@ -408,6 +423,7 @@ test "@log2" {...@@ -408,6 +423,7 @@ test "@log2" {
408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
426 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411427
412 comptime try testLog2();428 comptime try testLog2();
413 try testLog2();429 try testLog2();
...@@ -427,6 +443,7 @@ test "@log2 with vectors" {...@@ -427,6 +443,7 @@ test "@log2 with vectors" {
427 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
428 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
430 // https://github.com/ziglang/zig/issues/13681447 // https://github.com/ziglang/zig/issues/13681
431 if (builtin.zig_backend == .stage2_llvm and448 if (builtin.zig_backend == .stage2_llvm and
432 builtin.cpu.arch == .aarch64 and449 builtin.cpu.arch == .aarch64 and
...@@ -450,6 +467,7 @@ test "@log10" {...@@ -450,6 +467,7 @@ test "@log10" {
450 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO467 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO468 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
452 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
453471
454 comptime try testLog10();472 comptime try testLog10();
455 try testLog10();473 try testLog10();
...@@ -469,6 +487,7 @@ test "@log10 with vectors" {...@@ -469,6 +487,7 @@ test "@log10 with vectors" {
469 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
471 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
472491
473 comptime try testLog10WithVectors();492 comptime try testLog10WithVectors();
474 try testLog10WithVectors();493 try testLog10WithVectors();
...@@ -487,6 +506,7 @@ test "@fabs" {...@@ -487,6 +506,7 @@ test "@fabs" {
487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
490510
491 comptime try testFabs();511 comptime try testFabs();
492 try testFabs();512 try testFabs();
...@@ -515,6 +535,7 @@ test "@fabs with vectors" {...@@ -515,6 +535,7 @@ test "@fabs with vectors" {
515 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
518539
519 comptime try testFabsWithVectors();540 comptime try testFabsWithVectors();
520 try testFabsWithVectors();541 try testFabsWithVectors();
...@@ -534,6 +555,7 @@ test "another, possibly redundant, @fabs test" {...@@ -534,6 +555,7 @@ test "another, possibly redundant, @fabs test" {
534 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO557 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
558 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
537559
538 try testFabsLegacy(f128, 12.0);560 try testFabsLegacy(f128, 12.0);
539 comptime try testFabsLegacy(f128, 12.0);561 comptime try testFabsLegacy(f128, 12.0);
...@@ -555,6 +577,7 @@ test "@fabs f80" {...@@ -555,6 +577,7 @@ test "@fabs f80" {
555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
580 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
558581
559 try testFabsLegacy(f80, 12.0);582 try testFabsLegacy(f80, 12.0);
560 comptime try testFabsLegacy(f80, 12.0);583 comptime try testFabsLegacy(f80, 12.0);
...@@ -571,6 +594,7 @@ test "a third @fabs test, surely there should not be three fabs tests" {...@@ -571,6 +594,7 @@ test "a third @fabs test, surely there should not be three fabs tests" {
571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO595 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
573 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO596 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
597 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
574598
575 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {599 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {
576 // normals600 // normals
...@@ -598,6 +622,7 @@ test "@floor" {...@@ -598,6 +622,7 @@ test "@floor" {
598 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO623 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
600 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
601626
602 comptime try testFloor();627 comptime try testFloor();
603 try testFloor();628 try testFloor();
...@@ -622,6 +647,7 @@ test "@floor with vectors" {...@@ -622,6 +647,7 @@ test "@floor with vectors" {
622 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO647 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO649 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
650 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625651
626 comptime try testFloorWithVectors();652 comptime try testFloorWithVectors();
627 try testFloorWithVectors();653 try testFloorWithVectors();
...@@ -640,6 +666,7 @@ test "another, possibly redundant, @floor test" {...@@ -640,6 +666,7 @@ test "another, possibly redundant, @floor test" {
640 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO667 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
642 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO668 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
669 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
643670
644 try testFloorLegacy(f64, 12.0);671 try testFloorLegacy(f64, 12.0);
645 comptime try testFloorLegacy(f64, 12.0);672 comptime try testFloorLegacy(f64, 12.0);
...@@ -659,6 +686,7 @@ test "@floor f80" {...@@ -659,6 +686,7 @@ test "@floor f80" {
659 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO686 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
660 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
661 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO688 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
689 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
662690
663 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {691 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
664 // https://github.com/ziglang/zig/issues/12602692 // https://github.com/ziglang/zig/issues/12602
...@@ -674,6 +702,7 @@ test "@floor f128" {...@@ -674,6 +702,7 @@ test "@floor f128" {
674 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO702 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
676 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO704 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
677706
678 try testFloorLegacy(f128, 12.0);707 try testFloorLegacy(f128, 12.0);
679 comptime try testFloorLegacy(f128, 12.0);708 comptime try testFloorLegacy(f128, 12.0);
...@@ -689,6 +718,7 @@ test "@ceil" {...@@ -689,6 +718,7 @@ test "@ceil" {
689 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO718 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
690 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO719 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
691 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
721 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
692722
693 comptime try testCeil();723 comptime try testCeil();
694 try testCeil();724 try testCeil();
...@@ -713,6 +743,7 @@ test "@ceil with vectors" {...@@ -713,6 +743,7 @@ test "@ceil with vectors" {
713 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO743 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
746 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
716747
717 comptime try testCeilWithVectors();748 comptime try testCeilWithVectors();
718 try testCeilWithVectors();749 try testCeilWithVectors();
...@@ -731,6 +762,7 @@ test "another, possibly redundant, @ceil test" {...@@ -731,6 +762,7 @@ test "another, possibly redundant, @ceil test" {
731 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO762 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
732 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO763 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
733 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO764 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
765 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
734766
735 try testCeilLegacy(f64, 12.0);767 try testCeilLegacy(f64, 12.0);
736 comptime try testCeilLegacy(f64, 12.0);768 comptime try testCeilLegacy(f64, 12.0);
...@@ -750,6 +782,7 @@ test "@ceil f80" {...@@ -750,6 +782,7 @@ test "@ceil f80" {
750 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO783 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO784 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
785 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
753786
754 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {787 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
755 // https://github.com/ziglang/zig/issues/12602788 // https://github.com/ziglang/zig/issues/12602
...@@ -765,6 +798,7 @@ test "@ceil f128" {...@@ -765,6 +798,7 @@ test "@ceil f128" {
765 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO798 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
766 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO799 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
767 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO800 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
768802
769 try testCeilLegacy(f128, 12.0);803 try testCeilLegacy(f128, 12.0);
770 comptime try testCeilLegacy(f128, 12.0);804 comptime try testCeilLegacy(f128, 12.0);
...@@ -804,6 +838,7 @@ test "@trunc with vectors" {...@@ -804,6 +838,7 @@ test "@trunc with vectors" {
804 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO838 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
805 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
806 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO840 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
807842
808 comptime try testTruncWithVectors();843 comptime try testTruncWithVectors();
809 try testTruncWithVectors();844 try testTruncWithVectors();
...@@ -822,6 +857,7 @@ test "another, possibly redundant, @trunc test" {...@@ -822,6 +857,7 @@ test "another, possibly redundant, @trunc test" {
822 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO858 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO859 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
860 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
825861
826 try testTruncLegacy(f64, 12.0);862 try testTruncLegacy(f64, 12.0);
827 comptime try testTruncLegacy(f64, 12.0);863 comptime try testTruncLegacy(f64, 12.0);
...@@ -841,6 +877,7 @@ test "@trunc f80" {...@@ -841,6 +877,7 @@ test "@trunc f80" {
841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO877 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO878 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO879 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
880 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
844881
845 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {882 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
846 // https://github.com/ziglang/zig/issues/12602883 // https://github.com/ziglang/zig/issues/12602
...@@ -862,6 +899,7 @@ test "@trunc f128" {...@@ -862,6 +899,7 @@ test "@trunc f128" {
862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
863 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO901 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
902 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
865903
866 try testTruncLegacy(f128, 12.0);904 try testTruncLegacy(f128, 12.0);
867 comptime try testTruncLegacy(f128, 12.0);905 comptime try testTruncLegacy(f128, 12.0);
...@@ -886,6 +924,7 @@ test "negation f16" {...@@ -886,6 +924,7 @@ test "negation f16" {
886 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO924 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
887 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO925 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
888 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO926 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
927 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
889928
890 if (builtin.os.tag == .freebsd) {929 if (builtin.os.tag == .freebsd) {
891 // TODO file issue to track this failure930 // TODO file issue to track this failure
...@@ -910,6 +949,7 @@ test "negation f32" {...@@ -910,6 +949,7 @@ test "negation f32" {
910 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO949 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO951 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
913953
914 const S = struct {954 const S = struct {
915 fn doTheTest() !void {955 fn doTheTest() !void {
...@@ -929,6 +969,7 @@ test "negation f64" {...@@ -929,6 +969,7 @@ test "negation f64" {
929 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO970 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO971 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
972 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
932973
933 const S = struct {974 const S = struct {
934 fn doTheTest() !void {975 fn doTheTest() !void {
...@@ -950,6 +991,7 @@ test "negation f80" {...@@ -950,6 +991,7 @@ test "negation f80" {
950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
951 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO992 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
953995
954 const S = struct {996 const S = struct {
955 fn doTheTest() !void {997 fn doTheTest() !void {
...@@ -971,6 +1013,7 @@ test "negation f128" {...@@ -971,6 +1013,7 @@ test "negation f128" {
971 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
972 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1014 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9741017
975 const S = struct {1018 const S = struct {
976 fn doTheTest() !void {1019 fn doTheTest() !void {
...@@ -989,6 +1032,7 @@ test "negation f128" {...@@ -989,6 +1032,7 @@ test "negation f128" {
989test "eval @setFloatMode at compile-time" {1032test "eval @setFloatMode at compile-time" {
990 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1033 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
991 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1034 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1035 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9921036
993 const result = comptime fnWithFloatMode();1037 const result = comptime fnWithFloatMode();
994 try expect(result == 1234.0);1038 try expect(result == 1234.0);
...@@ -1014,6 +1058,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {...@@ -1014,6 +1058,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
1014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1058 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1059 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10171062
1018 inline for (.{ f16, f32, f64, f80, f128 }) |F| {1063 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
1019 try expect(math.isNan(@as(F, 0) / @as(F, 0)));1064 try expect(math.isNan(@as(F, 0) / @as(F, 0)));
...@@ -1025,6 +1070,7 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {...@@ -1025,6 +1070,7 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {
1025 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1026 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1027 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1073 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10281074
1029 inline for (.{ f16, f32, f64, f80, f128 }) |F| {1075 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
1030 const pos = @as(F, 1) / @as(F, 0);1076 const pos = @as(F, 1) / @as(F, 0);
...@@ -1044,6 +1090,7 @@ test "nan negation f16" {...@@ -1044,6 +1090,7 @@ test "nan negation f16" {
1044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1090 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1045 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1091 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1046 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1092 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1093 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10471094
1048 const nan_comptime = comptime math.nan(f16);1095 const nan_comptime = comptime math.nan(f16);
1049 const neg_nan_comptime = -nan_comptime;1096 const neg_nan_comptime = -nan_comptime;
...@@ -1062,6 +1109,7 @@ test "nan negation f32" {...@@ -1062,6 +1109,7 @@ test "nan negation f32" {
1062 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1063 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10651113
1066 const nan_comptime = comptime math.nan(f32);1114 const nan_comptime = comptime math.nan(f32);
1067 const neg_nan_comptime = -nan_comptime;1115 const neg_nan_comptime = -nan_comptime;
...@@ -1081,6 +1129,7 @@ test "nan negation f64" {...@@ -1081,6 +1129,7 @@ test "nan negation f64" {
1081 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1082 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1083 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10841133
1085 const nan_comptime = comptime math.nan(f64);1134 const nan_comptime = comptime math.nan(f64);
1086 const neg_nan_comptime = -nan_comptime;1135 const neg_nan_comptime = -nan_comptime;
...@@ -1101,6 +1150,7 @@ test "nan negation f128" {...@@ -1101,6 +1150,7 @@ test "nan negation f128" {
1101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11041154
1105 const nan_comptime = comptime math.nan(f128);1155 const nan_comptime = comptime math.nan(f128);
1106 const neg_nan_comptime = -nan_comptime;1156 const neg_nan_comptime = -nan_comptime;
...@@ -1121,6 +1171,7 @@ test "nan negation f80" {...@@ -1121,6 +1171,7 @@ test "nan negation f80" {
1121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11241175
1125 const nan_comptime = comptime math.nan(f80);1176 const nan_comptime = comptime math.nan(f80);
1126 const neg_nan_comptime = -nan_comptime;1177 const neg_nan_comptime = -nan_comptime;
test/behavior/fn.zig+33
...@@ -5,6 +5,8 @@ const expect = testing.expect;...@@ -5,6 +5,8 @@ const expect = testing.expect;
5const expectEqual = testing.expectEqual;5const expectEqual = testing.expectEqual;
66
7test "params" {7test "params" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
8 try expect(testParamsAdd(22, 11) == 33);10 try expect(testParamsAdd(22, 11) == 33);
9}11}
10fn testParamsAdd(a: i32, b: i32) i32 {12fn testParamsAdd(a: i32, b: i32) i32 {
...@@ -12,6 +14,8 @@ fn testParamsAdd(a: i32, b: i32) i32 {...@@ -12,6 +14,8 @@ fn testParamsAdd(a: i32, b: i32) i32 {
12}14}
1315
14test "local variables" {16test "local variables" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
15 testLocVars(2);19 testLocVars(2);
16}20}
17fn testLocVars(b: i32) void {21fn testLocVars(b: i32) void {
...@@ -20,6 +24,8 @@ fn testLocVars(b: i32) void {...@@ -20,6 +24,8 @@ fn testLocVars(b: i32) void {
20}24}
2125
22test "mutable local variables" {26test "mutable local variables" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
23 var zero: i32 = 0;29 var zero: i32 = 0;
24 try expect(zero == 0);30 try expect(zero == 0);
2531
...@@ -51,6 +57,8 @@ test "weird function name" {...@@ -51,6 +57,8 @@ test "weird function name" {
51}57}
5258
53test "assign inline fn to const variable" {59test "assign inline fn to const variable" {
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
61
54 const a = inlineFn;62 const a = inlineFn;
55 a();63 a();
56}64}
...@@ -68,6 +76,8 @@ fn outer(y: u32) *const fn (u32) u32 {...@@ -68,6 +76,8 @@ fn outer(y: u32) *const fn (u32) u32 {
68}76}
6977
70test "return inner function which references comptime variable of outer function" {78test "return inner function which references comptime variable of outer function" {
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
80
71 var func = outer(10);81 var func = outer(10);
72 try expect(func(3) == 7);82 try expect(func(3) == 7);
73}83}
...@@ -99,6 +109,7 @@ test "inline function call that calls optional function pointer, return pointer...@@ -99,6 +109,7 @@ test "inline function call that calls optional function pointer, return pointer
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102113
103 const S = struct {114 const S = struct {
104 field: u32,115 field: u32,
...@@ -144,6 +155,7 @@ fn fnWithUnreachable() noreturn {...@@ -144,6 +155,7 @@ fn fnWithUnreachable() noreturn {
144155
145test "extern struct with stdcallcc fn pointer" {156test "extern struct with stdcallcc fn pointer" {
146 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147159
148 const S = extern struct {160 const S = extern struct {
149 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .Stdcall else .C) i32,161 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .Stdcall else .C) i32,
...@@ -174,12 +186,14 @@ test "function with complex callconv and return type expressions" {...@@ -174,12 +186,14 @@ test "function with complex callconv and return type expressions" {
174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
177190
178 try expect(fComplexCallconvRet(3).x == 9);191 try expect(fComplexCallconvRet(3).x == 9);
179}192}
180193
181test "pass by non-copying value" {194test "pass by non-copying value" {
182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
183197
184 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);198 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
185}199}
...@@ -195,6 +209,7 @@ fn addPointCoords(pt: Point) i32 {...@@ -195,6 +209,7 @@ fn addPointCoords(pt: Point) i32 {
195209
196test "pass by non-copying value through var arg" {210test "pass by non-copying value through var arg" {
197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
198213
199 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);214 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
200}215}
...@@ -206,6 +221,7 @@ fn addPointCoordsVar(pt: anytype) !i32 {...@@ -206,6 +221,7 @@ fn addPointCoordsVar(pt: anytype) !i32 {
206221
207test "pass by non-copying value as method" {222test "pass by non-copying value as method" {
208 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
209225
210 var pt = Point2{ .x = 1, .y = 2 };226 var pt = Point2{ .x = 1, .y = 2 };
211 try expect(pt.addPointCoords() == 3);227 try expect(pt.addPointCoords() == 3);
...@@ -222,6 +238,7 @@ const Point2 = struct {...@@ -222,6 +238,7 @@ const Point2 = struct {
222238
223test "pass by non-copying value as method, which is generic" {239test "pass by non-copying value as method, which is generic" {
224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225242
226 var pt = Point3{ .x = 1, .y = 2 };243 var pt = Point3{ .x = 1, .y = 2 };
227 try expect(pt.addPointCoords(i32) == 3);244 try expect(pt.addPointCoords(i32) == 3);
...@@ -239,6 +256,7 @@ const Point3 = struct {...@@ -239,6 +256,7 @@ const Point3 = struct {
239256
240test "pass by non-copying value as method, at comptime" {257test "pass by non-copying value as method, at comptime" {
241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
242260
243 comptime {261 comptime {
244 var pt = Point2{ .x = 1, .y = 2 };262 var pt = Point2{ .x = 1, .y = 2 };
...@@ -250,6 +268,7 @@ test "implicit cast fn call result to optional in field result" {...@@ -250,6 +268,7 @@ test "implicit cast fn call result to optional in field result" {
250 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
253272
254 const S = struct {273 const S = struct {
255 fn entry() !void {274 fn entry() !void {
...@@ -276,6 +295,7 @@ test "implicit cast fn call result to optional in field result" {...@@ -276,6 +295,7 @@ test "implicit cast fn call result to optional in field result" {
276test "void parameters" {295test "void parameters" {
277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279299
280 try voidFun(1, void{}, 2, {});300 try voidFun(1, void{}, 2, {});
281}301}
...@@ -301,6 +321,7 @@ test "function pointers" {...@@ -301,6 +321,7 @@ test "function pointers" {
301 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
304325
305 const fns = [_]*const @TypeOf(fn1){326 const fns = [_]*const @TypeOf(fn1){
306 &fn1,327 &fn1,
...@@ -338,6 +359,7 @@ test "function call with anon list literal" {...@@ -338,6 +359,7 @@ test "function call with anon list literal" {
338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
341363
342 const S = struct {364 const S = struct {
343 fn doTheTest() !void {365 fn doTheTest() !void {
...@@ -358,6 +380,7 @@ test "function call with anon list literal - 2D" {...@@ -358,6 +380,7 @@ test "function call with anon list literal - 2D" {
358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO381 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
361384
362 const S = struct {385 const S = struct {
363 fn doTheTest() !void {386 fn doTheTest() !void {
...@@ -376,6 +399,8 @@ test "function call with anon list literal - 2D" {...@@ -376,6 +399,8 @@ test "function call with anon list literal - 2D" {
376}399}
377400
378test "ability to give comptime types and non comptime types to same parameter" {401test "ability to give comptime types and non comptime types to same parameter" {
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
403
379 const S = struct {404 const S = struct {
380 fn doTheTest() !void {405 fn doTheTest() !void {
381 var x: i32 = 1;406 var x: i32 = 1;
...@@ -393,6 +418,8 @@ test "ability to give comptime types and non comptime types to same parameter" {...@@ -393,6 +418,8 @@ test "ability to give comptime types and non comptime types to same parameter" {
393}418}
394419
395test "function with inferred error set but returning no error" {420test "function with inferred error set but returning no error" {
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422
396 const S = struct {423 const S = struct {
397 fn foo() !void {}424 fn foo() !void {}
398 };425 };
...@@ -403,6 +430,7 @@ test "function with inferred error set but returning no error" {...@@ -403,6 +430,7 @@ test "function with inferred error set but returning no error" {
403430
404test "import passed byref to function in return type" {431test "import passed byref to function in return type" {
405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
433 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
406434
407 const S = struct {435 const S = struct {
408 fn get() @import("std").ArrayListUnmanaged(i32) {436 fn get() @import("std").ArrayListUnmanaged(i32) {
...@@ -419,6 +447,7 @@ test "implicit cast function to function ptr" {...@@ -419,6 +447,7 @@ test "implicit cast function to function ptr" {
419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO448 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO449 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
450 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422451
423 const S1 = struct {452 const S1 = struct {
424 export fn someFunctionThatReturnsAValue() c_int {453 export fn someFunctionThatReturnsAValue() c_int {
...@@ -437,6 +466,7 @@ test "implicit cast function to function ptr" {...@@ -437,6 +466,7 @@ test "implicit cast function to function ptr" {
437test "method call with optional and error union first param" {466test "method call with optional and error union first param" {
438 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
440470
441 const S = struct {471 const S = struct {
442 x: i32 = 1234,472 x: i32 = 1234,
...@@ -456,6 +486,7 @@ test "method call with optional and error union first param" {...@@ -456,6 +486,7 @@ test "method call with optional and error union first param" {
456test "method call with optional pointer first param" {486test "method call with optional pointer first param" {
457 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
459490
460 const S = struct {491 const S = struct {
461 x: i32 = 1234,492 x: i32 = 1234,
...@@ -475,6 +506,7 @@ test "using @ptrCast on function pointers" {...@@ -475,6 +506,7 @@ test "using @ptrCast on function pointers" {
475 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
478510
479 const S = struct {511 const S = struct {
480 const A = struct { data: [4]u8 };512 const A = struct { data: [4]u8 };
...@@ -512,6 +544,7 @@ test "function returns function returning type" {...@@ -512,6 +544,7 @@ test "function returns function returning type" {
512544
513test "peer type resolution of inferred error set with non-void payload" {545test "peer type resolution of inferred error set with non-void payload" {
514 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
515548
516 const S = struct {549 const S = struct {
517 fn openDataFile(mode: enum { read, write }) !u32 {550 fn openDataFile(mode: enum { read, write }) !u32 {
test/behavior/fn_delegation.zig+1
...@@ -34,6 +34,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {...@@ -34,6 +34,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
34test "fn delegation" {34test "fn delegation" {
35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3738
38 const foo = Foo{};39 const foo = Foo{};
39 try expect(foo.one() == 11);40 try expect(foo.one() == 11);
test/behavior/fn_in_struct_in_comptime.zig+3
...@@ -1,3 +1,4 @@...@@ -1,3 +1,4 @@
1const builtin = @import("builtin");
1const expect = @import("std").testing.expect;2const expect = @import("std").testing.expect;
23
3fn get_foo() fn (*u8) usize {4fn get_foo() fn (*u8) usize {
...@@ -12,6 +13,8 @@ fn get_foo() fn (*u8) usize {...@@ -12,6 +13,8 @@ fn get_foo() fn (*u8) usize {
12}13}
1314
14test "define a function in an anonymous struct in comptime" {15test "define a function in an anonymous struct in comptime" {
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17
15 const foo = get_foo();18 const foo = get_foo();
16 try expect(foo(@intToPtr(*u8, 12345)) == 12345);19 try expect(foo(@intToPtr(*u8, 12345)) == 12345);
17}20}
test/behavior/for.zig+22
...@@ -7,6 +7,7 @@ const mem = std.mem;...@@ -7,6 +7,7 @@ const mem = std.mem;
7test "continue in for loop" {7test "continue in for loop" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 const array = [_]i32{ 1, 2, 3, 4, 5 };12 const array = [_]i32{ 1, 2, 3, 4, 5 };
12 var sum: i32 = 0;13 var sum: i32 = 0;
...@@ -21,6 +22,8 @@ test "continue in for loop" {...@@ -21,6 +22,8 @@ test "continue in for loop" {
21}22}
2223
23test "break from outer for loop" {24test "break from outer for loop" {
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26
24 try testBreakOuter();27 try testBreakOuter();
25 comptime try testBreakOuter();28 comptime try testBreakOuter();
26}29}
...@@ -38,6 +41,8 @@ fn testBreakOuter() !void {...@@ -38,6 +41,8 @@ fn testBreakOuter() !void {
38}41}
3942
40test "continue outer for loop" {43test "continue outer for loop" {
44 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
45
41 try testContinueOuter();46 try testContinueOuter();
42 comptime try testContinueOuter();47 comptime try testContinueOuter();
43}48}
...@@ -69,6 +74,7 @@ test "basic for loop" {...@@ -69,6 +74,7 @@ test "basic for loop" {
69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7278
73 const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;79 const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
7480
...@@ -112,6 +118,7 @@ test "for with null and T peer types and inferred result location type" {...@@ -112,6 +118,7 @@ test "for with null and T peer types and inferred result location type" {
112 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
114 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
115122
116 const S = struct {123 const S = struct {
117 fn doTheTest(slice: []const u8) !void {124 fn doTheTest(slice: []const u8) !void {
...@@ -132,6 +139,7 @@ test "for with null and T peer types and inferred result location type" {...@@ -132,6 +139,7 @@ test "for with null and T peer types and inferred result location type" {
132test "2 break statements and an else" {139test "2 break statements and an else" {
133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135143
136 const S = struct {144 const S = struct {
137 fn entry(t: bool, f: bool) !void {145 fn entry(t: bool, f: bool) !void {
...@@ -153,6 +161,7 @@ test "for loop with pointer elem var" {...@@ -153,6 +161,7 @@ test "for loop with pointer elem var" {
153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156165
157 const source = "abcdefg";166 const source = "abcdefg";
158 var target: [source.len]u8 = undefined;167 var target: [source.len]u8 = undefined;
...@@ -179,6 +188,7 @@ fn mangleString(s: []u8) void {...@@ -179,6 +188,7 @@ fn mangleString(s: []u8) void {
179test "for copies its payload" {188test "for copies its payload" {
180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
182192
183 const S = struct {193 const S = struct {
184 fn doTheTest() !void {194 fn doTheTest() !void {
...@@ -198,6 +208,7 @@ test "for on slice with allowzero ptr" {...@@ -198,6 +208,7 @@ test "for on slice with allowzero ptr" {
198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
201212
202 const S = struct {213 const S = struct {
203 fn doTheTest(slice: []const u8) !void {214 fn doTheTest(slice: []const u8) !void {
...@@ -213,6 +224,7 @@ test "for on slice with allowzero ptr" {...@@ -213,6 +224,7 @@ test "for on slice with allowzero ptr" {
213test "else continue outer for" {224test "else continue outer for" {
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
216228
217 var i: usize = 6;229 var i: usize = 6;
218 var buf: [5]u8 = undefined;230 var buf: [5]u8 = undefined;
...@@ -226,6 +238,7 @@ test "else continue outer for" {...@@ -226,6 +238,7 @@ test "else continue outer for" {
226238
227test "for loop with else branch" {239test "for loop with else branch" {
228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
229242
230 {243 {
231 var x = [_]u32{ 1, 2 };244 var x = [_]u32{ 1, 2 };
...@@ -248,6 +261,7 @@ test "for loop with else branch" {...@@ -248,6 +261,7 @@ test "for loop with else branch" {
248test "count over fixed range" {261test "count over fixed range" {
249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
250 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
251265
252 var sum: usize = 0;266 var sum: usize = 0;
253 for (0..6) |i| {267 for (0..6) |i| {
...@@ -260,6 +274,7 @@ test "count over fixed range" {...@@ -260,6 +274,7 @@ test "count over fixed range" {
260test "two counters" {274test "two counters" {
261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
263278
264 var sum: usize = 0;279 var sum: usize = 0;
265 for (0..10, 10..20) |i, j| {280 for (0..10, 10..20) |i, j| {
...@@ -273,6 +288,7 @@ test "two counters" {...@@ -273,6 +288,7 @@ test "two counters" {
273test "1-based counter and ptr to array" {288test "1-based counter and ptr to array" {
274 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
276292
277 var ok: usize = 0;293 var ok: usize = 0;
278294
...@@ -306,6 +322,7 @@ test "slice and two counters, one is offset and one is runtime" {...@@ -306,6 +322,7 @@ test "slice and two counters, one is offset and one is runtime" {
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
308 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
309326
310 const slice: []const u8 = "blah";327 const slice: []const u8 = "blah";
311 var start: usize = 0;328 var start: usize = 0;
...@@ -334,6 +351,7 @@ test "two slices, one captured by-ref" {...@@ -334,6 +351,7 @@ test "two slices, one captured by-ref" {
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337355
338 var buf: [10]u8 = undefined;356 var buf: [10]u8 = undefined;
339 const slice1: []const u8 = "blah";357 const slice1: []const u8 = "blah";
...@@ -353,6 +371,7 @@ test "raw pointer and slice" {...@@ -353,6 +371,7 @@ test "raw pointer and slice" {
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356375
357 var buf: [10]u8 = undefined;376 var buf: [10]u8 = undefined;
358 const slice: []const u8 = "blah";377 const slice: []const u8 = "blah";
...@@ -372,6 +391,7 @@ test "raw pointer and counter" {...@@ -372,6 +391,7 @@ test "raw pointer and counter" {
372 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
375395
376 var buf: [10]u8 = undefined;396 var buf: [10]u8 = undefined;
377 const ptr: [*]u8 = &buf;397 const ptr: [*]u8 = &buf;
...@@ -390,6 +410,7 @@ test "inline for with slice as the comptime-known" {...@@ -390,6 +410,7 @@ test "inline for with slice as the comptime-known" {
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO411 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
393414
394 const comptime_slice = "hello";415 const comptime_slice = "hello";
395 var runtime_i: usize = 3;416 var runtime_i: usize = 3;
...@@ -420,6 +441,7 @@ test "inline for with counter as the comptime-known" {...@@ -420,6 +441,7 @@ test "inline for with counter as the comptime-known" {
420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO441 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO442 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
444 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
423445
424 var runtime_slice = "hello";446 var runtime_slice = "hello";
425 var runtime_i: usize = 3;447 var runtime_i: usize = 3;
test/behavior/generics.zig+24
...@@ -5,6 +5,8 @@ const expect = testing.expect;...@@ -5,6 +5,8 @@ const expect = testing.expect;
5const expectEqual = testing.expectEqual;5const expectEqual = testing.expectEqual;
66
7test "one param, explicit comptime" {7test "one param, explicit comptime" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
8 var x: usize = 0;10 var x: usize = 0;
9 x += checkSize(i32);11 x += checkSize(i32);
10 x += checkSize(bool);12 x += checkSize(bool);
...@@ -19,6 +21,7 @@ fn checkSize(comptime T: type) usize {...@@ -19,6 +21,7 @@ fn checkSize(comptime T: type) usize {
19test "simple generic fn" {21test "simple generic fn" {
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2225
23 try expect(max(i32, 3, -1) == 3);26 try expect(max(i32, 3, -1) == 3);
24 try expect(max(u8, 1, 100) == 100);27 try expect(max(u8, 1, 100) == 100);
...@@ -59,6 +62,7 @@ test "fn with comptime args" {...@@ -59,6 +62,7 @@ test "fn with comptime args" {
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6266
63 try expect(gimmeTheBigOne(1234, 5678) == 5678);67 try expect(gimmeTheBigOne(1234, 5678) == 5678);
64 try expect(shouldCallSameInstance(34, 12) == 34);68 try expect(shouldCallSameInstance(34, 12) == 34);
...@@ -69,6 +73,7 @@ test "anytype params" {...@@ -69,6 +73,7 @@ test "anytype params" {
69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7277
73 try expect(max_i32(12, 34) == 34);78 try expect(max_i32(12, 34) == 34);
74 try expect(max_f64(1.2, 3.4) == 3.4);79 try expect(max_f64(1.2, 3.4) == 3.4);
...@@ -93,6 +98,7 @@ fn max_f64(a: f64, b: f64) f64 {...@@ -93,6 +98,7 @@ fn max_f64(a: f64, b: f64) f64 {
93test "type constructed by comptime function call" {98test "type constructed by comptime function call" {
94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
96102
97 var l: SimpleList(10) = undefined;103 var l: SimpleList(10) = undefined;
98 l.array[0] = 10;104 l.array[0] = 10;
...@@ -116,6 +122,7 @@ test "function with return type type" {...@@ -116,6 +122,7 @@ test "function with return type type" {
116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
119126
120 var list: List(i32) = undefined;127 var list: List(i32) = undefined;
121 var list2: List(i32) = undefined;128 var list2: List(i32) = undefined;
...@@ -147,6 +154,8 @@ fn GenericDataThing(comptime count: isize) type {...@@ -147,6 +154,8 @@ fn GenericDataThing(comptime count: isize) type {
147}154}
148155
149test "use generic param in generic param" {156test "use generic param in generic param" {
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158
150 try expect(aGenericFn(i32, 3, 4) == 7);159 try expect(aGenericFn(i32, 3, 4) == 7);
151}160}
152fn aGenericFn(comptime T: type, comptime a: T, b: T) T {161fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
...@@ -157,6 +166,7 @@ test "generic fn with implicit cast" {...@@ -157,6 +166,7 @@ test "generic fn with implicit cast" {
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
169 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160170
161 try expect(getFirstByte(u8, &[_]u8{13}) == 13);171 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
162 try expect(getFirstByte(u16, &[_]u16{172 try expect(getFirstByte(u16, &[_]u16{
...@@ -175,6 +185,7 @@ test "generic fn keeps non-generic parameter types" {...@@ -175,6 +185,7 @@ test "generic fn keeps non-generic parameter types" {
175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
178189
179 const A = 128;190 const A = 128;
180191
...@@ -209,6 +220,7 @@ fn foo2(arg: anytype) bool {...@@ -209,6 +220,7 @@ fn foo2(arg: anytype) bool {
209220
210test "generic struct" {221test "generic struct" {
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212224
213 var a1 = GenNode(i32){225 var a1 = GenNode(i32){
214 .value = 13,226 .value = 13,
...@@ -249,6 +261,7 @@ test "generic function instantiation turns into comptime call" {...@@ -249,6 +261,7 @@ test "generic function instantiation turns into comptime call" {
249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
250 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
252265
253 const S = struct {266 const S = struct {
254 fn doTheTest() !void {267 fn doTheTest() !void {
...@@ -298,6 +311,7 @@ test "generic function with void and comptime parameter" {...@@ -298,6 +311,7 @@ test "generic function with void and comptime parameter" {
298test "anonymous struct return type referencing comptime parameter" {311test "anonymous struct return type referencing comptime parameter" {
299 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301315
302 const S = struct {316 const S = struct {
303 pub fn extraData(comptime T: type, index: usize) struct { data: T, end: usize } {317 pub fn extraData(comptime T: type, index: usize) struct { data: T, end: usize } {
...@@ -316,6 +330,7 @@ test "generic function instantiation non-duplicates" {...@@ -316,6 +330,7 @@ test "generic function instantiation non-duplicates" {
316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
319 if (builtin.os.tag == .wasi) return error.SkipZigTest;334 if (builtin.os.tag == .wasi) return error.SkipZigTest;
320335
321 const S = struct {336 const S = struct {
...@@ -351,6 +366,8 @@ test "generic instantiation of tagged union with only one field" {...@@ -351,6 +366,8 @@ test "generic instantiation of tagged union with only one field" {
351}366}
352367
353test "nested generic function" {368test "nested generic function" {
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
370
354 const S = struct {371 const S = struct {
355 fn foo(comptime T: type, callback: *const fn (user_data: T) anyerror!void, data: T) anyerror!void {372 fn foo(comptime T: type, callback: *const fn (user_data: T) anyerror!void, data: T) anyerror!void {
356 try callback(data);373 try callback(data);
...@@ -366,6 +383,8 @@ test "nested generic function" {...@@ -366,6 +383,8 @@ test "nested generic function" {
366}383}
367384
368test "extern function used as generic parameter" {385test "extern function used as generic parameter" {
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387
369 const S = struct {388 const S = struct {
370 extern fn usedAsGenericParameterFoo() void;389 extern fn usedAsGenericParameterFoo() void;
371 extern fn usedAsGenericParameterBar() void;390 extern fn usedAsGenericParameterBar() void;
...@@ -393,6 +412,8 @@ test "generic struct as parameter type" {...@@ -393,6 +412,8 @@ test "generic struct as parameter type" {
393}412}
394413
395test "slice as parameter type" {414test "slice as parameter type" {
415 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
416
396 const S = struct {417 const S = struct {
397 fn internComptimeString(comptime str: []const u8) *const []const u8 {418 fn internComptimeString(comptime str: []const u8) *const []const u8 {
398 return &struct {419 return &struct {
...@@ -407,6 +428,8 @@ test "slice as parameter type" {...@@ -407,6 +428,8 @@ test "slice as parameter type" {
407}428}
408429
409test "null sentinel pointer passed as generic argument" {430test "null sentinel pointer passed as generic argument" {
431 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
432
410 const S = struct {433 const S = struct {
411 fn doTheTest(a: anytype) !void {434 fn doTheTest(a: anytype) !void {
412 try std.testing.expect(@ptrToInt(a) == 8);435 try std.testing.expect(@ptrToInt(a) == 8);
...@@ -417,6 +440,7 @@ test "null sentinel pointer passed as generic argument" {...@@ -417,6 +440,7 @@ test "null sentinel pointer passed as generic argument" {
417440
418test "generic function passed as comptime argument" {441test "generic function passed as comptime argument" {
419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO442 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
443 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420444
421 const S = struct {445 const S = struct {
422 fn doMath(comptime f: fn (type, i32, i32) error{Overflow}!i32, a: i32, b: i32) !void {446 fn doMath(comptime f: fn (type, i32, i32) error{Overflow}!i32, a: i32, b: i32) !void {
test/behavior/if.zig+5
...@@ -45,6 +45,7 @@ var global_with_err: anyerror!u32 = error.SomeError;...@@ -45,6 +45,7 @@ var global_with_err: anyerror!u32 = error.SomeError;
4545
46test "unwrap mutable global var" {46test "unwrap mutable global var" {
47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4849
49 if (global_with_val) |v| {50 if (global_with_val) |v| {
50 try expect(v == 0);51 try expect(v == 0);
...@@ -70,6 +71,8 @@ test "labeled break inside comptime if inside runtime if" {...@@ -70,6 +71,8 @@ test "labeled break inside comptime if inside runtime if" {
70}71}
7172
72test "const result loc, runtime if cond, else unreachable" {73test "const result loc, runtime if cond, else unreachable" {
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
75
73 const Num = enum { One, Two };76 const Num = enum { One, Two };
7477
75 var t = true;78 var t = true;
...@@ -115,6 +118,7 @@ test "if peer expressions inferred optional type" {...@@ -115,6 +118,7 @@ test "if peer expressions inferred optional type" {
115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
118122
119 var self: []const u8 = "abcdef";123 var self: []const u8 = "abcdef";
120 var index: usize = 0;124 var index: usize = 0;
...@@ -132,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti...@@ -132,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti
132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135140
136 const A = struct { b: u64, c: u64 };141 const A = struct { b: u64, c: u64 };
137 var d: bool = true;142 var d: bool = true;
test/behavior/inline_switch.zig+5
...@@ -47,6 +47,7 @@ test "inline switch unions" {...@@ -47,6 +47,7 @@ test "inline switch unions" {
47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
51 var x: U = .a;52 var x: U = .a;
52 switch (x) {53 switch (x) {
...@@ -72,6 +73,7 @@ test "inline switch unions" {...@@ -72,6 +73,7 @@ test "inline switch unions" {
72test "inline else bool" {73test "inline else bool" {
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7577
76 var a = true;78 var a = true;
77 switch (a) {79 switch (a) {
...@@ -83,6 +85,7 @@ test "inline else bool" {...@@ -83,6 +85,7 @@ test "inline else bool" {
83test "inline else error" {85test "inline else error" {
84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8689
87 const Err = error{ a, b, c };90 const Err = error{ a, b, c };
88 var a = Err.a;91 var a = Err.a;
...@@ -138,6 +141,8 @@ test "inline else int all values" {...@@ -138,6 +141,8 @@ test "inline else int all values" {
138}141}
139142
140test "inline switch capture is set when switch operand is comptime known" {143test "inline switch capture is set when switch operand is comptime known" {
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145
141 const U2 = union(enum) {146 const U2 = union(enum) {
142 a: u32,147 a: u32,
143 };148 };
test/behavior/int128.zig+5
...@@ -8,6 +8,7 @@ test "uint128" {...@@ -8,6 +8,7 @@ test "uint128" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 var buff: u128 = maxInt(u128);13 var buff: u128 = maxInt(u128);
13 try expect(buff == maxInt(u128));14 try expect(buff == maxInt(u128));
...@@ -26,6 +27,7 @@ test "undefined 128 bit int" {...@@ -26,6 +27,7 @@ test "undefined 128 bit int" {
26 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2931
30 @setRuntimeSafety(true);32 @setRuntimeSafety(true);
3133
...@@ -43,6 +45,7 @@ test "int128" {...@@ -43,6 +45,7 @@ test "int128" {
43 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4649
47 var buff: i128 = -1;50 var buff: i128 = -1;
48 try expect(buff < 0 and (buff + 1) == 0);51 try expect(buff < 0 and (buff + 1) == 0);
...@@ -66,6 +69,7 @@ test "truncate int128" {...@@ -66,6 +69,7 @@ test "truncate int128" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6973
70 {74 {
71 var buff: u128 = maxInt(u128);75 var buff: u128 = maxInt(u128);
...@@ -87,6 +91,7 @@ test "shift int128" {...@@ -87,6 +91,7 @@ test "shift int128" {
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9095
91 const types = .{ u128, i128 };96 const types = .{ u128, i128 };
92 inline for (types) |t| {97 inline for (types) |t| {
test/behavior/int_comparison_elision.zig+2
...@@ -4,6 +4,8 @@ const maxInt = std.math.maxInt;...@@ -4,6 +4,8 @@ const maxInt = std.math.maxInt;
4const builtin = @import("builtin");4const builtin = @import("builtin");
55
6test "int comparison elision" {6test "int comparison elision" {
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8
7 testIntEdges(u0);9 testIntEdges(u0);
8 testIntEdges(i0);10 testIntEdges(i0);
9 testIntEdges(u1);11 testIntEdges(u1);
test/behavior/inttoptr.zig+1
...@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {...@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);19 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
19}20}
test/behavior/ir_block_deps.zig+1
...@@ -21,6 +21,7 @@ test "ir block deps" {...@@ -21,6 +21,7 @@ test "ir block deps" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
25 try expect((foo(1) catch unreachable) == 0);26 try expect((foo(1) catch unreachable) == 0);
26 try expect((foo(2) catch unreachable) == 0);27 try expect((foo(2) catch unreachable) == 0);
test/behavior/lower_strlit_to_vector.zig+1
...@@ -6,6 +6,7 @@ test "strlit to vector" {...@@ -6,6 +6,7 @@ test "strlit to vector" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 const strlit = "0123456789abcdef0123456789ABCDEF";11 const strlit = "0123456789abcdef0123456789ABCDEF";
11 const vec_from_strlit: @Vector(32, u8) = strlit.*;12 const vec_from_strlit: @Vector(32, u8) = strlit.*;
test/behavior/math.zig+42
...@@ -11,6 +11,7 @@ const math = std.math;...@@ -11,6 +11,7 @@ const math = std.math;
11test "assignment operators" {11test "assignment operators" {
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 var i: u32 = 0;16 var i: u32 = 0;
16 i += 5;17 i += 5;
...@@ -64,6 +65,7 @@ test "@clz" {...@@ -64,6 +65,7 @@ test "@clz" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
68 try testClz();70 try testClz();
69 comptime try testClz();71 comptime try testClz();
...@@ -82,6 +84,7 @@ test "@clz big ints" {...@@ -82,6 +84,7 @@ test "@clz big ints" {
82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8588
86 try testClzBigInts();89 try testClzBigInts();
87 comptime try testClzBigInts();90 comptime try testClzBigInts();
...@@ -102,6 +105,7 @@ test "@clz vectors" {...@@ -102,6 +105,7 @@ test "@clz vectors" {
102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105109
106 try testClzVectors();110 try testClzVectors();
107 comptime try testClzVectors();111 comptime try testClzVectors();
...@@ -142,6 +146,7 @@ test "@ctz" {...@@ -142,6 +146,7 @@ test "@ctz" {
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145150
146 try testCtz();151 try testCtz();
147 comptime try testCtz();152 comptime try testCtz();
...@@ -164,6 +169,7 @@ test "@ctz vectors" {...@@ -164,6 +169,7 @@ test "@ctz vectors" {
164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
172 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
167173
168 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {174 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
169 // This regressed with LLVM 14:175 // This regressed with LLVM 14:
...@@ -204,6 +210,7 @@ test "float equality" {...@@ -204,6 +210,7 @@ test "float equality" {
204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
207214
208 const x: f64 = 0.012;215 const x: f64 = 0.012;
209 const y: f64 = x + 1.0;216 const y: f64 = x + 1.0;
...@@ -381,6 +388,7 @@ test "binary not 128-bit" {...@@ -381,6 +388,7 @@ test "binary not 128-bit" {
381 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
384392
385 try expect(comptime x: {393 try expect(comptime x: {
386 break :x ~@as(u128, 0x55555555_55555555_55555555_55555555) == 0xaaaaaaaa_aaaaaaaa_aaaaaaaa_aaaaaaaa;394 break :x ~@as(u128, 0x55555555_55555555_55555555_55555555) == 0xaaaaaaaa_aaaaaaaa_aaaaaaaa_aaaaaaaa;
...@@ -404,6 +412,7 @@ test "division" {...@@ -404,6 +412,7 @@ test "division" {
404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
415 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407416
408 try testDivision();417 try testDivision();
409 comptime try testDivision();418 comptime try testDivision();
...@@ -484,6 +493,7 @@ test "division half-precision floats" {...@@ -484,6 +493,7 @@ test "division half-precision floats" {
484 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
485 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
487497
488 try testDivisionFP16();498 try testDivisionFP16();
489 comptime try testDivisionFP16();499 comptime try testDivisionFP16();
...@@ -564,6 +574,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {...@@ -564,6 +574,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {
564test "negation wrapping" {574test "negation wrapping" {
565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
577 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567578
568 try expectEqual(@as(u1, 1), negateWrap(u1, 1));579 try expectEqual(@as(u1, 1), negateWrap(u1, 1));
569}580}
...@@ -604,6 +615,8 @@ test "bit shift a u1" {...@@ -604,6 +615,8 @@ test "bit shift a u1" {
604}615}
605616
606test "truncating shift right" {617test "truncating shift right" {
618 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
619
607 try testShrTrunc(maxInt(u16));620 try testShrTrunc(maxInt(u16));
608 comptime try testShrTrunc(maxInt(u16));621 comptime try testShrTrunc(maxInt(u16));
609}622}
...@@ -618,6 +631,7 @@ test "f128" {...@@ -618,6 +631,7 @@ test "f128" {
618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
619 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO632 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
634 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
621635
622 try test_f128();636 try test_f128();
623 comptime try test_f128();637 comptime try test_f128();
...@@ -647,6 +661,7 @@ test "128-bit multiplication" {...@@ -647,6 +661,7 @@ test "128-bit multiplication" {
647 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
650665
651 {666 {
652 var a: i128 = 3;667 var a: i128 = 3;
...@@ -672,6 +687,7 @@ test "@addWithOverflow" {...@@ -672,6 +687,7 @@ test "@addWithOverflow" {
672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO688 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
674 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO689 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
690 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
675691
676 {692 {
677 var a: u8 = 250;693 var a: u8 = 250;
...@@ -717,6 +733,7 @@ test "@addWithOverflow" {...@@ -717,6 +733,7 @@ test "@addWithOverflow" {
717test "small int addition" {733test "small int addition" {
718 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
719 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO735 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
736 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
720737
721 var x: u2 = 0;738 var x: u2 = 0;
722 try expect(x == 0);739 try expect(x == 0);
...@@ -738,6 +755,7 @@ test "small int addition" {...@@ -738,6 +755,7 @@ test "small int addition" {
738test "basic @mulWithOverflow" {755test "basic @mulWithOverflow" {
739 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
740 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
741759
742 {760 {
743 var a: u8 = 86;761 var a: u8 = 86;
...@@ -768,6 +786,7 @@ test "extensive @mulWithOverflow" {...@@ -768,6 +786,7 @@ test "extensive @mulWithOverflow" {
768 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO786 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
769 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
770 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO788 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
789 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
771790
772 {791 {
773 var a: u5 = 3;792 var a: u5 = 3;
...@@ -932,6 +951,7 @@ test "@mulWithOverflow bitsize > 32" {...@@ -932,6 +951,7 @@ test "@mulWithOverflow bitsize > 32" {
932 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
933 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO952 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
934 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO953 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
954 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
935955
936 {956 {
937 var a: u62 = 3;957 var a: u62 = 3;
...@@ -990,6 +1010,7 @@ test "@subWithOverflow" {...@@ -990,6 +1010,7 @@ test "@subWithOverflow" {
990 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
991 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1011 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
992 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1012 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1013 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9931014
994 {1015 {
995 var a: u8 = 1;1016 var a: u8 = 1;
...@@ -1037,6 +1058,8 @@ test "@shlWithOverflow" {...@@ -1037,6 +1058,8 @@ test "@shlWithOverflow" {
1037 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1058 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1059 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1039 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1060 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1062
1040 {1063 {
1041 var a: u4 = 2;1064 var a: u4 = 2;
1042 var b: u2 = 1;1065 var b: u2 = 1;
...@@ -1114,6 +1137,8 @@ test "overflow arithmetic with u0 values" {...@@ -1114,6 +1137,8 @@ test "overflow arithmetic with u0 values" {
1114}1137}
11151138
1116test "allow signed integer division/remainder when values are comptime-known and positive or exact" {1139test "allow signed integer division/remainder when values are comptime-known and positive or exact" {
1140 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1141
1117 try expect(5 / 3 == 1);1142 try expect(5 / 3 == 1);
1118 try expect(-5 / -3 == 1);1143 try expect(-5 / -3 == 1);
1119 try expect(-6 / 3 == -2);1144 try expect(-6 / 3 == -2);
...@@ -1132,6 +1157,7 @@ test "quad hex float literal parsing accurate" {...@@ -1132,6 +1157,7 @@ test "quad hex float literal parsing accurate" {
1132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1160 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11351161
1136 const a: f128 = 0x1.1111222233334444555566667777p+0;1162 const a: f128 = 0x1.1111222233334444555566667777p+0;
11371163
...@@ -1232,6 +1258,8 @@ fn testShlTrunc(x: u16) !void {...@@ -1232,6 +1258,8 @@ fn testShlTrunc(x: u16) !void {
1232}1258}
12331259
1234test "exact shift left" {1260test "exact shift left" {
1261 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1262
1235 try testShlExact(0b00110101);1263 try testShlExact(0b00110101);
1236 comptime try testShlExact(0b00110101);1264 comptime try testShlExact(0b00110101);
1237}1265}
...@@ -1241,6 +1269,8 @@ fn testShlExact(x: u8) !void {...@@ -1241,6 +1269,8 @@ fn testShlExact(x: u8) !void {
1241}1269}
12421270
1243test "exact shift right" {1271test "exact shift right" {
1272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1273
1244 try testShrExact(0b10110100);1274 try testShrExact(0b10110100);
1245 comptime try testShrExact(0b10110100);1275 comptime try testShrExact(0b10110100);
1246}1276}
...@@ -1280,6 +1310,7 @@ test "remainder division" {...@@ -1280,6 +1310,7 @@ test "remainder division" {
1280 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1310 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1283 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1314 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12841315
1285 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {1316 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
...@@ -1316,6 +1347,7 @@ test "float remainder division using @rem" {...@@ -1316,6 +1347,7 @@ test "float remainder division using @rem" {
1316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1319 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1351 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13201352
1321 comptime try frem(f16);1353 comptime try frem(f16);
...@@ -1359,6 +1391,7 @@ test "float modulo division using @mod" {...@@ -1359,6 +1391,7 @@ test "float modulo division using @mod" {
1359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1391 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1360 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1392 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1393 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1394 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13621395
1363 comptime try fmod(f16);1396 comptime try fmod(f16);
1364 comptime try fmod(f32);1397 comptime try fmod(f32);
...@@ -1401,6 +1434,7 @@ test "@round" {...@@ -1401,6 +1434,7 @@ test "@round" {
1401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1402 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1435 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1436 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1437 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14041438
1405 try testRound(f64, 12.0);1439 try testRound(f64, 12.0);
1406 comptime try testRound(f64, 12.0);1440 comptime try testRound(f64, 12.0);
...@@ -1421,6 +1455,7 @@ test "@round f80" {...@@ -1421,6 +1455,7 @@ test "@round f80" {
1421 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1458 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14241459
1425 try testRound(f80, 12.0);1460 try testRound(f80, 12.0);
1426 comptime try testRound(f80, 12.0);1461 comptime try testRound(f80, 12.0);
...@@ -1432,6 +1467,7 @@ test "@round f128" {...@@ -1432,6 +1467,7 @@ test "@round f128" {
1432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1467 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1433 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1468 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14351471
1436 try testRound(f128, 12.0);1472 try testRound(f128, 12.0);
1437 comptime try testRound(f128, 12.0);1473 comptime try testRound(f128, 12.0);
...@@ -1449,6 +1485,7 @@ test "vector integer addition" {...@@ -1449,6 +1485,7 @@ test "vector integer addition" {
1449 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1450 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1486 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1451 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1488 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14521489
1453 const S = struct {1490 const S = struct {
1454 fn doTheTest() !void {1491 fn doTheTest() !void {
...@@ -1470,6 +1507,7 @@ test "NaN comparison" {...@@ -1470,6 +1507,7 @@ test "NaN comparison" {
1470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1471 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1508 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1472 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1510 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14731511
1474 try testNanEqNan(f16);1512 try testNanEqNan(f16);
1475 try testNanEqNan(f32);1513 try testNanEqNan(f32);
...@@ -1487,6 +1525,7 @@ test "NaN comparison f80" {...@@ -1487,6 +1525,7 @@ test "NaN comparison f80" {
1487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1488 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1489 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1528 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14901529
1491 try testNanEqNan(f80);1530 try testNanEqNan(f80);
1492 comptime try testNanEqNan(f80);1531 comptime try testNanEqNan(f80);
...@@ -1509,6 +1548,7 @@ test "vector comparison" {...@@ -1509,6 +1548,7 @@ test "vector comparison" {
1509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1548 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1510 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1549 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1550 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1551 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15121552
1513 const S = struct {1553 const S = struct {
1514 fn doTheTest() !void {1554 fn doTheTest() !void {
...@@ -1538,6 +1578,7 @@ test "signed zeros are represented properly" {...@@ -1538,6 +1578,7 @@ test "signed zeros are represented properly" {
1538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15411582
1542 const S = struct {1583 const S = struct {
1543 fn doTheTest() !void {1584 fn doTheTest() !void {
...@@ -1573,6 +1614,7 @@ test "absFloat" {...@@ -1573,6 +1614,7 @@ test "absFloat" {
1573 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1574 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1615 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15761618
1577 try testAbsFloat();1619 try testAbsFloat();
1578 comptime try testAbsFloat();1620 comptime try testAbsFloat();
test/behavior/maximum_minimum.zig+11
...@@ -8,6 +8,7 @@ test "@max" {...@@ -8,6 +8,7 @@ test "@max" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 const S = struct {13 const S = struct {
13 fn doTheTest() !void {14 fn doTheTest() !void {
...@@ -27,6 +28,7 @@ test "@max on vectors" {...@@ -27,6 +28,7 @@ test "@max on vectors" {
27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
31 const S = struct {33 const S = struct {
32 fn doTheTest() !void {34 fn doTheTest() !void {
...@@ -54,6 +56,7 @@ test "@min" {...@@ -54,6 +56,7 @@ test "@min" {
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5760
58 const S = struct {61 const S = struct {
59 fn doTheTest() !void {62 fn doTheTest() !void {
...@@ -73,6 +76,7 @@ test "@min for vectors" {...@@ -73,6 +76,7 @@ test "@min for vectors" {
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7680
77 const S = struct {81 const S = struct {
78 fn doTheTest() !void {82 fn doTheTest() !void {
...@@ -122,6 +126,8 @@ test "@min/max for floats" {...@@ -122,6 +126,8 @@ test "@min/max for floats" {
122}126}
123127
124test "@min/@max on lazy values" {128test "@min/@max on lazy values" {
129 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
130
125 const A = extern struct { u8_4: [4]u8 };131 const A = extern struct { u8_4: [4]u8 };
126 const B = extern struct { u8_16: [16]u8 };132 const B = extern struct { u8_16: [16]u8 };
127 const size = @max(@sizeOf(A), @sizeOf(B));133 const size = @max(@sizeOf(A), @sizeOf(B));
...@@ -129,6 +135,8 @@ test "@min/@max on lazy values" {...@@ -129,6 +135,8 @@ test "@min/@max on lazy values" {
129}135}
130136
131test "@min/@max more than two arguments" {137test "@min/@max more than two arguments" {
138 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139
132 const x: u32 = 30;140 const x: u32 = 30;
133 const y: u32 = 10;141 const y: u32 = 10;
134 const z: u32 = 20;142 const z: u32 = 20;
...@@ -142,6 +150,7 @@ test "@min/@max more than two vector arguments" {...@@ -142,6 +150,7 @@ test "@min/@max more than two vector arguments" {
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145154
146 const x: @Vector(2, u32) = .{ 3, 2 };155 const x: @Vector(2, u32) = .{ 3, 2 };
147 const y: @Vector(2, u32) = .{ 4, 1 };156 const y: @Vector(2, u32) = .{ 4, 1 };
...@@ -154,6 +163,7 @@ test "@min/@max notices bounds" {...@@ -154,6 +163,7 @@ test "@min/@max notices bounds" {
154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157167
158 var x: u16 = 20;168 var x: u16 = 20;
159 const y = 30;169 const y = 30;
...@@ -172,6 +182,7 @@ test "@min/@max notices vector bounds" {...@@ -172,6 +182,7 @@ test "@min/@max notices vector bounds" {
172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
173 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
175186
176 var x: @Vector(2, u16) = .{ 140, 40 };187 var x: @Vector(2, u16) = .{ 140, 40 };
177 const y: @Vector(2, u64) = .{ 5, 100 };188 const y: @Vector(2, u64) = .{ 5, 100 };
test/behavior/member_func.zig+2
...@@ -30,6 +30,7 @@ test "standard field calls" {...@@ -30,6 +30,7 @@ test "standard field calls" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3334
34 try expect(HasFuncs.one(0) == 1);35 try expect(HasFuncs.one(0) == 1);
35 try expect(HasFuncs.two(0) == 2);36 try expect(HasFuncs.two(0) == 2);
...@@ -73,6 +74,7 @@ test "@field field calls" {...@@ -73,6 +74,7 @@ test "@field field calls" {
73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7678
77 try expect(@field(HasFuncs, "one")(0) == 1);79 try expect(@field(HasFuncs, "one")(0) == 1);
78 try expect(@field(HasFuncs, "two")(0) == 2);80 try expect(@field(HasFuncs, "two")(0) == 2);
test/behavior/memcpy.zig+2
...@@ -6,6 +6,7 @@ test "memcpy and memset intrinsics" {...@@ -6,6 +6,7 @@ test "memcpy and memset intrinsics" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 try testMemcpyMemset();11 try testMemcpyMemset();
11 try comptime testMemcpyMemset();12 try comptime testMemcpyMemset();
...@@ -27,6 +28,7 @@ test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {...@@ -27,6 +28,7 @@ test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {
27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
31 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();33 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
32 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();34 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
test/behavior/memset.zig+7
...@@ -6,6 +6,7 @@ test "@memset on array pointers" {...@@ -6,6 +6,7 @@ test "@memset on array pointers" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_wasm) {10 if (builtin.zig_backend == .stage2_wasm) {
10 // TODO: implement memset when element ABI size > 111 // TODO: implement memset when element ABI size > 1
11 return error.SkipZigTest;12 return error.SkipZigTest;
...@@ -38,6 +39,7 @@ test "@memset on slices" {...@@ -38,6 +39,7 @@ test "@memset on slices" {
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_wasm) {43 if (builtin.zig_backend == .stage2_wasm) {
42 // TODO: implement memset when element ABI size > 144 // TODO: implement memset when element ABI size > 1
43 // TODO: implement memset on slices45 // TODO: implement memset on slices
...@@ -75,6 +77,7 @@ test "memset with bool element" {...@@ -75,6 +77,7 @@ test "memset with bool element" {
75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;78 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;81 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
7982
80 var buf: [5]bool = undefined;83 var buf: [5]bool = undefined;
...@@ -87,6 +90,7 @@ test "memset with 1-byte struct element" {...@@ -87,6 +90,7 @@ test "memset with 1-byte struct element" {
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;90 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
89 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;94 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
9195
92 const S = struct { x: bool };96 const S = struct { x: bool };
...@@ -100,6 +104,7 @@ test "memset with 1-byte array element" {...@@ -100,6 +104,7 @@ test "memset with 1-byte array element" {
100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
104109
105 const A = [1]bool;110 const A = [1]bool;
...@@ -113,6 +118,7 @@ test "memset with large array element, runtime known" {...@@ -113,6 +118,7 @@ test "memset with large array element, runtime known" {
113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) return error.SkipZigTest;
118124
...@@ -131,6 +137,7 @@ test "memset with large array element, comptime known" {...@@ -131,6 +137,7 @@ test "memset with large array element, comptime known" {
131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
140 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
135 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) return error.SkipZigTest;142 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) return error.SkipZigTest;
136143
test/behavior/merge_error_sets.zig+1
...@@ -13,6 +13,7 @@ fn foo() C!void {...@@ -13,6 +13,7 @@ fn foo() C!void {
1313
14test "merge error sets" {14test "merge error sets" {
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 if (foo()) {18 if (foo()) {
18 @panic("unexpected");19 @panic("unexpected");
test/behavior/muladd.zig+9
...@@ -10,6 +10,7 @@ test "@mulAdd" {...@@ -10,6 +10,7 @@ test "@mulAdd" {
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1314
14 comptime try testMulAdd();15 comptime try testMulAdd();
15 try testMulAdd();16 try testMulAdd();
...@@ -35,6 +36,7 @@ test "@mulAdd f16" {...@@ -35,6 +36,7 @@ test "@mulAdd f16" {
35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3840
39 comptime try testMulAdd16();41 comptime try testMulAdd16();
40 try testMulAdd16();42 try testMulAdd16();
...@@ -53,6 +55,7 @@ test "@mulAdd f80" {...@@ -53,6 +55,7 @@ test "@mulAdd f80" {
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5659
57 comptime try testMulAdd80();60 comptime try testMulAdd80();
58 try testMulAdd80();61 try testMulAdd80();
...@@ -71,6 +74,7 @@ test "@mulAdd f128" {...@@ -71,6 +74,7 @@ test "@mulAdd f128" {
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7478
75 comptime try testMulAdd128();79 comptime try testMulAdd128();
76 try testMulAdd128();80 try testMulAdd128();
...@@ -101,6 +105,7 @@ test "vector f16" {...@@ -101,6 +105,7 @@ test "vector f16" {
101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104109
105 comptime try vector16();110 comptime try vector16();
106 try vector16();111 try vector16();
...@@ -124,6 +129,7 @@ test "vector f32" {...@@ -124,6 +129,7 @@ test "vector f32" {
124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127133
128 comptime try vector32();134 comptime try vector32();
129 try vector32();135 try vector32();
...@@ -147,6 +153,7 @@ test "vector f64" {...@@ -147,6 +153,7 @@ test "vector f64" {
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
150157
151 comptime try vector64();158 comptime try vector64();
152 try vector64();159 try vector64();
...@@ -169,6 +176,7 @@ test "vector f80" {...@@ -169,6 +176,7 @@ test "vector f80" {
169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
172180
173 comptime try vector80();181 comptime try vector80();
174 try vector80();182 try vector80();
...@@ -192,6 +200,7 @@ test "vector f128" {...@@ -192,6 +200,7 @@ test "vector f128" {
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
195204
196 comptime try vector128();205 comptime try vector128();
197 try vector128();206 try vector128();
test/behavior/null.zig+7
...@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {...@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {
32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3536
36 var maybe_bool: ?bool = true;37 var maybe_bool: ?bool = true;
3738
...@@ -52,6 +53,7 @@ test "maybe return" {...@@ -52,6 +53,7 @@ test "maybe return" {
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5557
56 try maybeReturnImpl();58 try maybeReturnImpl();
57 comptime try maybeReturnImpl();59 comptime try maybeReturnImpl();
...@@ -82,6 +84,7 @@ fn testTestNullRuntime(x: ?i32) !void {...@@ -82,6 +84,7 @@ fn testTestNullRuntime(x: ?i32) !void {
82test "optional void" {84test "optional void" {
83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8588
86 try optionalVoidImpl();89 try optionalVoidImpl();
87 comptime try optionalVoidImpl();90 comptime try optionalVoidImpl();
...@@ -105,6 +108,7 @@ const Empty = struct {};...@@ -105,6 +108,7 @@ const Empty = struct {};
105test "optional struct{}" {108test "optional struct{}" {
106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO110 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
108112
109 _ = try optionalEmptyStructImpl();113 _ = try optionalEmptyStructImpl();
110 _ = comptime try optionalEmptyStructImpl();114 _ = comptime try optionalEmptyStructImpl();
...@@ -130,6 +134,7 @@ test "null with default unwrap" {...@@ -130,6 +134,7 @@ test "null with default unwrap" {
130134
131test "optional pointer to 0 bit type null value at runtime" {135test "optional pointer to 0 bit type null value at runtime" {
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
133138
134 const EmptyStruct = struct {};139 const EmptyStruct = struct {};
135 var x: ?*EmptyStruct = null;140 var x: ?*EmptyStruct = null;
...@@ -140,6 +145,7 @@ test "if var maybe pointer" {...@@ -140,6 +145,7 @@ test "if var maybe pointer" {
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143149
144 try expect(shouldBeAPlus1(Particle{150 try expect(shouldBeAPlus1(Particle{
145 .a = 14,151 .a = 14,
...@@ -183,6 +189,7 @@ test "unwrap optional which is field of global var" {...@@ -183,6 +189,7 @@ test "unwrap optional which is field of global var" {
183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
186193
187 struct_with_optional.field = null;194 struct_with_optional.field = null;
188 if (struct_with_optional.field) |payload| {195 if (struct_with_optional.field) |payload| {
test/behavior/optional.zig+25
...@@ -8,6 +8,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;...@@ -8,6 +8,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
8test "passing an optional integer as a parameter" {8test "passing an optional integer as a parameter" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 const S = struct {13 const S = struct {
13 fn entry() bool {14 fn entry() bool {
...@@ -27,6 +28,7 @@ pub const EmptyStruct = struct {};...@@ -27,6 +28,7 @@ pub const EmptyStruct = struct {};
2728
28test "optional pointer to size zero struct" {29test "optional pointer to size zero struct" {
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
31 var e = EmptyStruct{};33 var e = EmptyStruct{};
32 var o: ?*EmptyStruct = &e;34 var o: ?*EmptyStruct = &e;
...@@ -34,6 +36,8 @@ test "optional pointer to size zero struct" {...@@ -34,6 +36,8 @@ test "optional pointer to size zero struct" {
34}36}
3537
36test "equality compare optional pointers" {38test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
37 try testNullPtrsEql();41 try testNullPtrsEql();
38 comptime try testNullPtrsEql();42 comptime try testNullPtrsEql();
39}43}
...@@ -58,6 +62,7 @@ test "optional with void type" {...@@ -58,6 +62,7 @@ test "optional with void type" {
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6166
62 const Foo = struct {67 const Foo = struct {
63 x: ?void,68 x: ?void,
...@@ -71,6 +76,7 @@ test "address of unwrap optional" {...@@ -71,6 +76,7 @@ test "address of unwrap optional" {
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7480
75 const S = struct {81 const S = struct {
76 const Foo = struct {82 const Foo = struct {
...@@ -92,6 +98,7 @@ test "nested optional field in struct" {...@@ -92,6 +98,7 @@ test "nested optional field in struct" {
92 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
95102
96 const S2 = struct {103 const S2 = struct {
97 y: u8,104 y: u8,
...@@ -109,6 +116,7 @@ test "equality compare optional with non-optional" {...@@ -109,6 +116,7 @@ test "equality compare optional with non-optional" {
109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
112120
113 try test_cmp_optional_non_optional();121 try test_cmp_optional_non_optional();
114 comptime try test_cmp_optional_non_optional();122 comptime try test_cmp_optional_non_optional();
...@@ -146,6 +154,7 @@ fn test_cmp_optional_non_optional() !void {...@@ -146,6 +154,7 @@ fn test_cmp_optional_non_optional() !void {
146test "unwrap function call with optional pointer return value" {154test "unwrap function call with optional pointer return value" {
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
149158
150 const S = struct {159 const S = struct {
151 fn entry() !void {160 fn entry() !void {
...@@ -167,6 +176,7 @@ test "unwrap function call with optional pointer return value" {...@@ -167,6 +176,7 @@ test "unwrap function call with optional pointer return value" {
167test "nested orelse" {176test "nested orelse" {
168 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO177 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170180
171 const S = struct {181 const S = struct {
172 fn entry() !void {182 fn entry() !void {
...@@ -193,6 +203,7 @@ test "nested orelse" {...@@ -193,6 +203,7 @@ test "nested orelse" {
193test "self-referential struct through a slice of optional" {203test "self-referential struct through a slice of optional" {
194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
196207
197 const S = struct {208 const S = struct {
198 const Node = struct {209 const Node = struct {
...@@ -228,6 +239,7 @@ test "coerce an anon struct literal to optional struct" {...@@ -228,6 +239,7 @@ test "coerce an anon struct literal to optional struct" {
228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
231243
232 const S = struct {244 const S = struct {
233 const Struct = struct {245 const Struct = struct {
...@@ -247,6 +259,7 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -247,6 +259,7 @@ test "0-bit child type coerced to optional return ptr result location" {
247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
250263
251 const S = struct {264 const S = struct {
252 fn doTheTest() !void {265 fn doTheTest() !void {
...@@ -271,6 +284,7 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -271,6 +284,7 @@ test "0-bit child type coerced to optional return ptr result location" {
271284
272test "0-bit child type coerced to optional" {285test "0-bit child type coerced to optional" {
273 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
287 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274288
275 const S = struct {289 const S = struct {
276 fn doTheTest() !void {290 fn doTheTest() !void {
...@@ -298,6 +312,7 @@ test "array of optional unaligned types" {...@@ -298,6 +312,7 @@ test "array of optional unaligned types" {
298 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
299 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301316
302 const Enum = enum { one, two, three };317 const Enum = enum { one, two, three };
303318
...@@ -334,6 +349,7 @@ test "optional pointer to zero bit optional payload" {...@@ -334,6 +349,7 @@ test "optional pointer to zero bit optional payload" {
334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337353
338 const B = struct {354 const B = struct {
339 fn foo(_: *@This()) void {}355 fn foo(_: *@This()) void {}
...@@ -354,6 +370,7 @@ test "optional pointer to zero bit error union payload" {...@@ -354,6 +370,7 @@ test "optional pointer to zero bit error union payload" {
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO370 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO372 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
357374
358 const B = struct {375 const B = struct {
359 fn foo(_: *@This()) void {}376 fn foo(_: *@This()) void {}
...@@ -387,6 +404,7 @@ const NoReturn = struct {...@@ -387,6 +404,7 @@ const NoReturn = struct {
387404
388test "optional of noreturn used with if" {405test "optional of noreturn used with if" {
389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
390408
391 NoReturn.a = 64;409 NoReturn.a = 64;
392 if (NoReturn.loop()) |_| {410 if (NoReturn.loop()) |_| {
...@@ -398,6 +416,7 @@ test "optional of noreturn used with if" {...@@ -398,6 +416,7 @@ test "optional of noreturn used with if" {
398416
399test "optional of noreturn used with orelse" {417test "optional of noreturn used with orelse" {
400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401420
402 NoReturn.a = 64;421 NoReturn.a = 64;
403 const val = NoReturn.testOrelse();422 const val = NoReturn.testOrelse();
...@@ -405,6 +424,8 @@ test "optional of noreturn used with orelse" {...@@ -405,6 +424,8 @@ test "optional of noreturn used with orelse" {
405}424}
406425
407test "orelse on C pointer" {426test "orelse on C pointer" {
427 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
428
408 // TODO https://github.com/ziglang/zig/issues/6597429 // TODO https://github.com/ziglang/zig/issues/6597
409 const foo: [*c]const u8 = "hey";430 const foo: [*c]const u8 = "hey";
410 const d = foo orelse @compileError("bad");431 const d = foo orelse @compileError("bad");
...@@ -415,6 +436,7 @@ test "alignment of wrapping an optional payload" {...@@ -415,6 +436,7 @@ test "alignment of wrapping an optional payload" {
415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;436 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
418440
419 const S = struct {441 const S = struct {
420 const I = extern struct { x: i128 };442 const I = extern struct { x: i128 };
...@@ -431,6 +453,7 @@ test "Optional slice size is optimized" {...@@ -431,6 +453,7 @@ test "Optional slice size is optimized" {
431 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
432 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
434457
435 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));458 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
436 var a: ?[]const u8 = null;459 var a: ?[]const u8 = null;
...@@ -442,6 +465,7 @@ test "Optional slice size is optimized" {...@@ -442,6 +465,7 @@ test "Optional slice size is optimized" {
442test "peer type resolution in nested if expressions" {465test "peer type resolution in nested if expressions" {
443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
468 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
445469
446 const Thing = struct { n: i32 };470 const Thing = struct { n: i32 };
447 var a = false;471 var a = false;
...@@ -467,6 +491,7 @@ test "peer type resolution in nested if expressions" {...@@ -467,6 +491,7 @@ test "peer type resolution in nested if expressions" {
467test "cast slice to const slice nested in error union and optional" {491test "cast slice to const slice nested in error union and optional" {
468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;492 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
494 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
470495
471 const S = struct {496 const S = struct {
472 fn inner() !?[]u8 {497 fn inner() !?[]u8 {
test/behavior/packed-struct.zig+17
...@@ -7,6 +7,7 @@ const native_endian = builtin.cpu.arch.endian();...@@ -7,6 +7,7 @@ const native_endian = builtin.cpu.arch.endian();
77
8test "flags in packed structs" {8test "flags in packed structs" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 const Flags1 = packed struct {12 const Flags1 = packed struct {
12 // first 8 bits13 // first 8 bits
...@@ -93,6 +94,7 @@ test "flags in packed structs" {...@@ -93,6 +94,7 @@ test "flags in packed structs" {
9394
94test "consistent size of packed structs" {95test "consistent size of packed structs" {
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9698
97 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };99 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };
98 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };100 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };
...@@ -123,6 +125,7 @@ test "correct sizeOf and offsets in packed structs" {...@@ -123,6 +125,7 @@ test "correct sizeOf and offsets in packed structs" {
123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO127 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
126129
127 const PStruct = packed struct {130 const PStruct = packed struct {
128 bool_a: bool,131 bool_a: bool,
...@@ -190,6 +193,7 @@ test "nested packed structs" {...@@ -190,6 +193,7 @@ test "nested packed structs" {
190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
193197
194 const S1 = packed struct { a: u8, b: u8, c: u8 };198 const S1 = packed struct { a: u8, b: u8, c: u8 };
195199
...@@ -235,6 +239,7 @@ test "regular in irregular packed struct" {...@@ -235,6 +239,7 @@ test "regular in irregular packed struct" {
235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
238243
239 const Irregular = packed struct {244 const Irregular = packed struct {
240 bar: Regular = Regular{},245 bar: Regular = Regular{},
...@@ -254,6 +259,7 @@ test "byte-aligned field pointer offsets" {...@@ -254,6 +259,7 @@ test "byte-aligned field pointer offsets" {
254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
255 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
256 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
257263
258 const S = struct {264 const S = struct {
259 const A = packed struct {265 const A = packed struct {
...@@ -354,6 +360,7 @@ test "load pointer from packed struct" {...@@ -354,6 +360,7 @@ test "load pointer from packed struct" {
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
357364
358 const A = struct {365 const A = struct {
359 index: u16,366 index: u16,
...@@ -375,6 +382,7 @@ test "@ptrToInt on a packed struct field" {...@@ -375,6 +382,7 @@ test "@ptrToInt on a packed struct field" {
375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378386
379 const S = struct {387 const S = struct {
380 const P = packed struct {388 const P = packed struct {
...@@ -395,6 +403,7 @@ test "optional pointer in packed struct" {...@@ -395,6 +403,7 @@ test "optional pointer in packed struct" {
395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
406 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398407
399 const T = packed struct { ptr: ?*const u8 };408 const T = packed struct { ptr: ?*const u8 };
400 var n: u8 = 0;409 var n: u8 = 0;
...@@ -409,6 +418,7 @@ test "nested packed struct field access test" {...@@ -409,6 +418,7 @@ test "nested packed struct field access test" {
409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
412 //422 //
413 const Vec2 = packed struct {423 const Vec2 = packed struct {
414 x: f32,424 x: f32,
...@@ -525,6 +535,7 @@ test "runtime init of unnamed packed struct type" {...@@ -525,6 +535,7 @@ test "runtime init of unnamed packed struct type" {
525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
528539
529 var z: u8 = 123;540 var z: u8 = 123;
530 try (packed struct {541 try (packed struct {
...@@ -539,6 +550,7 @@ test "packed struct passed to callconv(.C) function" {...@@ -539,6 +550,7 @@ test "packed struct passed to callconv(.C) function" {
539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;550 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;551 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
542554
543 const S = struct {555 const S = struct {
544 const Packed = packed struct {556 const Packed = packed struct {
...@@ -564,6 +576,8 @@ test "overaligned pointer to packed struct" {...@@ -564,6 +576,8 @@ test "overaligned pointer to packed struct" {
564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
566 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580
567 const S = packed struct { a: u32, b: u32 };581 const S = packed struct { a: u32, b: u32 };
568 var foo: S align(4) = .{ .a = 123, .b = 456 };582 var foo: S align(4) = .{ .a = 123, .b = 456 };
569 const ptr: *align(4) S = &foo;583 const ptr: *align(4) S = &foo;
...@@ -584,6 +598,7 @@ test "packed struct initialized in bitcast" {...@@ -584,6 +598,7 @@ test "packed struct initialized in bitcast" {
584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO598 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
585 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO599 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO600 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
587602
588 const T = packed struct { val: u8 };603 const T = packed struct { val: u8 };
589 var val: u8 = 123;604 var val: u8 = 123;
...@@ -597,6 +612,7 @@ test "pointer to container level packed struct field" {...@@ -597,6 +612,7 @@ test "pointer to container level packed struct field" {
597 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;612 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
598 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;613 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
599 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO614 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
615 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
600616
601 const S = packed struct(u32) {617 const S = packed struct(u32) {
602 test_bit: bool,618 test_bit: bool,
...@@ -621,6 +637,7 @@ test "store undefined to packed result location" {...@@ -621,6 +637,7 @@ test "store undefined to packed result location" {
621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;637 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;638 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
623 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;639 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
640 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
624 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
625642
626 var x: u4 = 0;643 var x: u4 = 0;
test/behavior/packed_struct_explicit_backing_int.zig+1
...@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {...@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 const S1 = packed struct { a: u8, b: u8, c: u8 };14 const S1 = packed struct { a: u8, b: u8, c: u8 };
1415
test/behavior/pointers.zig+23
...@@ -5,6 +5,7 @@ const expect = testing.expect;...@@ -5,6 +5,7 @@ const expect = testing.expect;
5const expectError = testing.expectError;5const expectError = testing.expectError;
66
7test "dereference pointer" {7test "dereference pointer" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8 comptime try testDerefPtr();9 comptime try testDerefPtr();
9 try testDerefPtr();10 try testDerefPtr();
10}11}
...@@ -19,6 +20,7 @@ fn testDerefPtr() !void {...@@ -19,6 +20,7 @@ fn testDerefPtr() !void {
19test "pointer arithmetic" {20test "pointer arithmetic" {
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2224
23 var ptr: [*]const u8 = "abcd";25 var ptr: [*]const u8 = "abcd";
2426
...@@ -51,6 +53,7 @@ fn PtrOf(comptime T: type) type {...@@ -51,6 +53,7 @@ fn PtrOf(comptime T: type) type {
5153
52test "implicit cast single item pointer to C pointer and back" {54test "implicit cast single item pointer to C pointer and back" {
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5457
55 var y: u8 = 11;58 var y: u8 = 11;
56 var x: [*c]u8 = &y;59 var x: [*c]u8 = &y;
...@@ -67,6 +70,7 @@ test "initialize const optional C pointer to null" {...@@ -67,6 +70,7 @@ test "initialize const optional C pointer to null" {
6770
68test "assigning integer to C pointer" {71test "assigning integer to C pointer" {
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7074
71 var x: i32 = 0;75 var x: i32 = 0;
72 var y: i32 = 1;76 var y: i32 = 1;
...@@ -83,6 +87,7 @@ test "assigning integer to C pointer" {...@@ -83,6 +87,7 @@ test "assigning integer to C pointer" {
8387
84test "C pointer comparison and arithmetic" {88test "C pointer comparison and arithmetic" {
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO89 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
90 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8691
87 const S = struct {92 const S = struct {
88 fn doTheTest() !void {93 fn doTheTest() !void {
...@@ -125,6 +130,7 @@ fn testDerefPtrOneVal() !void {...@@ -125,6 +130,7 @@ fn testDerefPtrOneVal() !void {
125}130}
126131
127test "peer type resolution with C pointers" {132test "peer type resolution with C pointers" {
133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
128 var ptr_one: *u8 = undefined;134 var ptr_one: *u8 = undefined;
129 var ptr_many: [*]u8 = undefined;135 var ptr_many: [*]u8 = undefined;
130 var ptr_c: [*c]u8 = undefined;136 var ptr_c: [*c]u8 = undefined;
...@@ -140,6 +146,7 @@ test "peer type resolution with C pointers" {...@@ -140,6 +146,7 @@ test "peer type resolution with C pointers" {
140}146}
141147
142test "peer type resolution with C pointer and const pointer" {148test "peer type resolution with C pointer and const pointer" {
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143 var ptr_c: [*c]u8 = undefined;150 var ptr_c: [*c]u8 = undefined;
144 const ptr_const: u8 = undefined;151 const ptr_const: u8 = undefined;
145 try expect(@TypeOf(ptr_c, &ptr_const) == [*c]const u8);152 try expect(@TypeOf(ptr_c, &ptr_const) == [*c]const u8);
...@@ -149,6 +156,7 @@ test "implicit casting between C pointer and optional non-C pointer" {...@@ -149,6 +156,7 @@ test "implicit casting between C pointer and optional non-C pointer" {
149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
152160
153 var slice: []const u8 = "aoeu";161 var slice: []const u8 = "aoeu";
154 const opt_many_ptr: ?[*]const u8 = slice.ptr;162 const opt_many_ptr: ?[*]const u8 = slice.ptr;
...@@ -163,6 +171,7 @@ test "implicit cast error unions with non-optional to optional pointer" {...@@ -163,6 +171,7 @@ test "implicit cast error unions with non-optional to optional pointer" {
163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
166175
167 const S = struct {176 const S = struct {
168 fn doTheTest() !void {177 fn doTheTest() !void {
...@@ -191,6 +200,7 @@ test "allowzero pointer and slice" {...@@ -191,6 +200,7 @@ test "allowzero pointer and slice" {
191 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194204
195 var ptr = @intToPtr([*]allowzero i32, 0);205 var ptr = @intToPtr([*]allowzero i32, 0);
196 var opt_ptr: ?[*]allowzero i32 = ptr;206 var opt_ptr: ?[*]allowzero i32 = ptr;
...@@ -209,6 +219,7 @@ test "assign null directly to C pointer and test null equality" {...@@ -209,6 +219,7 @@ test "assign null directly to C pointer and test null equality" {
209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212223
213 var x: [*c]i32 = null;224 var x: [*c]i32 = null;
214 try expect(x == null);225 try expect(x == null);
...@@ -275,6 +286,7 @@ test "array initialization types" {...@@ -275,6 +286,7 @@ test "array initialization types" {
275test "null terminated pointer" {286test "null terminated pointer" {
276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;287 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
278290
279 const S = struct {291 const S = struct {
280 fn doTheTest() !void {292 fn doTheTest() !void {
...@@ -292,6 +304,7 @@ test "null terminated pointer" {...@@ -292,6 +304,7 @@ test "null terminated pointer" {
292test "allow any sentinel" {304test "allow any sentinel" {
293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;305 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
295308
296 const S = struct {309 const S = struct {
297 fn doTheTest() !void {310 fn doTheTest() !void {
...@@ -307,6 +320,7 @@ test "allow any sentinel" {...@@ -307,6 +320,7 @@ test "allow any sentinel" {
307test "pointer sentinel with enums" {320test "pointer sentinel with enums" {
308 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
310324
311 const S = struct {325 const S = struct {
312 const Number = enum {326 const Number = enum {
...@@ -328,6 +342,7 @@ test "pointer sentinel with optional element" {...@@ -328,6 +342,7 @@ test "pointer sentinel with optional element" {
328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
330 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
331346
332 const S = struct {347 const S = struct {
333 fn doTheTest() !void {348 fn doTheTest() !void {
...@@ -344,6 +359,7 @@ test "pointer sentinel with +inf" {...@@ -344,6 +359,7 @@ test "pointer sentinel with +inf" {
344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO360 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
347363
348 const S = struct {364 const S = struct {
349 fn doTheTest() !void {365 fn doTheTest() !void {
...@@ -364,6 +380,7 @@ test "pointer to array at fixed address" {...@@ -364,6 +380,7 @@ test "pointer to array at fixed address" {
364}380}
365381
366test "pointer arithmetic affects the alignment" {382test "pointer arithmetic affects the alignment" {
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
367 {384 {
368 var ptr: [*]align(8) u32 = undefined;385 var ptr: [*]align(8) u32 = undefined;
369 var x: usize = 1;386 var x: usize = 1;
...@@ -410,6 +427,7 @@ test "indexing array with sentinel returns correct type" {...@@ -410,6 +427,7 @@ test "indexing array with sentinel returns correct type" {
410 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
430 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
413431
414 var s: [:0]const u8 = "abc";432 var s: [:0]const u8 = "abc";
415 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));433 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
...@@ -418,6 +436,7 @@ test "indexing array with sentinel returns correct type" {...@@ -418,6 +436,7 @@ test "indexing array with sentinel returns correct type" {
418test "element pointer to slice" {436test "element pointer to slice" {
419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
421440
422 const S = struct {441 const S = struct {
423 fn doTheTest() !void {442 fn doTheTest() !void {
...@@ -440,6 +459,7 @@ test "element pointer to slice" {...@@ -440,6 +459,7 @@ test "element pointer to slice" {
440test "element pointer arithmetic to slice" {459test "element pointer arithmetic to slice" {
441 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
462 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443463
444 const S = struct {464 const S = struct {
445 fn doTheTest() !void {465 fn doTheTest() !void {
...@@ -464,6 +484,7 @@ test "element pointer arithmetic to slice" {...@@ -464,6 +484,7 @@ test "element pointer arithmetic to slice" {
464484
465test "array slicing to slice" {485test "array slicing to slice" {
466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
487 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
467488
468 const S = struct {489 const S = struct {
469 fn doTheTest() !void {490 fn doTheTest() !void {
...@@ -494,6 +515,7 @@ test "ptrCast comptime known slice to C pointer" {...@@ -494,6 +515,7 @@ test "ptrCast comptime known slice to C pointer" {
494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO516 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
497519
498 const s: [:0]const u8 = "foo";520 const s: [:0]const u8 = "foo";
499 var p = @ptrCast([*c]const u8, s);521 var p = @ptrCast([*c]const u8, s);
...@@ -504,6 +526,7 @@ test "ptrToInt on a generic function" {...@@ -504,6 +526,7 @@ test "ptrToInt on a generic function" {
504 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO526 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
507530
508 const S = struct {531 const S = struct {
509 fn generic(i: anytype) @TypeOf(i) {532 fn generic(i: anytype) @TypeOf(i) {
test/behavior/popcount.zig+3
...@@ -7,6 +7,7 @@ test "@popCount integers" {...@@ -7,6 +7,7 @@ test "@popCount integers" {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 comptime try testPopCountIntegers();12 comptime try testPopCountIntegers();
12 try testPopCountIntegers();13 try testPopCountIntegers();
...@@ -17,6 +18,7 @@ test "@popCount 128bit integer" {...@@ -17,6 +18,7 @@ test "@popCount 128bit integer" {
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2022
21 comptime {23 comptime {
22 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);24 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);
...@@ -71,6 +73,7 @@ test "@popCount vectors" {...@@ -71,6 +73,7 @@ test "@popCount vectors" {
71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7477
75 comptime try testPopCountVectors();78 comptime try testPopCountVectors();
76 try testPopCountVectors();79 try testPopCountVectors();
test/behavior/prefetch.zig+3
...@@ -1,6 +1,9 @@...@@ -1,6 +1,9 @@
1const builtin = @import("builtin");
1const std = @import("std");2const std = @import("std");
23
3test "@prefetch()" {4test "@prefetch()" {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
4 var a: u32 = 42;7 var a: u32 = 42;
58
6 @prefetch(&a, .{});9 @prefetch(&a, .{});
test/behavior/ptrcast.zig+6
...@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"...@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2627
27 try testReinterpretWithOffsetAndNoWellDefinedLayout();28 try testReinterpretWithOffsetAndNoWellDefinedLayout();
28 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();29 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();
...@@ -130,6 +131,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {...@@ -130,6 +131,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {
130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
131 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO132 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
133135
134 // Test lowering a field ptr136 // Test lowering a field ptr
135 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };137 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };
...@@ -153,6 +155,7 @@ test "lower reinterpreted comptime field ptr" {...@@ -153,6 +155,7 @@ test "lower reinterpreted comptime field ptr" {
153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156159
157 // Test lowering a field ptr160 // Test lowering a field ptr
158 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };161 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
...@@ -174,6 +177,7 @@ test "lower reinterpreted comptime field ptr" {...@@ -174,6 +177,7 @@ test "lower reinterpreted comptime field ptr" {
174test "reinterpret struct field at comptime" {177test "reinterpret struct field at comptime" {
175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
180 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
177181
178 const numNative = comptime Bytes.init(0x12345678);182 const numNative = comptime Bytes.init(0x12345678);
179 if (native_endian != .Little) {183 if (native_endian != .Little) {
...@@ -241,6 +245,7 @@ test "implicit optional pointer to optional anyopaque pointer" {...@@ -241,6 +245,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
244249
245 var buf: [4]u8 = "aoeu".*;250 var buf: [4]u8 = "aoeu".*;
246 var x: ?[*]u8 = &buf;251 var x: ?[*]u8 = &buf;
...@@ -253,6 +258,7 @@ test "@ptrCast slice to slice" {...@@ -253,6 +258,7 @@ test "@ptrCast slice to slice" {
253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
256262
257 const S = struct {263 const S = struct {
258 fn foo(slice: []u32) []i32 {264 fn foo(slice: []u32) []i32 {
test/behavior/pub_enum.zig+3
...@@ -1,7 +1,10 @@...@@ -1,7 +1,10 @@
1const builtin = @import("builtin");
1const other = @import("pub_enum/other.zig");2const other = @import("pub_enum/other.zig");
2const expect = @import("std").testing.expect;3const expect = @import("std").testing.expect;
34
4test "pub enum" {5test "pub enum" {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
5 try pubEnumTest(other.APubEnum.Two);8 try pubEnumTest(other.APubEnum.Two);
6}9}
7fn pubEnumTest(foo: other.APubEnum) !void {10fn pubEnumTest(foo: other.APubEnum) !void {
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" {...@@ -8,6 +8,7 @@ test "reference a variable in an if after an if in the 2nd switch prong" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 try foo(true, Num.Two, false, "aoeu");13 try foo(true, Num.Two, false, "aoeu");
13 try expect(!ok);14 try expect(!ok);
test/behavior/reflection.zig+1
...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
28test "reflection: @field" {28test "reflection: @field" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3132
32 var f = Foo{33 var f = Foo{
33 .one = 42,34 .one = 42,
test/behavior/return_address.zig+2
...@@ -10,6 +10,8 @@ test "return address" {...@@ -10,6 +10,8 @@ test "return address" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
13 _ = retAddr();15 _ = retAddr();
14 // TODO: #1493816 // TODO: #14938
15 try testing.expectEqual(0, comptime retAddr());17 try testing.expectEqual(0, comptime retAddr());
test/behavior/saturating_arithmetic.zig+7
...@@ -9,6 +9,7 @@ test "saturating add" {...@@ -9,6 +9,7 @@ test "saturating add" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 const S = struct {14 const S = struct {
14 fn doTheTest() !void {15 fn doTheTest() !void {
...@@ -56,6 +57,7 @@ test "saturating add 128bit" {...@@ -56,6 +57,7 @@ test "saturating add 128bit" {
56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
60 const S = struct {62 const S = struct {
61 fn doTheTest() !void {63 fn doTheTest() !void {
...@@ -81,6 +83,7 @@ test "saturating subtraction" {...@@ -81,6 +83,7 @@ test "saturating subtraction" {
81 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8487
85 const S = struct {88 const S = struct {
86 fn doTheTest() !void {89 fn doTheTest() !void {
...@@ -127,6 +130,7 @@ test "saturating subtraction 128bit" {...@@ -127,6 +130,7 @@ test "saturating subtraction 128bit" {
127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
130134
131 const S = struct {135 const S = struct {
132 fn doTheTest() !void {136 fn doTheTest() !void {
...@@ -154,6 +158,7 @@ test "saturating multiplication" {...@@ -154,6 +158,7 @@ test "saturating multiplication" {
154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157162
158 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {163 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
159 // https://github.com/ziglang/zig/issues/9660164 // https://github.com/ziglang/zig/issues/9660
...@@ -198,6 +203,7 @@ test "saturating shift-left" {...@@ -198,6 +203,7 @@ test "saturating shift-left" {
198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
201207
202 const S = struct {208 const S = struct {
203 fn doTheTest() !void {209 fn doTheTest() !void {
...@@ -237,6 +243,7 @@ test "saturating shl uses the LHS type" {...@@ -237,6 +243,7 @@ test "saturating shl uses the LHS type" {
237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO245 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
246 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
240247
241 const lhs_const: u8 = 1;248 const lhs_const: u8 = 1;
242 var lhs_var: u8 = 1;249 var lhs_var: u8 = 1;
test/behavior/select.zig+2
...@@ -9,6 +9,7 @@ test "@select vectors" {...@@ -9,6 +9,7 @@ test "@select vectors" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 comptime try selectVectors();14 comptime try selectVectors();
14 try selectVectors();15 try selectVectors();
...@@ -37,6 +38,7 @@ test "@select arrays" {...@@ -37,6 +38,7 @@ test "@select arrays" {
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4042
41 comptime try selectArrays();43 comptime try selectArrays();
42 try selectArrays();44 try selectArrays();
test/behavior/shuffle.zig+3
...@@ -8,6 +8,7 @@ test "@shuffle int" {...@@ -8,6 +8,7 @@ test "@shuffle int" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 const S = struct {13 const S = struct {
13 fn doTheTest() !void {14 fn doTheTest() !void {
...@@ -49,6 +50,7 @@ test "@shuffle bool 1" {...@@ -49,6 +50,7 @@ test "@shuffle bool 1" {
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5254
53 const S = struct {55 const S = struct {
54 fn doTheTest() !void {56 fn doTheTest() !void {
...@@ -69,6 +71,7 @@ test "@shuffle bool 2" {...@@ -69,6 +71,7 @@ test "@shuffle bool 2" {
69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7275
73 if (builtin.zig_backend == .stage2_llvm) {76 if (builtin.zig_backend == .stage2_llvm) {
74 // https://github.com/ziglang/zig/issues/324677 // https://github.com/ziglang/zig/issues/3246
test/behavior/sizeof_and_typeof.zig+8
...@@ -18,6 +18,8 @@ test "@sizeOf on compile-time types" {...@@ -18,6 +18,8 @@ test "@sizeOf on compile-time types" {
18}18}
1919
20test "@TypeOf() with multiple arguments" {20test "@TypeOf() with multiple arguments" {
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22
21 {23 {
22 var var_1: u32 = undefined;24 var var_1: u32 = undefined;
23 var var_2: u8 = undefined;25 var var_2: u8 = undefined;
...@@ -75,6 +77,7 @@ const P = packed struct {...@@ -75,6 +77,7 @@ const P = packed struct {
7577
76test "@offsetOf" {78test "@offsetOf" {
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7881
79 // Packed structs have fixed memory layout82 // Packed structs have fixed memory layout
80 try expect(@offsetOf(P, "a") == 0);83 try expect(@offsetOf(P, "a") == 0);
...@@ -137,6 +140,8 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {...@@ -137,6 +140,8 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {
137}140}
138141
139test "@TypeOf() has no runtime side effects" {142test "@TypeOf() has no runtime side effects" {
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
144
140 const S = struct {145 const S = struct {
141 fn foo(comptime T: type, ptr: *T) T {146 fn foo(comptime T: type, ptr: *T) T {
142 ptr.* += 1;147 ptr.* += 1;
...@@ -151,6 +156,8 @@ test "@TypeOf() has no runtime side effects" {...@@ -151,6 +156,8 @@ test "@TypeOf() has no runtime side effects" {
151156
152test "branching logic inside @TypeOf" {157test "branching logic inside @TypeOf" {
153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160
154 const S = struct {161 const S = struct {
155 var data: i32 = 0;162 var data: i32 = 0;
156 fn foo() anyerror!i32 {163 fn foo() anyerror!i32 {
...@@ -264,6 +271,7 @@ test "runtime instructions inside typeof in comptime only scope" {...@@ -264,6 +271,7 @@ test "runtime instructions inside typeof in comptime only scope" {
264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO273 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
274 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267275
268 {276 {
269 var y: i8 = 2;277 var y: i8 = 2;
test/behavior/slice.zig+32-1
...@@ -29,6 +29,7 @@ comptime {...@@ -29,6 +29,7 @@ comptime {
2929
30test "slicing" {30test "slicing" {
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3233
33 var array: [20]i32 = undefined;34 var array: [20]i32 = undefined;
3435
...@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {...@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {
6465
65test "implicitly cast array of size 0 to slice" {66test "implicitly cast array of size 0 to slice" {
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
68 var msg = [_]u8{};70 var msg = [_]u8{};
69 try assertLenIsZero(&msg);71 try assertLenIsZero(&msg);
...@@ -120,6 +122,7 @@ test "slice of type" {...@@ -120,6 +122,7 @@ test "slice of type" {
120122
121test "generic malloc free" {123test "generic malloc free" {
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
123126
124 const a = memAlloc(u8, 10) catch unreachable;127 const a = memAlloc(u8, 10) catch unreachable;
125 memFree(u8, a);128 memFree(u8, a);
...@@ -171,6 +174,7 @@ test "comptime pointer cast array and then slice" {...@@ -171,6 +174,7 @@ test "comptime pointer cast array and then slice" {
171test "slicing zero length array" {174test "slicing zero length array" {
172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
174178
175 const s1 = ""[0..];179 const s1 = ""[0..];
176 const s2 = ([_]u32{})[0..];180 const s2 = ([_]u32{})[0..];
...@@ -195,6 +199,8 @@ test "slicing pointer by length" {...@@ -195,6 +199,8 @@ test "slicing pointer by length" {
195const x = @intToPtr([*]i32, 0x1000)[0..0x500];199const x = @intToPtr([*]i32, 0x1000)[0..0x500];
196const y = x[0x100..];200const y = x[0x100..];
197test "compile time slice of pointer to hard coded address" {201test "compile time slice of pointer to hard coded address" {
202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
203
198 try expect(@ptrToInt(x) == 0x1000);204 try expect(@ptrToInt(x) == 0x1000);
199 try expect(x.len == 0x500);205 try expect(x.len == 0x500);
200206
...@@ -216,6 +222,7 @@ test "slice string literal has correct type" {...@@ -216,6 +222,7 @@ test "slice string literal has correct type" {
216222
217test "result location zero sized array inside struct field implicit cast to slice" {223test "result location zero sized array inside struct field implicit cast to slice" {
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219226
220 const E = struct {227 const E = struct {
221 entries: []u32,228 entries: []u32,
...@@ -228,6 +235,7 @@ test "runtime safety lets us slice from len..len" {...@@ -228,6 +235,7 @@ test "runtime safety lets us slice from len..len" {
228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
231239
232 var an_array = [_]u8{ 1, 2, 3 };240 var an_array = [_]u8{ 1, 2, 3 };
233 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));241 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
...@@ -238,8 +246,9 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {...@@ -238,8 +246,9 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
238}246}
239247
240test "C pointer" {248test "C pointer" {
241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
251 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
243252
244 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";253 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
245 var len: u32 = 10;254 var len: u32 = 10;
...@@ -251,6 +260,7 @@ test "C pointer slice access" {...@@ -251,6 +260,7 @@ test "C pointer slice access" {
251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
263 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
254264
255 var buf: [10]u32 = [1]u32{42} ** 10;265 var buf: [10]u32 = [1]u32{42} ** 10;
256 const c_ptr = @ptrCast([*c]const u32, &buf);266 const c_ptr = @ptrCast([*c]const u32, &buf);
...@@ -280,6 +290,7 @@ fn sliceSum(comptime q: []const u8) i32 {...@@ -280,6 +290,7 @@ fn sliceSum(comptime q: []const u8) i32 {
280test "slice type with custom alignment" {290test "slice type with custom alignment" {
281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
283294
284 const LazilyResolvedType = struct {295 const LazilyResolvedType = struct {
285 anything: i32,296 anything: i32,
...@@ -293,6 +304,7 @@ test "slice type with custom alignment" {...@@ -293,6 +304,7 @@ test "slice type with custom alignment" {
293304
294test "obtaining a null terminated slice" {305test "obtaining a null terminated slice" {
295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
296308
297 // here we have a normal array309 // here we have a normal array
298 var buf: [50]u8 = undefined;310 var buf: [50]u8 = undefined;
...@@ -335,6 +347,7 @@ test "empty array to slice" {...@@ -335,6 +347,7 @@ test "empty array to slice" {
335test "@ptrCast slice to pointer" {347test "@ptrCast slice to pointer" {
336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
338351
339 const S = struct {352 const S = struct {
340 fn doTheTest() !void {353 fn doTheTest() !void {
...@@ -353,6 +366,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -353,6 +366,7 @@ test "slice syntax resulting in pointer-to-array" {
353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356370
357 const S = struct {371 const S = struct {
358 fn doTheTest() !void {372 fn doTheTest() !void {
...@@ -551,6 +565,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -551,6 +565,7 @@ test "slice syntax resulting in pointer-to-array" {
551test "slice pointer-to-array null terminated" {565test "slice pointer-to-array null terminated" {
552 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
553 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
554569
555 comptime {570 comptime {
556 var array = [5:0]u8{ 1, 2, 3, 4, 5 };571 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
...@@ -569,6 +584,7 @@ test "slice pointer-to-array null terminated" {...@@ -569,6 +584,7 @@ test "slice pointer-to-array null terminated" {
569584
570test "slice pointer-to-array zero length" {585test "slice pointer-to-array zero length" {
571 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
572588
573 comptime {589 comptime {
574 {590 {
...@@ -603,6 +619,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {...@@ -603,6 +619,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO619 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
604 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO620 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
605 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO621 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
622 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
606623
607 const S = struct {624 const S = struct {
608 const U = union {625 const U = union {
...@@ -655,6 +672,7 @@ test "array mult of slice gives ptr to array" {...@@ -655,6 +672,7 @@ test "array mult of slice gives ptr to array" {
655672
656test "slice bounds in comptime concatenation" {673test "slice bounds in comptime concatenation" {
657 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO674 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
658676
659 const bs = comptime blk: {677 const bs = comptime blk: {
660 const b = "........1........";678 const b = "........1........";
...@@ -690,6 +708,7 @@ test "slice sentinel access at comptime" {...@@ -690,6 +708,7 @@ test "slice sentinel access at comptime" {
690test "slicing array with sentinel as end index" {708test "slicing array with sentinel as end index" {
691 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;709 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
692 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
711 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
693712
694 const S = struct {713 const S = struct {
695 fn do() !void {714 fn do() !void {
...@@ -708,6 +727,7 @@ test "slicing array with sentinel as end index" {...@@ -708,6 +727,7 @@ test "slicing array with sentinel as end index" {
708test "slicing slice with sentinel as end index" {727test "slicing slice with sentinel as end index" {
709 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO729 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
730 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
711731
712 const S = struct {732 const S = struct {
713 fn do() !void {733 fn do() !void {
...@@ -736,6 +756,8 @@ test "slice len modification at comptime" {...@@ -736,6 +756,8 @@ test "slice len modification at comptime" {
736}756}
737757
738test "slice field ptr const" {758test "slice field ptr const" {
759 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
760
739 const const_slice: []const u8 = "string";761 const const_slice: []const u8 = "string";
740762
741 const const_ptr_const_slice = &const_slice;763 const const_ptr_const_slice = &const_slice;
...@@ -749,6 +771,7 @@ test "slice field ptr const" {...@@ -749,6 +771,7 @@ test "slice field ptr const" {
749771
750test "slice field ptr var" {772test "slice field ptr var" {
751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO773 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
752775
753 var var_slice: []const u8 = "string";776 var var_slice: []const u8 = "string";
754777
...@@ -765,6 +788,7 @@ test "global slice field access" {...@@ -765,6 +788,7 @@ test "global slice field access" {
765 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO788 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
768792
769 const S = struct {793 const S = struct {
770 var slice: []const u8 = undefined;794 var slice: []const u8 = undefined;
...@@ -776,6 +800,8 @@ test "global slice field access" {...@@ -776,6 +800,8 @@ test "global slice field access" {
776}800}
777801
778test "slice of void" {802test "slice of void" {
803 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
804
779 var n: usize = 10;805 var n: usize = 10;
780 var arr: [12]void = undefined;806 var arr: [12]void = undefined;
781 const slice = @as([]void, &arr)[0..n];807 const slice = @as([]void, &arr)[0..n];
...@@ -783,6 +809,8 @@ test "slice of void" {...@@ -783,6 +809,8 @@ test "slice of void" {
783}809}
784810
785test "slice with dereferenced value" {811test "slice with dereferenced value" {
812 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
813
786 var a: usize = 0;814 var a: usize = 0;
787 var idx: *usize = &a;815 var idx: *usize = &a;
788 _ = blk: {816 _ = blk: {
...@@ -798,6 +826,7 @@ test "slice with dereferenced value" {...@@ -798,6 +826,7 @@ test "slice with dereferenced value" {
798826
799test "empty slice ptr is non null" {827test "empty slice ptr is non null" {
800 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest; // TODO
829 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
801830
802 {831 {
803 const empty_slice: []u8 = &[_]u8{};832 const empty_slice: []u8 = &[_]u8{};
...@@ -816,6 +845,7 @@ test "empty slice ptr is non null" {...@@ -816,6 +845,7 @@ test "empty slice ptr is non null" {
816test "slice decays to many pointer" {845test "slice decays to many pointer" {
817 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;846 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;847 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
848 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
819849
820 var buf: [8]u8 = "abcdefg\x00".*;850 var buf: [8]u8 = "abcdefg\x00".*;
821 const p: [*:0]const u8 = buf[0..7 :0];851 const p: [*:0]const u8 = buf[0..7 :0];
...@@ -826,6 +856,7 @@ test "write through pointer to optional slice arg" {...@@ -826,6 +856,7 @@ test "write through pointer to optional slice arg" {
826 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;856 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;858 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
859 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
829860
830 const S = struct {861 const S = struct {
831 fn bar(foo: *?[]const u8) !void {862 fn bar(foo: *?[]const u8) !void {
test/behavior/src.zig+3
...@@ -17,6 +17,7 @@ test "@src" {...@@ -17,6 +17,7 @@ test "@src" {
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
21 try doTheTest();22 try doTheTest();
22}23}
...@@ -33,6 +34,8 @@ test "@src used as a comptime parameter" {...@@ -33,6 +34,8 @@ test "@src used as a comptime parameter" {
33}34}
3435
35test "@src in tuple passed to anytype function" {36test "@src in tuple passed to anytype function" {
37 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
38
36 const S = struct {39 const S = struct {
37 fn Foo(a: anytype) u32 {40 fn Foo(a: anytype) u32 {
38 return a[0].line;41 return a[0].line;
test/behavior/struct.zig+53
...@@ -11,6 +11,7 @@ top_level_field: i32,...@@ -11,6 +11,7 @@ top_level_field: i32,
11test "top level fields" {11test "top level fields" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 var instance = @This(){16 var instance = @This(){
16 .top_level_field = 1234,17 .top_level_field = 1234,
...@@ -89,6 +90,7 @@ test "structs" {...@@ -89,6 +90,7 @@ test "structs" {
89 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;90 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
91 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9294
93 var foo: StructFoo = undefined;95 var foo: StructFoo = undefined;
94 @memset(@ptrCast([*]u8, &foo)[0..@sizeOf(StructFoo)], 0);96 @memset(@ptrCast([*]u8, &foo)[0..@sizeOf(StructFoo)], 0);
...@@ -107,6 +109,7 @@ fn testMutation(foo: *StructFoo) void {...@@ -107,6 +109,7 @@ fn testMutation(foo: *StructFoo) void {
107109
108test "struct byval assign" {110test "struct byval assign" {
109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
110113
111 var foo1: StructFoo = undefined;114 var foo1: StructFoo = undefined;
112 var foo2: StructFoo = undefined;115 var foo2: StructFoo = undefined;
...@@ -119,6 +122,8 @@ test "struct byval assign" {...@@ -119,6 +122,8 @@ test "struct byval assign" {
119}122}
120123
121test "call struct static method" {124test "call struct static method" {
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
126
122 const result = StructWithNoFields.add(3, 4);127 const result = StructWithNoFields.add(3, 4);
123 try expect(result == 7);128 try expect(result == 7);
124}129}
...@@ -126,6 +131,8 @@ test "call struct static method" {...@@ -126,6 +131,8 @@ test "call struct static method" {
126const should_be_11 = StructWithNoFields.add(5, 6);131const should_be_11 = StructWithNoFields.add(5, 6);
127132
128test "invoke static method in global scope" {133test "invoke static method in global scope" {
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135
129 try expect(should_be_11 == 11);136 try expect(should_be_11 == 11);
130}137}
131138
...@@ -248,6 +255,7 @@ test "usingnamespace within struct scope" {...@@ -248,6 +255,7 @@ test "usingnamespace within struct scope" {
248test "struct field init with catch" {255test "struct field init with catch" {
249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;256 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO257 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
251259
252 const S = struct {260 const S = struct {
253 fn doTheTest() !void {261 fn doTheTest() !void {
...@@ -274,6 +282,7 @@ const blah: packed struct {...@@ -274,6 +282,7 @@ const blah: packed struct {
274282
275test "bit field alignment" {283test "bit field alignment" {
276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285
277 try expect(@TypeOf(&blah.b) == *align(1:3:1) const u3);286 try expect(@TypeOf(&blah.b) == *align(1:3:1) const u3);
278}287}
279288
...@@ -289,6 +298,7 @@ const Val = struct {...@@ -289,6 +298,7 @@ const Val = struct {
289test "struct point to self" {298test "struct point to self" {
290 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;299 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
301 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
292302
293 var root: Node = undefined;303 var root: Node = undefined;
294 root.val.x = 1;304 root.val.x = 1;
...@@ -305,6 +315,7 @@ test "struct point to self" {...@@ -305,6 +315,7 @@ test "struct point to self" {
305test "void struct fields" {315test "void struct fields" {
306 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
307 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
308319
309 const foo = VoidStructFieldsFoo{320 const foo = VoidStructFieldsFoo{
310 .a = void{},321 .a = void{},
...@@ -332,6 +343,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {...@@ -332,6 +343,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
332343
333test "pass slice of empty struct to fn" {344test "pass slice of empty struct to fn" {
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
335347
336 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);348 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
337}349}
...@@ -343,6 +355,7 @@ test "self-referencing struct via array member" {...@@ -343,6 +355,7 @@ test "self-referencing struct via array member" {
343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO357 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
346359
347 const T = struct {360 const T = struct {
348 children: [1]*@This(),361 children: [1]*@This(),
...@@ -353,6 +366,8 @@ test "self-referencing struct via array member" {...@@ -353,6 +366,8 @@ test "self-referencing struct via array member" {
353}366}
354367
355test "empty struct method call" {368test "empty struct method call" {
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
370
356 const es = EmptyStruct{};371 const es = EmptyStruct{};
357 try expect(es.method() == 1234);372 try expect(es.method() == 1234);
358}373}
...@@ -365,6 +380,7 @@ const EmptyStruct = struct {...@@ -365,6 +380,7 @@ const EmptyStruct = struct {
365380
366test "align 1 field before self referential align 8 field as slice return type" {381test "align 1 field before self referential align 8 field as slice return type" {
367 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
368384
369 const result = alloc(Expr);385 const result = alloc(Expr);
370 try expect(result.len == 0);386 try expect(result.len == 0);
...@@ -388,6 +404,7 @@ test "packed struct" {...@@ -388,6 +404,7 @@ test "packed struct" {
388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
391408
392 var foo = APackedStruct{409 var foo = APackedStruct{
393 .x = 1,410 .x = 1,
...@@ -416,6 +433,7 @@ test "packed struct 24bits" {...@@ -416,6 +433,7 @@ test "packed struct 24bits" {
416 if (builtin.cpu.arch == .wasm32) return error.SkipZigTest; // TODO433 if (builtin.cpu.arch == .wasm32) return error.SkipZigTest; // TODO
417 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO434 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO
418 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO435 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
419437
420 comptime {438 comptime {
421 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));439 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
...@@ -457,6 +475,7 @@ test "runtime struct initialization of bitfield" {...@@ -457,6 +475,7 @@ test "runtime struct initialization of bitfield" {
457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;475 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
478 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
460479
461 const s1 = Nibbles{480 const s1 = Nibbles{
462 .x = x1,481 .x = x1,
...@@ -495,6 +514,7 @@ test "packed struct fields are ordered from LSB to MSB" {...@@ -495,6 +514,7 @@ test "packed struct fields are ordered from LSB to MSB" {
495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO514 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
498518
499 var all: u64 = 0x7765443322221111;519 var all: u64 = 0x7765443322221111;
500 var bytes: [8]u8 align(@alignOf(Bitfields)) = undefined;520 var bytes: [8]u8 align(@alignOf(Bitfields)) = undefined;
...@@ -515,6 +535,7 @@ test "implicit cast packed struct field to const ptr" {...@@ -515,6 +535,7 @@ test "implicit cast packed struct field to const ptr" {
515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
518539
519 const LevelUpMove = packed struct {540 const LevelUpMove = packed struct {
520 move_id: u9,541 move_id: u9,
...@@ -533,6 +554,7 @@ test "implicit cast packed struct field to const ptr" {...@@ -533,6 +554,7 @@ test "implicit cast packed struct field to const ptr" {
533554
534test "zero-bit field in packed struct" {555test "zero-bit field in packed struct" {
535 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
536558
537 const S = packed struct {559 const S = packed struct {
538 x: u10,560 x: u10,
...@@ -549,6 +571,7 @@ test "packed struct with non-ABI-aligned field" {...@@ -549,6 +571,7 @@ test "packed struct with non-ABI-aligned field" {
549 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO571 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO573 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
552575
553 const S = packed struct {576 const S = packed struct {
554 x: u9,577 x: u9,
...@@ -577,6 +600,7 @@ test "bit field access" {...@@ -577,6 +600,7 @@ test "bit field access" {
577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO602 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
603 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580604
581 var data = bit_field_1;605 var data = bit_field_1;
582 try expect(getA(&data) == 1);606 try expect(getA(&data) == 1);
...@@ -631,6 +655,7 @@ test "packed array 24bits" {...@@ -631,6 +655,7 @@ test "packed array 24bits" {
631 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;655 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;656 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO657 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
634659
635 comptime {660 comptime {
636 try expect(@sizeOf([9]Foo32Bits) == 9 * 4);661 try expect(@sizeOf([9]Foo32Bits) == 9 * 4);
...@@ -697,6 +722,7 @@ test "pointer to packed struct member in a stack variable" {...@@ -697,6 +722,7 @@ test "pointer to packed struct member in a stack variable" {
697 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
698 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO723 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
725 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
700726
701 const S = packed struct {727 const S = packed struct {
702 a: u2,728 a: u2,
...@@ -723,6 +749,7 @@ test "packed struct with u0 field access" {...@@ -723,6 +749,7 @@ test "packed struct with u0 field access" {
723test "access to global struct fields" {749test "access to global struct fields" {
724 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
725 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
726753
727 g_foo.bar.value = 42;754 g_foo.bar.value = 42;
728 try expect(g_foo.bar.value == 42);755 try expect(g_foo.bar.value == 42);
...@@ -747,6 +774,7 @@ test "packed struct with fp fields" {...@@ -747,6 +774,7 @@ test "packed struct with fp fields" {
747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO774 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO775 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO776 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
777 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
750778
751 const S = packed struct {779 const S = packed struct {
752 data0: f32,780 data0: f32,
...@@ -799,6 +827,7 @@ test "non-packed struct with u128 entry in union" {...@@ -799,6 +827,7 @@ test "non-packed struct with u128 entry in union" {
799 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO829 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
830 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
802831
803 const U = union(enum) {832 const U = union(enum) {
804 Num: u128,833 Num: u128,
...@@ -822,6 +851,7 @@ test "packed struct field passed to generic function" {...@@ -822,6 +851,7 @@ test "packed struct field passed to generic function" {
822 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO851 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO852 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO853 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
854 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
825855
826 const S = struct {856 const S = struct {
827 const P = packed struct {857 const P = packed struct {
...@@ -915,6 +945,8 @@ test "tuple assigned to variable" {...@@ -915,6 +945,8 @@ test "tuple assigned to variable" {
915}945}
916946
917test "comptime struct field" {947test "comptime struct field" {
948 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
949
918 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO950 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
919 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO951 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO
920952
...@@ -933,6 +965,7 @@ test "tuple element initialized with fn call" {...@@ -933,6 +965,7 @@ test "tuple element initialized with fn call" {
933 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO965 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
934 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO966 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
935 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO967 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
968 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
936969
937 const S = struct {970 const S = struct {
938 fn doTheTest() !void {971 fn doTheTest() !void {
...@@ -951,6 +984,7 @@ test "struct with union field" {...@@ -951,6 +984,7 @@ test "struct with union field" {
951 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO984 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
953 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO986 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
987 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
954988
955 const Value = struct {989 const Value = struct {
956 ref: u32 = 2,990 ref: u32 = 2,
...@@ -971,6 +1005,7 @@ test "type coercion of anon struct literal to struct" {...@@ -971,6 +1005,7 @@ test "type coercion of anon struct literal to struct" {
971 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1005 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
972 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1006 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1007 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1008 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9741009
975 const S = struct {1010 const S = struct {
976 const S2 = struct {1011 const S2 = struct {
...@@ -1008,6 +1043,7 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {...@@ -1008,6 +1043,7 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {
1008 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1043 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1009 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1046 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10111047
1012 const S = struct {1048 const S = struct {
1013 const S2 = struct {1049 const S2 = struct {
...@@ -1047,6 +1083,7 @@ test "packed struct with undefined initializers" {...@@ -1047,6 +1083,7 @@ test "packed struct with undefined initializers" {
1047 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1083 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1048 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1084 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1049 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1085 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1086 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10501087
1051 const S = struct {1088 const S = struct {
1052 const P = packed struct {1089 const P = packed struct {
...@@ -1115,6 +1152,7 @@ test "anon init through error unions and optionals" {...@@ -1115,6 +1152,7 @@ test "anon init through error unions and optionals" {
1115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11181156
1119 const S = struct {1157 const S = struct {
1120 a: u32,1158 a: u32,
...@@ -1141,6 +1179,7 @@ test "anon init through optional" {...@@ -1141,6 +1179,7 @@ test "anon init through optional" {
1141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1182 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11441183
1145 const S = struct {1184 const S = struct {
1146 a: u32,1185 a: u32,
...@@ -1160,6 +1199,7 @@ test "anon init through error union" {...@@ -1160,6 +1199,7 @@ test "anon init through error union" {
1160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1201 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11631203
1164 const S = struct {1204 const S = struct {
1165 a: u32,1205 a: u32,
...@@ -1179,6 +1219,7 @@ test "typed init through error unions and optionals" {...@@ -1179,6 +1219,7 @@ test "typed init through error unions and optionals" {
1179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11821223
1183 const S = struct {1224 const S = struct {
1184 a: u32,1225 a: u32,
...@@ -1239,6 +1280,7 @@ test "packed struct aggregate init" {...@@ -1239,6 +1280,7 @@ test "packed struct aggregate init" {
1239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12421284
1243 const S = struct {1285 const S = struct {
1244 fn foo(a: i2, b: i6) u8 {1286 fn foo(a: i2, b: i6) u8 {
...@@ -1258,6 +1300,7 @@ test "packed struct field access via pointer" {...@@ -1258,6 +1300,7 @@ test "packed struct field access via pointer" {
1258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1303 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12611304
1262 const S = struct {1305 const S = struct {
1263 fn doTheTest() !void {1306 fn doTheTest() !void {
...@@ -1313,6 +1356,7 @@ test "under-aligned struct field" {...@@ -1313,6 +1356,7 @@ test "under-aligned struct field" {
1313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1315 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1359 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13161360
1317 const U = extern union {1361 const U = extern union {
1318 fd: i32,1362 fd: i32,
...@@ -1333,6 +1377,7 @@ test "under-aligned struct field" {...@@ -1333,6 +1377,7 @@ test "under-aligned struct field" {
1333test "fieldParentPtr of a zero-bit field" {1377test "fieldParentPtr of a zero-bit field" {
1334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1380 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13361381
1337 const S = struct {1382 const S = struct {
1338 fn testStruct(comptime A: type) !void {1383 fn testStruct(comptime A: type) !void {
...@@ -1380,6 +1425,7 @@ test "fieldParentPtr of a zero-bit field" {...@@ -1380,6 +1425,7 @@ test "fieldParentPtr of a zero-bit field" {
13801425
1381test "struct field has a pointer to an aligned version of itself" {1426test "struct field has a pointer to an aligned version of itself" {
1382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1428 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13831429
1384 const E = struct {1430 const E = struct {
1385 next: *align(1) @This(),1431 next: *align(1) @This(),
...@@ -1391,6 +1437,8 @@ test "struct field has a pointer to an aligned version of itself" {...@@ -1391,6 +1437,8 @@ test "struct field has a pointer to an aligned version of itself" {
1391}1437}
13921438
1393test "struct has only one reference" {1439test "struct has only one reference" {
1440 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1441
1394 const S = struct {1442 const S = struct {
1395 fn optionalStructParam(_: ?struct { x: u8 }) void {}1443 fn optionalStructParam(_: ?struct { x: u8 }) void {}
1396 fn errorUnionStructParam(_: error{}!struct { x: u8 }) void {}1444 fn errorUnionStructParam(_: error{}!struct { x: u8 }) void {}
...@@ -1439,6 +1487,7 @@ test "struct has only one reference" {...@@ -1439,6 +1487,7 @@ test "struct has only one reference" {
1439test "no dependency loop on pointer to optional struct" {1487test "no dependency loop on pointer to optional struct" {
1440 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1441 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1490 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14421491
1443 const S = struct {1492 const S = struct {
1444 const A = struct { b: B };1493 const A = struct { b: B };
...@@ -1459,6 +1508,7 @@ test "discarded struct initialization works as expected" {...@@ -1459,6 +1508,7 @@ test "discarded struct initialization works as expected" {
14591508
1460test "function pointer in struct returns the struct" {1509test "function pointer in struct returns the struct" {
1461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1510 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14621512
1463 const A = struct {1513 const A = struct {
1464 const A = @This();1514 const A = @This();
...@@ -1474,6 +1524,7 @@ test "function pointer in struct returns the struct" {...@@ -1474,6 +1524,7 @@ test "function pointer in struct returns the struct" {
14741524
1475test "no dependency loop on optional field wrapped in generic function" {1525test "no dependency loop on optional field wrapped in generic function" {
1476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1526 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1527 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14771528
1478 const S = struct {1529 const S = struct {
1479 fn Atomic(comptime T: type) type {1530 fn Atomic(comptime T: type) type {
...@@ -1493,6 +1544,7 @@ test "no dependency loop on optional field wrapped in generic function" {...@@ -1493,6 +1544,7 @@ test "no dependency loop on optional field wrapped in generic function" {
1493test "optional field init with tuple" {1544test "optional field init with tuple" {
1494 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1495 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14961548
1497 const S = struct {1549 const S = struct {
1498 a: ?struct { b: u32 },1550 a: ?struct { b: u32 },
...@@ -1506,6 +1558,7 @@ test "optional field init with tuple" {...@@ -1506,6 +1558,7 @@ test "optional field init with tuple" {
15061558
1507test "if inside struct init inside if" {1559test "if inside struct init inside if" {
1508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1561 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15091562
1510 const MyStruct = struct { x: u32 };1563 const MyStruct = struct { x: u32 };
1511 const b: u32 = 5;1564 const b: u32 = 5;
test/behavior/struct_contains_null_ptr_itself.zig+1
...@@ -5,6 +5,7 @@ const builtin = @import("builtin");...@@ -5,6 +5,7 @@ const builtin = @import("builtin");
5test "struct contains null pointer which contains original struct" {5test "struct contains null pointer which contains original struct" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 var x: ?*NodeLineComment = null;10 var x: ?*NodeLineComment = null;
10 try expect(x == null);11 try expect(x == null);
test/behavior/struct_contains_slice_of_itself.zig+2
...@@ -13,6 +13,7 @@ const NodeAligned = struct {...@@ -13,6 +13,7 @@ const NodeAligned = struct {
1313
14test "struct contains slice of itself" {14test "struct contains slice of itself" {
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 var other_nodes = [_]Node{18 var other_nodes = [_]Node{
18 Node{19 Node{
...@@ -53,6 +54,7 @@ test "struct contains slice of itself" {...@@ -53,6 +54,7 @@ test "struct contains slice of itself" {
53test "struct contains aligned slice of itself" {54test "struct contains aligned slice of itself" {
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5658
57 var other_nodes = [_]NodeAligned{59 var other_nodes = [_]NodeAligned{
58 NodeAligned{60 NodeAligned{
test/behavior/switch.zig+18
...@@ -117,6 +117,7 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {...@@ -117,6 +117,7 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {
117117
118test "switching on booleans" {118test "switching on booleans" {
119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
120121
121 try testSwitchOnBools();122 try testSwitchOnBools();
122 comptime try testSwitchOnBools();123 comptime try testSwitchOnBools();
...@@ -214,6 +215,7 @@ fn poll() void {...@@ -214,6 +215,7 @@ fn poll() void {
214215
215test "switch on global mutable var isn't constant-folded" {216test "switch on global mutable var isn't constant-folded" {
216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
217219
218 while (state < 2) {220 while (state < 2) {
219 poll();221 poll();
...@@ -230,6 +232,7 @@ test "switch prong with variable" {...@@ -230,6 +232,7 @@ test "switch prong with variable" {
230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
233236
234 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });237 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });
235 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });238 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });
...@@ -254,6 +257,7 @@ test "switch on enum using pointer capture" {...@@ -254,6 +257,7 @@ test "switch on enum using pointer capture" {
254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO257 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
257261
258 try testSwitchEnumPtrCapture();262 try testSwitchEnumPtrCapture();
259 comptime try testSwitchEnumPtrCapture();263 comptime try testSwitchEnumPtrCapture();
...@@ -314,6 +318,7 @@ test "switch on union with some prongs capturing" {...@@ -314,6 +318,7 @@ test "switch on union with some prongs capturing" {
314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
317322
318 const X = union(enum) {323 const X = union(enum) {
319 a,324 a,
...@@ -344,12 +349,15 @@ fn returnsFalse() bool {...@@ -344,12 +349,15 @@ fn returnsFalse() bool {
344 }349 }
345}350}
346test "switch on const enum with var" {351test "switch on const enum with var" {
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
353
347 try expect(!returnsFalse());354 try expect(!returnsFalse());
348}355}
349356
350test "anon enum literal used in switch on union enum" {357test "anon enum literal used in switch on union enum" {
351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
353361
354 const Foo = union(enum) {362 const Foo = union(enum) {
355 a: i32,363 a: i32,
...@@ -388,6 +396,7 @@ fn switchWithUnreachable(x: i32) i32 {...@@ -388,6 +396,7 @@ fn switchWithUnreachable(x: i32) i32 {
388396
389test "capture value of switch with all unreachable prongs" {397test "capture value of switch with all unreachable prongs" {
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
391400
392 const x = return_a_number() catch |err| switch (err) {401 const x = return_a_number() catch |err| switch (err) {
393 else => unreachable,402 else => unreachable,
...@@ -401,6 +410,7 @@ fn return_a_number() anyerror!i32 {...@@ -401,6 +410,7 @@ fn return_a_number() anyerror!i32 {
401410
402test "switch on integer with else capturing expr" {411test "switch on integer with else capturing expr" {
403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
404414
405 const S = struct {415 const S = struct {
406 fn doTheTest() !void {416 fn doTheTest() !void {
...@@ -420,6 +430,7 @@ test "else prong of switch on error set excludes other cases" {...@@ -420,6 +430,7 @@ test "else prong of switch on error set excludes other cases" {
420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO431 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
422 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
433 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
423434
424 const S = struct {435 const S = struct {
425 fn doTheTest() !void {436 fn doTheTest() !void {
...@@ -454,6 +465,7 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -454,6 +465,7 @@ test "switch prongs with error set cases make a new error set type for capture v
454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO467 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
468 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
457469
458 const S = struct {470 const S = struct {
459 fn doTheTest() !void {471 fn doTheTest() !void {
...@@ -488,6 +500,7 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -488,6 +500,7 @@ test "switch prongs with error set cases make a new error set type for capture v
488500
489test "return result loc and then switch with range implicit casted to error union" {501test "return result loc and then switch with range implicit casted to error union" {
490 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO502 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
491504
492 const S = struct {505 const S = struct {
493 fn doTheTest() !void {506 fn doTheTest() !void {
...@@ -528,6 +541,7 @@ test "switch prongs with cases with identical payload types" {...@@ -528,6 +541,7 @@ test "switch prongs with cases with identical payload types" {
528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO543 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
544 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
531545
532 const Union = union(enum) {546 const Union = union(enum) {
533 A: usize,547 A: usize,
...@@ -571,6 +585,7 @@ test "switch prongs with cases with identical payload types" {...@@ -571,6 +585,7 @@ test "switch prongs with cases with identical payload types" {
571test "switch on pointer type" {585test "switch on pointer type" {
572 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO587 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
588 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
574589
575 const S = struct {590 const S = struct {
576 const X = struct {591 const X = struct {
...@@ -618,6 +633,7 @@ test "switch capture copies its payload" {...@@ -618,6 +633,7 @@ test "switch capture copies its payload" {
618 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO633 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
619 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO634 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
636 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
621637
622 const S = struct {638 const S = struct {
623 fn doTheTest() !void {639 fn doTheTest() !void {
...@@ -692,6 +708,8 @@ test "switch item sizeof" {...@@ -692,6 +708,8 @@ test "switch item sizeof" {
692}708}
693709
694test "comptime inline switch" {710test "comptime inline switch" {
711 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
712
695 const U = union(enum) { a: type, b: type };713 const U = union(enum) { a: type, b: type };
696 const value = comptime blk: {714 const value = comptime blk: {
697 var u: U = .{ .a = u32 };715 var u: U = .{ .a = u32 };
test/behavior/switch_prong_err_enum.zig+1
...@@ -24,6 +24,7 @@ test "switch prong returns error enum" {...@@ -24,6 +24,7 @@ test "switch prong returns error enum" {
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
28 switch (doThing(17) catch unreachable) {29 switch (doThing(17) catch unreachable) {
29 FormValue.Address => |payload| {30 FormValue.Address => |payload| {
test/behavior/switch_prong_implicit_cast.zig+1
...@@ -18,6 +18,7 @@ test "switch prong implicit cast" {...@@ -18,6 +18,7 @@ test "switch prong implicit cast" {
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
22 const result = switch (foo(2) catch unreachable) {23 const result = switch (foo(2) catch unreachable) {
23 FormValue.One => false,24 FormValue.One => false,
test/behavior/this.zig+3
...@@ -21,12 +21,15 @@ fn add(x: i32, y: i32) i32 {...@@ -21,12 +21,15 @@ fn add(x: i32, y: i32) i32 {
21}21}
2222
23test "this refer to module call private fn" {23test "this refer to module call private fn" {
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
25
24 try expect(module.add(1, 2) == 3);26 try expect(module.add(1, 2) == 3);
25}27}
2628
27test "this refer to container" {29test "this refer to container" {
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3033
31 var pt: Point(i32) = undefined;34 var pt: Point(i32) = undefined;
32 pt.x = 12;35 pt.x = 12;
test/behavior/threadlocal.zig+3
...@@ -11,6 +11,7 @@ test "thread local variable" {...@@ -11,6 +11,7 @@ test "thread local variable" {
11 else => return error.SkipZigTest,11 else => return error.SkipZigTest,
12 }; // TODO12 }; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 const S = struct {16 const S = struct {
16 threadlocal var t: i32 = 1234;17 threadlocal var t: i32 = 1234;
...@@ -28,6 +29,7 @@ test "pointer to thread local array" {...@@ -28,6 +29,7 @@ test "pointer to thread local array" {
28 else => return error.SkipZigTest,29 else => return error.SkipZigTest,
29 }; // TODO30 }; // TODO
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3133
32 const s = "Hello world";34 const s = "Hello world";
33 std.mem.copy(u8, buffer[0..], s);35 std.mem.copy(u8, buffer[0..], s);
...@@ -45,6 +47,7 @@ test "reference a global threadlocal variable" {...@@ -45,6 +47,7 @@ test "reference a global threadlocal variable" {
45 else => return error.SkipZigTest,47 else => return error.SkipZigTest,
46 }; // TODO48 }; // TODO
47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4851
49 _ = nrfx_uart_rx(&g_uart0);52 _ = nrfx_uart_rx(&g_uart0);
50}53}
test/behavior/translate_c_macros.zig+16
...@@ -9,6 +9,7 @@ const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));...@@ -9,6 +9,7 @@ const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));
99
10test "casting to void with a macro" {10test "casting to void with a macro" {
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 h.IGNORE_ME_1(42);14 h.IGNORE_ME_1(42);
14 h.IGNORE_ME_2(42);15 h.IGNORE_ME_2(42);
...@@ -26,6 +27,7 @@ test "initializer list expression" {...@@ -26,6 +27,7 @@ test "initializer list expression" {
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2931
30 try expectEqual(h.Color{32 try expectEqual(h.Color{
31 .r = 200,33 .r = 200,
...@@ -38,6 +40,7 @@ test "initializer list expression" {...@@ -38,6 +40,7 @@ test "initializer list expression" {
38test "sizeof in macros" {40test "sizeof in macros" {
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4144
42 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));45 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));
43 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));46 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));
...@@ -45,6 +48,7 @@ test "sizeof in macros" {...@@ -45,6 +48,7 @@ test "sizeof in macros" {
4548
46test "reference to a struct type" {49test "reference to a struct type" {
47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4852
49 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);53 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);
50}54}
...@@ -54,6 +58,7 @@ test "cast negative integer to pointer" {...@@ -54,6 +58,7 @@ test "cast negative integer to pointer" {
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5762
58 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);63 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
59}64}
...@@ -64,6 +69,7 @@ test "casting to union with a macro" {...@@ -64,6 +69,7 @@ test "casting to union with a macro" {
64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6773
68 const l: c_long = 42;74 const l: c_long = 42;
69 const d: f64 = 2.0;75 const d: f64 = 2.0;
...@@ -80,6 +86,7 @@ test "casting or calling a value with a paren-surrounded macro" {...@@ -80,6 +86,7 @@ test "casting or calling a value with a paren-surrounded macro" {
80 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8390
84 const l: c_long = 42;91 const l: c_long = 42;
85 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);92 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);
...@@ -99,6 +106,7 @@ test "nested comma operator" {...@@ -99,6 +106,7 @@ test "nested comma operator" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102110
103 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);111 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);
104 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);112 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);
...@@ -109,6 +117,7 @@ test "cast functions" {...@@ -109,6 +117,7 @@ test "cast functions" {
109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
112121
113 const S = struct {122 const S = struct {
114 fn foo() void {}123 fn foo() void {}
...@@ -122,6 +131,7 @@ test "large integer macro" {...@@ -122,6 +131,7 @@ test "large integer macro" {
122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
125135
126 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);136 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);
127}137}
...@@ -131,6 +141,7 @@ test "string literal macro with embedded tab character" {...@@ -131,6 +141,7 @@ test "string literal macro with embedded tab character" {
131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134145
135 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);146 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);
136}147}
...@@ -140,6 +151,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {...@@ -140,6 +151,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143155
144 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);156 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);
145 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);157 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);
...@@ -151,6 +163,7 @@ test "Macro that uses division operator. Issue #13162" {...@@ -151,6 +163,7 @@ test "Macro that uses division operator. Issue #13162" {
151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
154167
155 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));168 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));
156 try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000)));169 try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000)));
...@@ -184,6 +197,7 @@ test "Macro that uses remainder operator. Issue #13346" {...@@ -184,6 +197,7 @@ test "Macro that uses remainder operator. Issue #13346" {
184 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
187201
188 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));202 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));
189 try expectEqual(@as(c_uint, 2_030), h.REMAINDER_CONSTANT(@as(c_uint, 42_030)));203 try expectEqual(@as(c_uint, 2_030), h.REMAINDER_CONSTANT(@as(c_uint, 42_030)));
...@@ -214,5 +228,7 @@ test "Macro that uses remainder operator. Issue #13346" {...@@ -214,5 +228,7 @@ test "Macro that uses remainder operator. Issue #13346" {
214}228}
215229
216test "@typeInfo on @cImport result" {230test "@typeInfo on @cImport result" {
231 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
232
217 try expect(@typeInfo(h).Struct.decls.len > 1);233 try expect(@typeInfo(h).Struct.decls.len > 1);
218}234}
test/behavior/truncate.zig+1
...@@ -65,6 +65,7 @@ test "truncate on vectors" {...@@ -65,6 +65,7 @@ test "truncate on vectors" {
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6869
69 const S = struct {70 const S = struct {
70 fn doTheTest() !void {71 fn doTheTest() !void {
test/behavior/try.zig+5
...@@ -4,6 +4,7 @@ const expect = std.testing.expect;...@@ -4,6 +4,7 @@ const expect = std.testing.expect;
44
5test "try on error union" {5test "try on error union" {
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
8 try tryOnErrorUnionImpl();9 try tryOnErrorUnionImpl();
9 comptime try tryOnErrorUnionImpl();10 comptime try tryOnErrorUnionImpl();
...@@ -23,6 +24,8 @@ fn returnsTen() anyerror!i32 {...@@ -23,6 +24,8 @@ fn returnsTen() anyerror!i32 {
23}24}
2425
25test "try without vars" {26test "try without vars" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
26 const result1 = if (failIfTrue(true)) 1 else |_| @as(i32, 2);29 const result1 = if (failIfTrue(true)) 1 else |_| @as(i32, 2);
27 try expect(result1 == 2);30 try expect(result1 == 2);
2831
...@@ -39,6 +42,8 @@ fn failIfTrue(ok: bool) anyerror!void {...@@ -39,6 +42,8 @@ fn failIfTrue(ok: bool) anyerror!void {
39}42}
4043
41test "try then not executed with assignment" {44test "try then not executed with assignment" {
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
46
42 if (failIfTrue(true)) {47 if (failIfTrue(true)) {
43 unreachable;48 unreachable;
44 } else |err| {49 } else |err| {
test/behavior/tuple.zig+16
...@@ -9,6 +9,7 @@ test "tuple concatenation" {...@@ -9,6 +9,7 @@ test "tuple concatenation" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 const S = struct {14 const S = struct {
14 fn doTheTest() !void {15 fn doTheTest() !void {
...@@ -52,6 +53,7 @@ test "more tuple concatenation" {...@@ -52,6 +53,7 @@ test "more tuple concatenation" {
52 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5557
56 const T = struct {58 const T = struct {
57 fn consume_tuple(tuple: anytype, len: usize) !void {59 fn consume_tuple(tuple: anytype, len: usize) !void {
...@@ -212,6 +214,7 @@ test "fieldParentPtr of tuple" {...@@ -212,6 +214,7 @@ test "fieldParentPtr of tuple" {
212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
215218
216 var x: u32 = 0;219 var x: u32 = 0;
217 const tuple = .{ x, x };220 const tuple = .{ x, x };
...@@ -222,6 +225,7 @@ test "fieldParentPtr of anon struct" {...@@ -222,6 +225,7 @@ test "fieldParentPtr of anon struct" {
222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225229
226 var x: u32 = 0;230 var x: u32 = 0;
227 const anon_st = .{ .foo = x, .bar = x };231 const anon_st = .{ .foo = x, .bar = x };
...@@ -242,6 +246,7 @@ test "offsetOf anon struct" {...@@ -242,6 +246,7 @@ test "offsetOf anon struct" {
242246
243test "initializing tuple with mixed comptime-runtime fields" {247test "initializing tuple with mixed comptime-runtime fields" {
244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO248 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
245250
246 var x: u32 = 15;251 var x: u32 = 15;
247 const T = @TypeOf(.{ @as(i32, -1234), @as(u32, 5678), x });252 const T = @TypeOf(.{ @as(i32, -1234), @as(u32, 5678), x });
...@@ -251,6 +256,7 @@ test "initializing tuple with mixed comptime-runtime fields" {...@@ -251,6 +256,7 @@ test "initializing tuple with mixed comptime-runtime fields" {
251256
252test "initializing anon struct with mixed comptime-runtime fields" {257test "initializing anon struct with mixed comptime-runtime fields" {
253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
254260
255 var x: u32 = 15;261 var x: u32 = 15;
256 const T = @TypeOf(.{ .foo = @as(i32, -1234), .bar = x });262 const T = @TypeOf(.{ .foo = @as(i32, -1234), .bar = x });
...@@ -262,6 +268,7 @@ test "tuple in tuple passed to generic function" {...@@ -262,6 +268,7 @@ test "tuple in tuple passed to generic function" {
262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
265272
266 const S = struct {273 const S = struct {
267 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {274 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
...@@ -281,6 +288,7 @@ test "coerce tuple to tuple" {...@@ -281,6 +288,7 @@ test "coerce tuple to tuple" {
281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
283 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
284292
285 const T = std.meta.Tuple(&.{u8});293 const T = std.meta.Tuple(&.{u8});
286 const S = struct {294 const S = struct {
...@@ -295,6 +303,7 @@ test "tuple type with void field" {...@@ -295,6 +303,7 @@ test "tuple type with void field" {
295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
298307
299 const T = std.meta.Tuple(&[_]type{void});308 const T = std.meta.Tuple(&[_]type{void});
300 const x = T{{}};309 const x = T{{}};
...@@ -302,6 +311,8 @@ test "tuple type with void field" {...@@ -302,6 +311,8 @@ test "tuple type with void field" {
302}311}
303312
304test "zero sized struct in tuple handled correctly" {313test "zero sized struct in tuple handled correctly" {
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315
305 const State = struct {316 const State = struct {
306 const Self = @This();317 const Self = @This();
307 data: @Type(.{318 data: @Type(.{
...@@ -331,6 +342,7 @@ test "zero sized struct in tuple handled correctly" {...@@ -331,6 +342,7 @@ test "zero sized struct in tuple handled correctly" {
331test "tuple type with void field and a runtime field" {342test "tuple type with void field and a runtime field" {
332 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
334346
335 const T = std.meta.Tuple(&[_]type{ usize, void });347 const T = std.meta.Tuple(&[_]type{ usize, void });
336 var t: T = .{ 5, {} };348 var t: T = .{ 5, {} };
...@@ -341,6 +353,7 @@ test "branching inside tuple literal" {...@@ -341,6 +353,7 @@ test "branching inside tuple literal" {
341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
344357
345 const S = struct {358 const S = struct {
346 fn foo(a: anytype) !void {359 fn foo(a: anytype) !void {
...@@ -356,6 +369,7 @@ test "tuple initialized with a runtime known value" {...@@ -356,6 +369,7 @@ test "tuple initialized with a runtime known value" {
356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
357 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;370 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
372 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
359373
360 const E = union(enum) { e: []const u8 };374 const E = union(enum) { e: []const u8 };
361 const W = union(enum) { w: E };375 const W = union(enum) { w: E };
...@@ -370,6 +384,7 @@ test "tuple of struct concatenation and coercion to array" {...@@ -370,6 +384,7 @@ test "tuple of struct concatenation and coercion to array" {
370 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
371 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;385 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
372 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
373388
374 const StructWithDefault = struct { value: f32 = 42 };389 const StructWithDefault = struct { value: f32 = 42 };
375 const SomeStruct = struct { array: [4]StructWithDefault };390 const SomeStruct = struct { array: [4]StructWithDefault };
...@@ -384,6 +399,7 @@ test "nested runtime conditionals in tuple initializer" {...@@ -384,6 +399,7 @@ test "nested runtime conditionals in tuple initializer" {
384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387403
388 var data: u8 = 0;404 var data: u8 = 0;
389 const x = .{405 const x = .{
test/behavior/tuple_declarations.zig+2
...@@ -7,6 +7,7 @@ const expectEqualStrings = testing.expectEqualStrings;...@@ -7,6 +7,7 @@ const expectEqualStrings = testing.expectEqualStrings;
7test "tuple declaration type info" {7test "tuple declaration type info" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
11 {12 {
12 const T = struct { comptime u32 align(2) = 1, []const u8 };13 const T = struct { comptime u32 align(2) = 1, []const u8 };
...@@ -56,6 +57,7 @@ test "tuple declaration type info" {...@@ -56,6 +57,7 @@ test "tuple declaration type info" {
56test "Tuple declaration usage" {57test "Tuple declaration usage" {
57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
60 const T = struct { u32, []const u8 };62 const T = struct { u32, []const u8 };
61 var t: T = .{ 1, "foo" };63 var t: T = .{ 1, "foo" };
test/behavior/type.zig+5
...@@ -203,6 +203,7 @@ test "Type.Opaque" {...@@ -203,6 +203,7 @@ test "Type.Opaque" {
203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
206207
207 const Opaque = @Type(.{208 const Opaque = @Type(.{
208 .Opaque = .{209 .Opaque = .{
...@@ -261,6 +262,7 @@ test "Type.Struct" {...@@ -261,6 +262,7 @@ test "Type.Struct" {
261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
264266
265 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));267 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
266 const infoA = @typeInfo(A).Struct;268 const infoA = @typeInfo(A).Struct;
...@@ -348,6 +350,7 @@ test "Type.Struct" {...@@ -348,6 +350,7 @@ test "Type.Struct" {
348test "Type.Enum" {350test "Type.Enum" {
349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
351354
352 const Foo = @Type(.{355 const Foo = @Type(.{
353 .Enum = .{356 .Enum = .{
...@@ -384,6 +387,7 @@ test "Type.Union" {...@@ -384,6 +387,7 @@ test "Type.Union" {
384 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO387 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387391
388 const Untagged = @Type(.{392 const Untagged = @Type(.{
389 .Union = .{393 .Union = .{
...@@ -487,6 +491,7 @@ test "Type.Fn" {...@@ -487,6 +491,7 @@ test "Type.Fn" {
487 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO491 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO492 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
494 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
490495
491 const some_opaque = opaque {};496 const some_opaque = opaque {};
492 const some_ptr = *some_opaque;497 const some_ptr = *some_opaque;
test/behavior/type_info.zig+10
...@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {...@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {
160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
163164
164 try testErrorSet();165 try testErrorSet();
165 comptime try testErrorSet();166 comptime try testErrorSet();
...@@ -191,6 +192,7 @@ test "type info: error set single value" {...@@ -191,6 +192,7 @@ test "type info: error set single value" {
191 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194196
195 const TestSet = error.One;197 const TestSet = error.One;
196198
...@@ -204,6 +206,7 @@ test "type info: error set merged" {...@@ -204,6 +206,7 @@ test "type info: error set merged" {
204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
207210
208 const TestSet = error{ One, Two } || error{Three};211 const TestSet = error{ One, Two } || error{Three};
209212
...@@ -219,6 +222,7 @@ test "type info: enum info" {...@@ -219,6 +222,7 @@ test "type info: enum info" {
219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
222226
223 try testEnum();227 try testEnum();
224 comptime try testEnum();228 comptime try testEnum();
...@@ -281,6 +285,7 @@ fn testUnion() !void {...@@ -281,6 +285,7 @@ fn testUnion() !void {
281285
282test "type info: struct info" {286test "type info: struct info" {
283 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
284289
285 try testStruct();290 try testStruct();
286 comptime try testStruct();291 comptime try testStruct();
...@@ -349,6 +354,8 @@ fn testOpaque() !void {...@@ -349,6 +354,8 @@ fn testOpaque() !void {
349}354}
350355
351test "type info: function type info" {356test "type info: function type info" {
357 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
358
352 try testFunction();359 try testFunction();
353 comptime try testFunction();360 comptime try testFunction();
354}361}
...@@ -506,6 +513,7 @@ test "type info for async frames" {...@@ -506,6 +513,7 @@ test "type info for async frames" {
506513
507test "Declarations are returned in declaration order" {514test "Declarations are returned in declaration order" {
508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
516 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
509517
510 const S = struct {518 const S = struct {
511 const a = 1;519 const a = 1;
...@@ -528,6 +536,7 @@ test "Struct.is_tuple for anon list literal" {...@@ -528,6 +536,7 @@ test "Struct.is_tuple for anon list literal" {
528536
529test "Struct.is_tuple for anon struct literal" {537test "Struct.is_tuple for anon struct literal" {
530 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
531540
532 const info = @typeInfo(@TypeOf(.{ .a = 0 }));541 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
533 try expect(!info.Struct.is_tuple);542 try expect(!info.Struct.is_tuple);
...@@ -564,6 +573,7 @@ test "value from struct @typeInfo default_value can be loaded at comptime" {...@@ -564,6 +573,7 @@ test "value from struct @typeInfo default_value can be loaded at comptime" {
564test "@typeInfo decls and usingnamespace" {573test "@typeInfo decls and usingnamespace" {
565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO574 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
576 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567577
568 const A = struct {578 const A = struct {
569 const x = 5;579 const x = 5;
test/behavior/typename.zig+8
...@@ -15,6 +15,7 @@ test "anon fn param" {...@@ -15,6 +15,7 @@ test "anon fn param" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1819
19 // https://github.com/ziglang/zig/issues/933920 // https://github.com/ziglang/zig/issues/9339
20 try expectEqualStringsIgnoreDigits(21 try expectEqualStringsIgnoreDigits(
...@@ -40,6 +41,7 @@ test "anon field init" {...@@ -40,6 +41,7 @@ test "anon field init" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4345
44 const Foo = .{46 const Foo = .{
45 .T1 = struct {},47 .T1 = struct {},
...@@ -65,6 +67,7 @@ test "basic" {...@@ -65,6 +67,7 @@ test "basic" {
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6871
69 try expectEqualStrings("i64", @typeName(i64));72 try expectEqualStrings("i64", @typeName(i64));
70 try expectEqualStrings("*usize", @typeName(*usize));73 try expectEqualStrings("*usize", @typeName(*usize));
...@@ -88,6 +91,7 @@ test "top level decl" {...@@ -88,6 +91,7 @@ test "top level decl" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
90 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9195
92 try expectEqualStrings(96 try expectEqualStrings(
93 "behavior.typename.A_Struct",97 "behavior.typename.A_Struct",
...@@ -137,6 +141,7 @@ test "fn param" {...@@ -137,6 +141,7 @@ test "fn param" {
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
140145
141 // https://github.com/ziglang/zig/issues/675146 // https://github.com/ziglang/zig/issues/675
142 try expectEqualStrings(147 try expectEqualStrings(
...@@ -207,6 +212,7 @@ test "local variable" {...@@ -207,6 +212,7 @@ test "local variable" {
207 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
208 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210216
211 const Foo = struct { a: u32 };217 const Foo = struct { a: u32 };
212 const Bar = union { a: u32 };218 const Bar = union { a: u32 };
...@@ -225,6 +231,7 @@ test "comptime parameters not converted to anytype in function type" {...@@ -225,6 +231,7 @@ test "comptime parameters not converted to anytype in function type" {
225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228235
229 const T = fn (fn (type) void, void) void;236 const T = fn (fn (type) void, void) void;
230 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));237 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));
...@@ -234,6 +241,7 @@ test "anon name strategy used in sub expression" {...@@ -234,6 +241,7 @@ test "anon name strategy used in sub expression" {
234 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
244 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237245
238 const S = struct {246 const S = struct {
239 fn getTheName() []const u8 {247 fn getTheName() []const u8 {
test/behavior/undefined.zig+3
...@@ -47,6 +47,7 @@ test "assign undefined to struct" {...@@ -47,6 +47,7 @@ test "assign undefined to struct" {
47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
51 comptime {52 comptime {
52 var foo: Foo = undefined;53 var foo: Foo = undefined;
...@@ -64,6 +65,7 @@ test "assign undefined to struct with method" {...@@ -64,6 +65,7 @@ test "assign undefined to struct with method" {
64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
68 comptime {70 comptime {
69 var foo: Foo = undefined;71 var foo: Foo = undefined;
...@@ -79,6 +81,7 @@ test "assign undefined to struct with method" {...@@ -79,6 +81,7 @@ test "assign undefined to struct with method" {
7981
80test "type name of undefined" {82test "type name of undefined" {
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8285
83 const x = undefined;86 const x = undefined;
84 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));87 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));
test/behavior/underscore.zig+1
...@@ -8,6 +8,7 @@ test "ignore lval with underscore" {...@@ -8,6 +8,7 @@ test "ignore lval with underscore" {
88
9test "ignore lval with underscore (while loop)" {9test "ignore lval with underscore (while loop)" {
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
12 while (optionalReturnError()) |_| {13 while (optionalReturnError()) |_| {
13 while (optionalReturnError()) |_| {14 while (optionalReturnError()) |_| {
test/behavior/union.zig+61
...@@ -14,6 +14,7 @@ test "basic unions with floats" {...@@ -14,6 +14,7 @@ test "basic unions with floats" {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
18 var foo = FooWithFloats{ .int = 1 };19 var foo = FooWithFloats{ .int = 1 };
19 try expect(foo.int == 1);20 try expect(foo.int == 1);
...@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {...@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {
29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3234
33 var foo: FooWithFloats = undefined;35 var foo: FooWithFloats = undefined;
3436
...@@ -40,6 +42,7 @@ test "basic unions" {...@@ -40,6 +42,7 @@ test "basic unions" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4346
44 var foo = Foo{ .int = 1 };47 var foo = Foo{ .int = 1 };
45 try expect(foo.int == 1);48 try expect(foo.int == 1);
...@@ -58,6 +61,7 @@ test "init union with runtime value" {...@@ -58,6 +61,7 @@ test "init union with runtime value" {
58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6165
62 var foo: Foo = undefined;66 var foo: Foo = undefined;
6367
...@@ -96,6 +100,7 @@ const FooExtern = extern union {...@@ -96,6 +100,7 @@ const FooExtern = extern union {
96test "basic extern unions" {100test "basic extern unions" {
97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
99104
100 var foo = FooExtern{ .int = 1 };105 var foo = FooExtern{ .int = 1 };
101 try expect(foo.int == 1);106 try expect(foo.int == 1);
...@@ -167,6 +172,7 @@ test "constant tagged union with payload" {...@@ -167,6 +172,7 @@ test "constant tagged union with payload" {
167 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
168 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170176
171 var empty = TaggedUnionWithPayload{ .Empty = {} };177 var empty = TaggedUnionWithPayload{ .Empty = {} };
172 var full = TaggedUnionWithPayload{ .Full = 13 };178 var full = TaggedUnionWithPayload{ .Full = 13 };
...@@ -216,6 +222,7 @@ test "union with specified enum tag" {...@@ -216,6 +222,7 @@ test "union with specified enum tag" {
216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219226
220 try doTest();227 try doTest();
221 comptime try doTest();228 comptime try doTest();
...@@ -225,6 +232,7 @@ test "packed union generates correctly aligned type" {...@@ -225,6 +232,7 @@ test "packed union generates correctly aligned type" {
225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
226 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228236
229 const U = packed union {237 const U = packed union {
230 f1: *const fn () error{TestUnexpectedResult}!void,238 f1: *const fn () error{TestUnexpectedResult}!void,
...@@ -264,6 +272,7 @@ test "comparison between union and enum literal" {...@@ -264,6 +272,7 @@ test "comparison between union and enum literal" {
264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO274 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267276
268 try testComparison();277 try testComparison();
269 comptime try testComparison();278 comptime try testComparison();
...@@ -279,6 +288,7 @@ test "cast union to tag type of union" {...@@ -279,6 +288,7 @@ test "cast union to tag type of union" {
279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;288 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
282292
283 try testCastUnionToTag();293 try testCastUnionToTag();
284 comptime try testCastUnionToTag();294 comptime try testCastUnionToTag();
...@@ -299,6 +309,7 @@ test "cast tag type of union to union" {...@@ -299,6 +309,7 @@ test "cast tag type of union to union" {
299 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
301 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
302313
303 var x: Value2 = Letter2.B;314 var x: Value2 = Letter2.B;
304 try expect(@as(Letter2, x) == Letter2.B);315 try expect(@as(Letter2, x) == Letter2.B);
...@@ -314,6 +325,7 @@ test "implicit cast union to its tag type" {...@@ -314,6 +325,7 @@ test "implicit cast union to its tag type" {
314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;325 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO327 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
328 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
317329
318 var x: Value2 = Letter2.B;330 var x: Value2 = Letter2.B;
319 try expect(x == Letter2.B);331 try expect(x == Letter2.B);
...@@ -334,6 +346,7 @@ test "constant packed union" {...@@ -334,6 +346,7 @@ test "constant packed union" {
334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
349 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337350
338 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});351 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
339}352}
...@@ -353,6 +366,7 @@ test "simple union(enum(u32))" {...@@ -353,6 +366,7 @@ test "simple union(enum(u32))" {
353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356370
357 var x = MultipleChoice.C;371 var x = MultipleChoice.C;
358 try expect(x == MultipleChoice.C);372 try expect(x == MultipleChoice.C);
...@@ -378,6 +392,7 @@ test "tagged union initialization with runtime void" {...@@ -378,6 +392,7 @@ test "tagged union initialization with runtime void" {
378 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
381396
382 try expect(testTaggedUnionInit({}));397 try expect(testTaggedUnionInit({}));
383}398}
...@@ -398,6 +413,7 @@ test "tagged union with no payloads" {...@@ -398,6 +413,7 @@ test "tagged union with no payloads" {
398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
416 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401417
402 const a = UnionEnumNoPayloads{ .B = {} };418 const a = UnionEnumNoPayloads{ .B = {} };
403 switch (a) {419 switch (a) {
...@@ -408,6 +424,7 @@ test "tagged union with no payloads" {...@@ -408,6 +424,7 @@ test "tagged union with no payloads" {
408424
409test "union with only 1 field casted to its enum type" {425test "union with only 1 field casted to its enum type" {
410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411428
412 const Literal = union(enum) {429 const Literal = union(enum) {
413 Number: f64,430 Number: f64,
...@@ -444,6 +461,7 @@ test "global union with single field is correctly initialized" {...@@ -444,6 +461,7 @@ test "global union with single field is correctly initialized" {
444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
445 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO462 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
464 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
447465
448 glbl = Foo1{466 glbl = Foo1{
449 .f = @typeInfo(Foo1).Union.fields[0].type{ .x = 123 },467 .f = @typeInfo(Foo1).Union.fields[0].type{ .x = 123 },
...@@ -462,6 +480,7 @@ test "initialize global array of union" {...@@ -462,6 +480,7 @@ test "initialize global array of union" {
462 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
463 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
465484
466 glbl_array[1] = FooUnion{ .U1 = 2 };485 glbl_array[1] = FooUnion{ .U1 = 2 };
467 glbl_array[0] = FooUnion{ .U0 = 1 };486 glbl_array[0] = FooUnion{ .U0 = 1 };
...@@ -473,6 +492,7 @@ test "update the tag value for zero-sized unions" {...@@ -473,6 +492,7 @@ test "update the tag value for zero-sized unions" {
473 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;492 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
474 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO494 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
495 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
476496
477 const S = union(enum) {497 const S = union(enum) {
478 U0: void,498 U0: void,
...@@ -489,6 +509,7 @@ test "union initializer generates padding only if needed" {...@@ -489,6 +509,7 @@ test "union initializer generates padding only if needed" {
489 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
490 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
491 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
492513
493 const U = union(enum) {514 const U = union(enum) {
494 A: u24,515 A: u24,
...@@ -501,6 +522,7 @@ test "union initializer generates padding only if needed" {...@@ -501,6 +522,7 @@ test "union initializer generates padding only if needed" {
501test "runtime tag name with single field" {522test "runtime tag name with single field" {
502 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;523 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504526
505 const U = union(enum) {527 const U = union(enum) {
506 A: i32,528 A: i32,
...@@ -514,6 +536,7 @@ test "method call on an empty union" {...@@ -514,6 +536,7 @@ test "method call on an empty union" {
514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
517540
518 const S = struct {541 const S = struct {
519 const MyUnion = union(MyUnionTag) {542 const MyUnion = union(MyUnionTag) {
...@@ -576,6 +599,7 @@ test "tagged union as return value" {...@@ -576,6 +599,7 @@ test "tagged union as return value" {
576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;599 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO601 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
579603
580 switch (returnAnInt(13)) {604 switch (returnAnInt(13)) {
581 TaggedFoo.One => |value| try expect(value == 13),605 TaggedFoo.One => |value| try expect(value == 13),
...@@ -591,6 +615,7 @@ test "tagged union with all void fields but a meaningful tag" {...@@ -591,6 +615,7 @@ test "tagged union with all void fields but a meaningful tag" {
591 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
592 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
593 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
594619
595 const S = struct {620 const S = struct {
596 const B = union(enum) {621 const B = union(enum) {
...@@ -620,6 +645,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {...@@ -620,6 +645,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
620 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;645 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
622 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
648 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
623649
624 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);650 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);
625 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });651 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
...@@ -657,6 +683,7 @@ test "switch on union with only 1 field" {...@@ -657,6 +683,7 @@ test "switch on union with only 1 field" {
657 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO683 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
659 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO685 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
686 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
660687
661 var r: PartialInst = undefined;688 var r: PartialInst = undefined;
662 r = PartialInst.Compiled;689 r = PartialInst.Compiled;
...@@ -685,6 +712,7 @@ const PartialInstWithPayload = union(enum) {...@@ -685,6 +712,7 @@ const PartialInstWithPayload = union(enum) {
685712
686test "union with only 1 field casted to its enum type which has enum value specified" {713test "union with only 1 field casted to its enum type which has enum value specified" {
687 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO714 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
688716
689 const Literal = union(enum) {717 const Literal = union(enum) {
690 Number: f64,718 Number: f64,
...@@ -711,6 +739,7 @@ test "@enumToInt works on unions" {...@@ -711,6 +739,7 @@ test "@enumToInt works on unions" {
711 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO739 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
712 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO740 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
713 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO741 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
742 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
714743
715 const Bar = union(enum) {744 const Bar = union(enum) {
716 A: bool,745 A: bool,
...@@ -770,6 +799,7 @@ test "return union init with void payload" {...@@ -770,6 +799,7 @@ test "return union init with void payload" {
770 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;799 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
771 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO800 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
772 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
773803
774 const S = struct {804 const S = struct {
775 fn entry() !void {805 fn entry() !void {
...@@ -796,6 +826,7 @@ test "@unionInit stored to a const" {...@@ -796,6 +826,7 @@ test "@unionInit stored to a const" {
796 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO826 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
797 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
798 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
829 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
799830
800 const S = struct {831 const S = struct {
801 const U = union(enum) {832 const U = union(enum) {
...@@ -824,6 +855,7 @@ test "@unionInit can modify a union type" {...@@ -824,6 +855,7 @@ test "@unionInit can modify a union type" {
824 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO855 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO856 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
826 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO857 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
858 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
827859
828 const UnionInitEnum = union(enum) {860 const UnionInitEnum = union(enum) {
829 Boolean: bool,861 Boolean: bool,
...@@ -847,6 +879,7 @@ test "@unionInit can modify a pointer value" {...@@ -847,6 +879,7 @@ test "@unionInit can modify a pointer value" {
847 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
848 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO880 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
849 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO881 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
882 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
850883
851 const UnionInitEnum = union(enum) {884 const UnionInitEnum = union(enum) {
852 Boolean: bool,885 Boolean: bool,
...@@ -867,6 +900,7 @@ test "union no tag with struct member" {...@@ -867,6 +900,7 @@ test "union no tag with struct member" {
867 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO901 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
869 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO902 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
903 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
870904
871 const Struct = struct {};905 const Struct = struct {};
872 const Union = union {906 const Union = union {
...@@ -902,6 +936,7 @@ test "anonymous union literal syntax" {...@@ -902,6 +936,7 @@ test "anonymous union literal syntax" {
902 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
903 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
904 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
905940
906 const S = struct {941 const S = struct {
907 const Number = union {942 const Number = union {
...@@ -928,6 +963,7 @@ test "function call result coerces from tagged union to the tag" {...@@ -928,6 +963,7 @@ test "function call result coerces from tagged union to the tag" {
928 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO964 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
930 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO965 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
966 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
931967
932 const S = struct {968 const S = struct {
933 const Arch = union(enum) {969 const Arch = union(enum) {
...@@ -963,6 +999,7 @@ test "cast from anonymous struct to union" {...@@ -963,6 +999,7 @@ test "cast from anonymous struct to union" {
963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO999 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
964 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1000 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1001 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1002 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9661003
967 const S = struct {1004 const S = struct {
968 const U = union(enum) {1005 const U = union(enum) {
...@@ -996,6 +1033,7 @@ test "cast from pointer to anonymous struct to pointer to union" {...@@ -996,6 +1033,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
996 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1033 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
997 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1034 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
998 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1035 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1036 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9991037
1000 const S = struct {1038 const S = struct {
1001 const U = union(enum) {1039 const U = union(enum) {
...@@ -1027,6 +1065,7 @@ test "switching on non exhaustive union" {...@@ -1027,6 +1065,7 @@ test "switching on non exhaustive union" {
1027 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1065 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1028 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1066 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1029 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1067 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1068 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10301069
1031 const S = struct {1070 const S = struct {
1032 const E = enum(u8) {1071 const E = enum(u8) {
...@@ -1054,6 +1093,7 @@ test "containers with single-field enums" {...@@ -1054,6 +1093,7 @@ test "containers with single-field enums" {
1054 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1093 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1055 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1094 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1056 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1095 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1096 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10571097
1058 const S = struct {1098 const S = struct {
1059 const A = union(enum) { f1 };1099 const A = union(enum) { f1 };
...@@ -1083,6 +1123,7 @@ test "@unionInit on union with tag but no fields" {...@@ -1083,6 +1123,7 @@ test "@unionInit on union with tag but no fields" {
1083 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1084 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1124 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1085 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10861127
1087 const S = struct {1128 const S = struct {
1088 const Type = enum(u8) { no_op = 105 };1129 const Type = enum(u8) { no_op = 105 };
...@@ -1132,6 +1173,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel...@@ -1132,6 +1173,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
1132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1176 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11351177
1136 const T = struct {1178 const T = struct {
1137 const U = union(enum) {1179 const U = union(enum) {
...@@ -1159,6 +1201,7 @@ test "union with no result loc initiated with a runtime value" {...@@ -1159,6 +1201,7 @@ test "union with no result loc initiated with a runtime value" {
1159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1160 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1202 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11621205
1163 const U = union {1206 const U = union {
1164 a: u32,1207 a: u32,
...@@ -1176,6 +1219,7 @@ test "union with a large struct field" {...@@ -1176,6 +1219,7 @@ test "union with a large struct field" {
1176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1220 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11791223
1180 const S = struct {1224 const S = struct {
1181 a: [8]usize,1225 a: [8]usize,
...@@ -1209,6 +1253,7 @@ test "union tag is set when initiated as a temporary value at runtime" {...@@ -1209,6 +1253,7 @@ test "union tag is set when initiated as a temporary value at runtime" {
1209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12121257
1213 const U = union(enum) {1258 const U = union(enum) {
1214 a,1259 a,
...@@ -1227,6 +1272,7 @@ test "extern union most-aligned field is smaller" {...@@ -1227,6 +1272,7 @@ test "extern union most-aligned field is smaller" {
1227 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1274 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1275 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12301276
1231 const U = extern union {1277 const U = extern union {
1232 in6: extern struct {1278 in6: extern struct {
...@@ -1246,6 +1292,7 @@ test "return an extern union from C calling convention" {...@@ -1246,6 +1292,7 @@ test "return an extern union from C calling convention" {
1246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1295 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12491296
1250 const namespace = struct {1297 const namespace = struct {
1251 const S = extern struct {1298 const S = extern struct {
...@@ -1276,6 +1323,7 @@ test "noreturn field in union" {...@@ -1276,6 +1323,7 @@ test "noreturn field in union" {
1276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1324 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1326 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12791327
1280 const U = union(enum) {1328 const U = union(enum) {
1281 a: u32,1329 a: u32,
...@@ -1327,6 +1375,7 @@ test "union and enum field order doesn't match" {...@@ -1327,6 +1375,7 @@ test "union and enum field order doesn't match" {
1327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1328 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1329 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1378 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13301379
1331 const MyTag = enum(u32) {1380 const MyTag = enum(u32) {
1332 b = 1337,1381 b = 1337,
...@@ -1353,6 +1402,7 @@ test "@unionInit uses tag value instead of field index" {...@@ -1353,6 +1402,7 @@ test "@unionInit uses tag value instead of field index" {
1353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1354 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1403 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1405 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13561406
1357 const E = enum(u8) {1407 const E = enum(u8) {
1358 b = 255,1408 b = 255,
...@@ -1379,6 +1429,7 @@ test "union field ptr - zero sized payload" {...@@ -1379,6 +1429,7 @@ test "union field ptr - zero sized payload" {
1379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1429 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1431 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1432 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13821433
1383 const U = union {1434 const U = union {
1384 foo: void,1435 foo: void,
...@@ -1393,6 +1444,7 @@ test "union field ptr - zero sized field" {...@@ -1393,6 +1444,7 @@ test "union field ptr - zero sized field" {
1393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1446 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1447 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13961448
1397 const U = union {1449 const U = union {
1398 foo: void,1450 foo: void,
...@@ -1408,6 +1460,7 @@ test "packed union in packed struct" {...@@ -1408,6 +1460,7 @@ test "packed union in packed struct" {
1408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1409 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1461 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1462 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1463 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14111464
1412 const S = packed struct {1465 const S = packed struct {
1413 nested: packed union {1466 nested: packed union {
...@@ -1425,6 +1478,8 @@ test "packed union in packed struct" {...@@ -1425,6 +1478,8 @@ test "packed union in packed struct" {
1425}1478}
14261479
1427test "Namespace-like union" {1480test "Namespace-like union" {
1481 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1482
1428 const DepType = enum {1483 const DepType = enum {
1429 git,1484 git,
1430 http,1485 http,
...@@ -1458,6 +1513,7 @@ test "union int tag type is properly managed" {...@@ -1458,6 +1513,7 @@ test "union int tag type is properly managed" {
1458test "no dependency loop when function pointer in union returns the union" {1513test "no dependency loop when function pointer in union returns the union" {
1459 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1516 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14611517
1462 const U = union(enum) {1518 const U = union(enum) {
1463 const U = @This();1519 const U = @This();
...@@ -1478,6 +1534,7 @@ test "no dependency loop when function pointer in union returns the union" {...@@ -1478,6 +1534,7 @@ test "no dependency loop when function pointer in union returns the union" {
1478test "union reassignment can use previous value" {1534test "union reassignment can use previous value" {
1479 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1537 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14811538
1482 const U = union {1539 const U = union {
1483 a: u32,1540 a: u32,
...@@ -1493,6 +1550,7 @@ test "packed union with zero-bit field" {...@@ -1493,6 +1550,7 @@ test "packed union with zero-bit field" {
1493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1494 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1551 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1553 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14961554
1497 const S = packed struct {1555 const S = packed struct {
1498 nested: packed union {1556 nested: packed union {
...@@ -1512,6 +1570,7 @@ test "reinterpreting enum value inside packed union" {...@@ -1512,6 +1570,7 @@ test "reinterpreting enum value inside packed union" {
1512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1513 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1514 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1572 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1573 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15151574
1516 const U = packed union {1575 const U = packed union {
1517 tag: enum { a, b },1576 tag: enum { a, b },
...@@ -1529,6 +1588,7 @@ test "reinterpreting enum value inside packed union" {...@@ -1529,6 +1588,7 @@ test "reinterpreting enum value inside packed union" {
15291588
1530test "access the tag of a global tagged union" {1589test "access the tag of a global tagged union" {
1531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1591 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15321592
1533 const U = union(enum) {1593 const U = union(enum) {
1534 a,1594 a,
...@@ -1540,6 +1600,7 @@ test "access the tag of a global tagged union" {...@@ -1540,6 +1600,7 @@ test "access the tag of a global tagged union" {
15401600
1541test "coerce enum literal to union in result loc" {1601test "coerce enum literal to union in result loc" {
1542 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1602 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1603 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15431604
1544 const U = union(enum) {1605 const U = union(enum) {
1545 a,1606 a,
test/behavior/union_with_members.zig+1
...@@ -21,6 +21,7 @@ test "enum with members" {...@@ -21,6 +21,7 @@ test "enum with members" {
21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
25 const a = ET{ .SINT = -42 };26 const a = ET{ .SINT = -42 };
26 const b = ET{ .UINT = 42 };27 const b = ET{ .UINT = 42 };
test/behavior/usingnamespace.zig+1
...@@ -55,6 +55,7 @@ usingnamespace @import("usingnamespace/a.zig");...@@ -55,6 +55,7 @@ usingnamespace @import("usingnamespace/a.zig");
55test "two files usingnamespace import each other" {55test "two files usingnamespace import each other" {
56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5859
59 try expect(@This().ok());60 try expect(@This().ok());
60}61}
test/behavior/var_args.zig+8
...@@ -14,6 +14,8 @@ fn add(args: anytype) i32 {...@@ -14,6 +14,8 @@ fn add(args: anytype) i32 {
14}14}
1515
16test "add arbitrary args" {16test "add arbitrary args" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
17 try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);19 try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
18 try expect(add(.{@as(i32, 1234)}) == 1234);20 try expect(add(.{@as(i32, 1234)}) == 1234);
19 try expect(add(.{}) == 0);21 try expect(add(.{}) == 0);
...@@ -30,6 +32,7 @@ test "send void arg to var args" {...@@ -30,6 +32,7 @@ test "send void arg to var args" {
30test "pass args directly" {32test "pass args directly" {
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3336
34 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);37 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
35 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);38 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);
...@@ -43,6 +46,7 @@ fn addSomeStuff(args: anytype) i32 {...@@ -43,6 +46,7 @@ fn addSomeStuff(args: anytype) i32 {
43test "runtime parameter before var args" {46test "runtime parameter before var args" {
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4650
47 try expect((try extraFn(10, .{})) == 0);51 try expect((try extraFn(10, .{})) == 0);
48 try expect((try extraFn(10, .{false})) == 1);52 try expect((try extraFn(10, .{false})) == 1);
...@@ -99,6 +103,7 @@ test "simple variadic function" {...@@ -99,6 +103,7 @@ test "simple variadic function" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {107 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
103 // https://github.com/ziglang/zig/issues/14096108 // https://github.com/ziglang/zig/issues/14096
104 return error.SkipZigTest;109 return error.SkipZigTest;
...@@ -148,6 +153,7 @@ test "variadic functions" {...@@ -148,6 +153,7 @@ test "variadic functions" {
148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
151 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {157 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
152 // https://github.com/ziglang/zig/issues/14096158 // https://github.com/ziglang/zig/issues/14096
153 return error.SkipZigTest;159 return error.SkipZigTest;
...@@ -191,6 +197,7 @@ test "copy VaList" {...@@ -191,6 +197,7 @@ test "copy VaList" {
191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO198 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {201 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
195 // https://github.com/ziglang/zig/issues/14096202 // https://github.com/ziglang/zig/issues/14096
196 return error.SkipZigTest;203 return error.SkipZigTest;
...@@ -223,6 +230,7 @@ test "unused VaList arg" {...@@ -223,6 +230,7 @@ test "unused VaList arg" {
223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
226 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {234 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
227 // https://github.com/ziglang/zig/issues/14096235 // https://github.com/ziglang/zig/issues/14096
228 return error.SkipZigTest;236 return error.SkipZigTest;
test/behavior/vector.zig+43
...@@ -11,6 +11,7 @@ test "implicit cast vector to array - bool" {...@@ -11,6 +11,7 @@ test "implicit cast vector to array - bool" {
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
15 const S = struct {16 const S = struct {
16 fn doTheTest() !void {17 fn doTheTest() !void {
...@@ -29,6 +30,7 @@ test "vector wrap operators" {...@@ -29,6 +30,7 @@ test "vector wrap operators" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3234
33 const S = struct {35 const S = struct {
34 fn doTheTest() !void {36 fn doTheTest() !void {
...@@ -51,6 +53,7 @@ test "vector bin compares with mem.eql" {...@@ -51,6 +53,7 @@ test "vector bin compares with mem.eql" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5457
55 const S = struct {58 const S = struct {
56 fn doTheTest() !void {59 fn doTheTest() !void {
...@@ -74,6 +77,7 @@ test "vector int operators" {...@@ -74,6 +77,7 @@ test "vector int operators" {
74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7781
78 const S = struct {82 const S = struct {
79 fn doTheTest() !void {83 fn doTheTest() !void {
...@@ -95,6 +99,7 @@ test "vector float operators" {...@@ -95,6 +99,7 @@ test "vector float operators" {
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
98103
99 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {104 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
100 const S = struct {105 const S = struct {
...@@ -118,6 +123,7 @@ test "vector bit operators" {...@@ -118,6 +123,7 @@ test "vector bit operators" {
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
121127
122 const S = struct {128 const S = struct {
123 fn doTheTest() !void {129 fn doTheTest() !void {
...@@ -136,6 +142,7 @@ test "implicit cast vector to array" {...@@ -136,6 +142,7 @@ test "implicit cast vector to array" {
136 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139146
140 const S = struct {147 const S = struct {
141 fn doTheTest() !void {148 fn doTheTest() !void {
...@@ -153,6 +160,7 @@ test "array to vector" {...@@ -153,6 +160,7 @@ test "array to vector" {
153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156164
157 const S = struct {165 const S = struct {
158 fn doTheTest() !void {166 fn doTheTest() !void {
...@@ -173,6 +181,7 @@ test "array to vector with element type coercion" {...@@ -173,6 +181,7 @@ test "array to vector with element type coercion" {
173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
176185
177 const S = struct {186 const S = struct {
178 fn doTheTest() !void {187 fn doTheTest() !void {
...@@ -192,6 +201,7 @@ test "peer type resolution with coercible element types" {...@@ -192,6 +201,7 @@ test "peer type resolution with coercible element types" {
192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
195205
196 const S = struct {206 const S = struct {
197 fn doTheTest() !void {207 fn doTheTest() !void {
...@@ -211,6 +221,7 @@ test "tuple to vector" {...@@ -211,6 +221,7 @@ test "tuple to vector" {
211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
214225
215 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {226 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
216 // Regressed with LLVM 14:227 // Regressed with LLVM 14:
...@@ -240,6 +251,7 @@ test "vector casts of sizes not divisible by 8" {...@@ -240,6 +251,7 @@ test "vector casts of sizes not divisible by 8" {
240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
254 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
243255
244 const S = struct {256 const S = struct {
245 fn doTheTest() !void {257 fn doTheTest() !void {
...@@ -274,6 +286,7 @@ test "vector @splat" {...@@ -274,6 +286,7 @@ test "vector @splat" {
274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO286 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
277290
278 if (builtin.zig_backend == .stage2_llvm and291 if (builtin.zig_backend == .stage2_llvm and
279 builtin.os.tag == .macos)292 builtin.os.tag == .macos)
...@@ -320,6 +333,7 @@ test "load vector elements via comptime index" {...@@ -320,6 +333,7 @@ test "load vector elements via comptime index" {
320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
323337
324 const S = struct {338 const S = struct {
325 fn doTheTest() !void {339 fn doTheTest() !void {
...@@ -341,6 +355,7 @@ test "store vector elements via comptime index" {...@@ -341,6 +355,7 @@ test "store vector elements via comptime index" {
341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO357 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
344359
345 const S = struct {360 const S = struct {
346 fn doTheTest() !void {361 fn doTheTest() !void {
...@@ -368,6 +383,7 @@ test "load vector elements via runtime index" {...@@ -368,6 +383,7 @@ test "load vector elements via runtime index" {
368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
371387
372 const S = struct {388 const S = struct {
373 fn doTheTest() !void {389 fn doTheTest() !void {
...@@ -389,6 +405,7 @@ test "store vector elements via runtime index" {...@@ -389,6 +405,7 @@ test "store vector elements via runtime index" {
389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392409
393 const S = struct {410 const S = struct {
394 fn doTheTest() !void {411 fn doTheTest() !void {
...@@ -411,6 +428,7 @@ test "initialize vector which is a struct field" {...@@ -411,6 +428,7 @@ test "initialize vector which is a struct field" {
411 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO428 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
412 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO430 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
431 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
414432
415 const Vec4Obj = struct {433 const Vec4Obj = struct {
416 data: @Vector(4, f32),434 data: @Vector(4, f32),
...@@ -434,6 +452,7 @@ test "vector comparison operators" {...@@ -434,6 +452,7 @@ test "vector comparison operators" {
434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
435 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
437456
438 const S = struct {457 const S = struct {
439 fn doTheTest() !void {458 fn doTheTest() !void {
...@@ -474,6 +493,7 @@ test "vector division operators" {...@@ -474,6 +493,7 @@ test "vector division operators" {
474 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
475 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
477497
478 const S = struct {498 const S = struct {
479 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {499 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
...@@ -556,6 +576,7 @@ test "vector bitwise not operator" {...@@ -556,6 +576,7 @@ test "vector bitwise not operator" {
556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
558 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
559580
560 const S = struct {581 const S = struct {
561 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {582 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {
...@@ -587,6 +608,7 @@ test "vector shift operators" {...@@ -587,6 +608,7 @@ test "vector shift operators" {
587 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO609 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
589 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
611 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
590612
591 const S = struct {613 const S = struct {
592 fn doTheTestShift(x: anytype, y: anytype) !void {614 fn doTheTestShift(x: anytype, y: anytype) !void {
...@@ -680,6 +702,7 @@ test "vector reduce operation" {...@@ -680,6 +702,7 @@ test "vector reduce operation" {
680 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
681 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
683706
684 const S = struct {707 const S = struct {
685 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {708 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
...@@ -837,6 +860,7 @@ test "mask parameter of @shuffle is comptime scope" {...@@ -837,6 +860,7 @@ test "mask parameter of @shuffle is comptime scope" {
837 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
838 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO862 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
863 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
840864
841 const __v4hi = @Vector(4, i16);865 const __v4hi = @Vector(4, i16);
842 var v4_a = __v4hi{ 0, 0, 0, 0 };866 var v4_a = __v4hi{ 0, 0, 0, 0 };
...@@ -856,6 +880,7 @@ test "saturating add" {...@@ -856,6 +880,7 @@ test "saturating add" {
856 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO880 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO881 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
858 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO882 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
883 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
859884
860 const S = struct {885 const S = struct {
861 fn doTheTest() !void {886 fn doTheTest() !void {
...@@ -887,6 +912,7 @@ test "saturating subtraction" {...@@ -887,6 +912,7 @@ test "saturating subtraction" {
887 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO912 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
888 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
889 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO914 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
915 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
890916
891 const S = struct {917 const S = struct {
892 fn doTheTest() !void {918 fn doTheTest() !void {
...@@ -909,6 +935,7 @@ test "saturating multiplication" {...@@ -909,6 +935,7 @@ test "saturating multiplication" {
909 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO935 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
910 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO937 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
938 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
912939
913 // TODO: once #9660 has been solved, remove this line940 // TODO: once #9660 has been solved, remove this line
914 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;941 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;
...@@ -935,6 +962,7 @@ test "saturating shift-left" {...@@ -935,6 +962,7 @@ test "saturating shift-left" {
935 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO962 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
937 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO964 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
938966
939 const S = struct {967 const S = struct {
940 fn doTheTest() !void {968 fn doTheTest() !void {
...@@ -957,6 +985,7 @@ test "multiplication-assignment operator with an array operand" {...@@ -957,6 +985,7 @@ test "multiplication-assignment operator with an array operand" {
957 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO985 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
958 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO986 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
959 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO987 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
988 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
960989
961 const S = struct {990 const S = struct {
962 fn doTheTest() !void {991 fn doTheTest() !void {
...@@ -977,6 +1006,7 @@ test "@addWithOverflow" {...@@ -977,6 +1006,7 @@ test "@addWithOverflow" {
977 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1006 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
978 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1007 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
979 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1008 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1009 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9801010
981 const S = struct {1011 const S = struct {
982 fn doTheTest() !void {1012 fn doTheTest() !void {
...@@ -1020,6 +1050,7 @@ test "@subWithOverflow" {...@@ -1020,6 +1050,7 @@ test "@subWithOverflow" {
1020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1050 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1021 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1022 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1052 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1053 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10231054
1024 const S = struct {1055 const S = struct {
1025 fn doTheTest() !void {1056 fn doTheTest() !void {
...@@ -1049,6 +1080,7 @@ test "@mulWithOverflow" {...@@ -1049,6 +1080,7 @@ test "@mulWithOverflow" {
1049 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1080 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1050 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1081 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1051 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1082 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1083 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10521084
1053 const S = struct {1085 const S = struct {
1054 fn doTheTest() !void {1086 fn doTheTest() !void {
...@@ -1069,6 +1101,7 @@ test "@shlWithOverflow" {...@@ -1069,6 +1101,7 @@ test "@shlWithOverflow" {
1069 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1071 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1104 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10721105
1073 const S = struct {1106 const S = struct {
1074 fn doTheTest() !void {1107 fn doTheTest() !void {
...@@ -1095,6 +1128,7 @@ test "loading the second vector from a slice of vectors" {...@@ -1095,6 +1128,7 @@ test "loading the second vector from a slice of vectors" {
1095 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1128 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1096 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1097 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1131 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1098 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1132 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10991133
1100 @setRuntimeSafety(false);1134 @setRuntimeSafety(false);
...@@ -1113,6 +1147,7 @@ test "array of vectors is copied" {...@@ -1113,6 +1147,7 @@ test "array of vectors is copied" {
1113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1150 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11161151
1117 const Vec3 = @Vector(3, i32);1152 const Vec3 = @Vector(3, i32);
1118 var points = [_]Vec3{1153 var points = [_]Vec3{
...@@ -1136,6 +1171,7 @@ test "byte vector initialized in inline function" {...@@ -1136,6 +1171,7 @@ test "byte vector initialized in inline function" {
1136 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11391175
1140 if (comptime builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and1176 if (comptime builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and
1141 builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.avx512f)))1177 builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.avx512f)))
...@@ -1182,6 +1218,7 @@ test "zero multiplicand" {...@@ -1182,6 +1218,7 @@ test "zero multiplicand" {
1182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1221 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1185 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11861223
1187 const zeros = @Vector(2, u32){ 0.0, 0.0 };1224 const zeros = @Vector(2, u32){ 0.0, 0.0 };
...@@ -1206,6 +1243,7 @@ test "@intCast to u0" {...@@ -1206,6 +1243,7 @@ test "@intCast to u0" {
1206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1208 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1245 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1246 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12091247
1210 var zeros = @Vector(2, u32){ 0, 0 };1248 var zeros = @Vector(2, u32){ 0, 0 };
1211 const casted = @intCast(@Vector(2, u0), zeros);1249 const casted = @intCast(@Vector(2, u0), zeros);
...@@ -1229,6 +1267,7 @@ test "array operands to shuffle are coerced to vectors" {...@@ -1229,6 +1267,7 @@ test "array operands to shuffle are coerced to vectors" {
1229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1269 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1270 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12321271
1233 const mask = [5]i32{ -1, 0, 1, 2, 3 };1272 const mask = [5]i32{ -1, 0, 1, 2, 3 };
12341273
...@@ -1241,6 +1280,7 @@ test "load packed vector element" {...@@ -1241,6 +1280,7 @@ test "load packed vector element" {
1241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1244 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1284 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1245 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1285 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12461286
...@@ -1253,6 +1293,7 @@ test "store packed vector element" {...@@ -1253,6 +1293,7 @@ test "store packed vector element" {
1253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1296 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1256 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1297 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1257 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1298 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12581299
...@@ -1268,6 +1309,7 @@ test "store to vector in slice" {...@@ -1268,6 +1309,7 @@ test "store to vector in slice" {
1268 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1309 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1310 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12711313
1272 var v = [_]@Vector(3, f32){1314 var v = [_]@Vector(3, f32){
1273 .{ 1, 1, 1 },1315 .{ 1, 1, 1 },
...@@ -1283,6 +1325,7 @@ test "addition of vectors represented as strings" {...@@ -1283,6 +1325,7 @@ test "addition of vectors represented as strings" {
1283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1325 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1285 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1327 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1328 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12861329
1287 const V = @Vector(3, u8);1330 const V = @Vector(3, u8);
1288 const foo: V = "foo".*;1331 const foo: V = "foo".*;
test/behavior/void.zig+2
...@@ -20,6 +20,7 @@ test "compare void with void compile time known" {...@@ -20,6 +20,7 @@ test "compare void with void compile time known" {
2020
21test "iterate over a void slice" {21test "iterate over a void slice" {
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2324
24 var j: usize = 0;25 var j: usize = 0;
25 for (times(10), 0..) |_, i| {26 for (times(10), 0..) |_, i| {
...@@ -36,6 +37,7 @@ test "void optional" {...@@ -36,6 +37,7 @@ test "void optional" {
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3941
40 var x: ?void = {};42 var x: ?void = {};
41 try expect(x != null);43 try expect(x != null);
test/behavior/while.zig+20
...@@ -5,6 +5,7 @@ const assert = std.debug.assert;...@@ -5,6 +5,7 @@ const assert = std.debug.assert;
55
6test "while loop" {6test "while loop" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
9 var i: i32 = 0;10 var i: i32 = 0;
10 while (i < 4) {11 while (i < 4) {
...@@ -38,6 +39,8 @@ fn staticWhileLoop2() i32 {...@@ -38,6 +39,8 @@ fn staticWhileLoop2() i32 {
38}39}
3940
40test "while with continue expression" {41test "while with continue expression" {
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
43
41 var sum: i32 = 0;44 var sum: i32 = 0;
42 {45 {
43 var i: i32 = 0;46 var i: i32 = 0;
...@@ -50,6 +53,8 @@ test "while with continue expression" {...@@ -50,6 +53,8 @@ test "while with continue expression" {
50}53}
5154
52test "while with else" {55test "while with else" {
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
57
53 var sum: i32 = 0;58 var sum: i32 = 0;
54 var i: i32 = 0;59 var i: i32 = 0;
55 var got_else: i32 = 0;60 var got_else: i32 = 0;
...@@ -77,6 +82,8 @@ fn getNumberOrNull() ?i32 {...@@ -77,6 +82,8 @@ fn getNumberOrNull() ?i32 {
77}82}
7883
79test "continue outer while loop" {84test "continue outer while loop" {
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
86
80 testContinueOuter();87 testContinueOuter();
81 comptime testContinueOuter();88 comptime testContinueOuter();
82}89}
...@@ -123,6 +130,7 @@ test "while copies its payload" {...@@ -123,6 +130,7 @@ test "while copies its payload" {
123130
124test "continue and break" {131test "continue and break" {
125 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;132 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;
133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
126134
127 try runContinueAndBreakTest();135 try runContinueAndBreakTest();
128 try expect(continue_and_break_counter == 8);136 try expect(continue_and_break_counter == 8);
...@@ -144,6 +152,7 @@ fn runContinueAndBreakTest() !void {...@@ -144,6 +152,7 @@ fn runContinueAndBreakTest() !void {
144test "while with optional as condition" {152test "while with optional as condition" {
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147156
148 numbers_left = 10;157 numbers_left = 10;
149 var sum: i32 = 0;158 var sum: i32 = 0;
...@@ -156,6 +165,7 @@ test "while with optional as condition" {...@@ -156,6 +165,7 @@ test "while with optional as condition" {
156test "while with optional as condition with else" {165test "while with optional as condition with else" {
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
159169
160 numbers_left = 10;170 numbers_left = 10;
161 var sum: i32 = 0;171 var sum: i32 = 0;
...@@ -172,6 +182,7 @@ test "while with optional as condition with else" {...@@ -172,6 +182,7 @@ test "while with optional as condition with else" {
172182
173test "while with error union condition" {183test "while with error union condition" {
174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
175186
176 numbers_left = 10;187 numbers_left = 10;
177 var sum: i32 = 0;188 var sum: i32 = 0;
...@@ -215,6 +226,7 @@ test "while on optional with else result follow break prong" {...@@ -215,6 +226,7 @@ test "while on optional with else result follow break prong" {
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
218230
219 const result = while (returnOptional(10)) |value| {231 const result = while (returnOptional(10)) |value| {
220 break value;232 break value;
...@@ -242,6 +254,8 @@ fn returnTrue() bool {...@@ -242,6 +254,8 @@ fn returnTrue() bool {
242}254}
243255
244test "return with implicit cast from while loop" {256test "return with implicit cast from while loop" {
257 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
258
245 returnWithImplicitCastFromWhileLoopTest() catch unreachable;259 returnWithImplicitCastFromWhileLoopTest() catch unreachable;
246}260}
247fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {261fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
...@@ -252,6 +266,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {...@@ -252,6 +266,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
252266
253test "while on error union with else result follow else prong" {267test "while on error union with else result follow else prong" {
254 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
255270
256 const result = while (returnError()) |value| {271 const result = while (returnError()) |value| {
257 break value;272 break value;
...@@ -261,6 +276,7 @@ test "while on error union with else result follow else prong" {...@@ -261,6 +276,7 @@ test "while on error union with else result follow else prong" {
261276
262test "while on error union with else result follow break prong" {277test "while on error union with else result follow break prong" {
263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
264280
265 const result = while (returnSuccess(10)) |value| {281 const result = while (returnSuccess(10)) |value| {
266 break value;282 break value;
...@@ -306,6 +322,7 @@ test "while error 2 break statements and an else" {...@@ -306,6 +322,7 @@ test "while error 2 break statements and an else" {
306 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
308 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
309326
310 const S = struct {327 const S = struct {
311 fn entry(opt_t: anyerror!bool, f: bool) !void {328 fn entry(opt_t: anyerror!bool, f: bool) !void {
...@@ -331,6 +348,8 @@ test "continue inline while loop" {...@@ -331,6 +348,8 @@ test "continue inline while loop" {
331}348}
332349
333test "else continue outer while" {350test "else continue outer while" {
351 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
352
334 var i: usize = 0;353 var i: usize = 0;
335 while (true) {354 while (true) {
336 i += 1;355 i += 1;
...@@ -343,6 +362,7 @@ test "else continue outer while" {...@@ -343,6 +362,7 @@ test "else continue outer while" {
343test "try terminating an infinite loop" {362test "try terminating an infinite loop" {
344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
346366
347 // Test coverage for https://github.com/ziglang/zig/issues/13546367 // Test coverage for https://github.com/ziglang/zig/issues/13546
348 const Foo = struct {368 const Foo = struct {
test/behavior/widening.zig+7
...@@ -9,6 +9,7 @@ test "integer widening" {...@@ -9,6 +9,7 @@ test "integer widening" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
13 var a: u8 = 250;14 var a: u8 = 250;
14 var b: u16 = a;15 var b: u16 = a;
...@@ -23,6 +24,8 @@ fn zero() u0 {...@@ -23,6 +24,8 @@ fn zero() u0 {
23 return 0;24 return 0;
24}25}
25test "integer widening u0 to u8" {26test "integer widening u0 to u8" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
26 const a: u8 = zero();29 const a: u8 = zero();
27 try expect(a == 0);30 try expect(a == 0);
28}31}
...@@ -30,6 +33,7 @@ test "integer widening u0 to u8" {...@@ -30,6 +33,7 @@ test "integer widening u0 to u8" {
30test "implicit unsigned integer to signed integer" {33test "implicit unsigned integer to signed integer" {
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3337
34 var a: u8 = 250;38 var a: u8 = 250;
35 var b: i16 = a;39 var b: i16 = a;
...@@ -42,6 +46,7 @@ test "float widening" {...@@ -42,6 +46,7 @@ test "float widening" {
42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4550
46 var a: f16 = 12.34;51 var a: f16 = 12.34;
47 var b: f32 = a;52 var b: f32 = a;
...@@ -62,6 +67,7 @@ test "float widening f16 to f128" {...@@ -62,6 +67,7 @@ test "float widening f16 to f128" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6571
66 var x: f16 = 12.34;72 var x: f16 = 12.34;
67 var y: f128 = x;73 var y: f128 = x;
...@@ -72,6 +78,7 @@ test "cast small unsigned to larger signed" {...@@ -72,6 +78,7 @@ test "cast small unsigned to larger signed" {
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7582
76 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));83 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));
77 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));84 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));