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) {
836836 /// The reference implementation self-hosted compiler of Zig, using the
837837 /// sparc64 backend.
838838 stage2_sparc64 = 10,
839 /// The reference implementation self-hosted compiler of Zig, using the
840 /// spirv backend.
841 stage2_spirv64 = 11,
839842
840843 _,
841844};
lib/std/target.zig+11-1
......@@ -2220,6 +2220,17 @@ pub const Target = struct {
22202220 .longdouble => return 128,
22212221 },
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
22232234 .cloudabi,
22242235 .kfreebsd,
22252236 .lv2,
......@@ -2234,7 +2245,6 @@ pub const Target = struct {
22342245 .contiki,
22352246 .hermit,
22362247 .hurd,
2237 .opencl,
22382248 .glsl450,
22392249 .vulkan,
22402250 .driverkit,
src/Compilation.zig+1
......@@ -5076,6 +5076,7 @@ pub fn getZigBackend(comp: Compilation) std.builtin.CompilerBackend {
50765076 .aarch64, .aarch64_be, .aarch64_32 => .stage2_aarch64,
50775077 .riscv64 => .stage2_riscv64,
50785078 .sparc64 => .stage2_sparc64,
5079 .spirv64 => .stage2_spirv64,
50795080 else => .other,
50805081 };
50815082}
src/codegen/spirv.zig+467-137
......@@ -238,6 +238,7 @@ pub const DeclGen = struct {
238238 else => unreachable,
239239 };
240240 const spv_decl_index = try self.resolveDecl(fn_decl_index);
241 try self.func.decl_deps.put(self.spv.gpa, spv_decl_index, {});
241242 return self.spv.declPtr(spv_decl_index).result_id;
242243 }
243244
......@@ -402,12 +403,44 @@ pub const DeclGen = struct {
402403 return result_id;
403404 }
404405
405 fn genUndef(self: *DeclGen, ty_ref: SpvType.Ref) Error!IdRef {
406 fn constUndef(self: *DeclGen, ty_ref: SpvType.Ref) !IdRef {
406407 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 });
408412 return result_id;
409413 }
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
411444 const IndirectConstantLowering = struct {
412445 const undef = 0xAA;
413446
......@@ -427,7 +460,7 @@ pub const DeclGen = struct {
427460 /// If full, its flushed.
428461 partial_word: std.BoundedArray(u8, @sizeOf(Word)) = .{},
429462 /// 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
432465 /// Utility function to get the section that instructions should be lowered to.
433466 fn section(self: *@This()) *SpvSection {
......@@ -550,14 +583,15 @@ pub const DeclGen = struct {
550583 // just generate an empty pointer. Function pointers are represented by usize for now,
551584 // though.
552585 try self.addInt(Type.usize, Value.initTag(.zero));
586 // TODO: Add dependency
553587 return;
554588 },
555589 .extern_fn => unreachable, // TODO
556590 else => {
557591 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
562596 const decl_id = dg.spv.declPtr(spv_decl_index).result_id;
563597 // TODO: Do we need a storage class cast here?
......@@ -674,7 +708,7 @@ pub const DeclGen = struct {
674708 try self.addConstBool(has_payload);
675709 return;
676710 } else if (ty.optionalReprIsPayload()) {
677 // Optional representation is a nullable pointer.
711 // Optional representation is a nullable pointer or slice.
678712 if (val.castTag(.opt_payload)) |payload| {
679713 try self.lower(payload_ty, payload.data);
680714 } else if (has_payload) {
......@@ -765,21 +799,18 @@ pub const DeclGen = struct {
765799 const is_pl = val.errorUnionIsPayload();
766800 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) {
769804 return try self.lower(Type.anyerror, error_val);
770805 }
771806
772 const payload_align = payload_ty.abiAlignment(target);
773 const error_align = Type.anyerror.abiAlignment(target);
774
775807 const payload_size = payload_ty.abiSize(target);
776808 const error_size = Type.anyerror.abiAlignment(target);
777809 const ty_size = ty.abiSize(target);
778810 const padding = ty_size - payload_size - error_size;
779
780811 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) {
783814 try self.lower(Type.anyerror, error_val);
784815 try self.lower(payload_ty, payload_val);
785816 } else {
......@@ -832,7 +863,8 @@ pub const DeclGen = struct {
832863
833864 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
837869 const section = &self.spv.globals.section;
838870
......@@ -868,7 +900,7 @@ pub const DeclGen = struct {
868900 .u32_ty_id = self.typeId(u32_ty_ref),
869901 .members = std.ArrayList(SpvType.Payload.Struct.Member).init(self.gpa),
870902 .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),
872904 };
873905
874906 defer icl.members.deinit();
......@@ -888,7 +920,6 @@ pub const DeclGen = struct {
888920 .constituents = icl.initializers.items,
889921 });
890922
891 const var_id = self.spv.allocId();
892923 self.spv.globalPtr(spv_decl_index).?.result_id = var_id;
893924 try section.emit(self.spv.gpa, .OpVariable, .{
894925 .id_result_type = self.typeId(ptr_constant_struct_ty_ref),
......@@ -922,7 +953,7 @@ pub const DeclGen = struct {
922953 });
923954 }
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());
926957 self.spv.endGlobal(spv_decl_index, begin_inst);
927958 }
928959
......@@ -948,11 +979,11 @@ pub const DeclGen = struct {
948979
949980 switch (ty.zigTypeTag()) {
950981 .Int => {
951 const int_bits = if (ty.isSignedInt())
952 @bitCast(u64, val.toSignedInt(target))
953 else
954 val.toUnsignedInt(target);
955 try self.genConstInt(result_ty_ref, result_id, int_bits);
982 if (ty.isSignedInt()) {
983 try self.genConstInt(result_ty_ref, result_id, val.toSignedInt(target));
984 } else {
985 try self.genConstInt(result_ty_ref, result_id, val.toUnsignedInt(target));
986 }
956987 },
957988 .Bool => {
958989 const operands = .{ .id_result_type = result_ty_id, .id_result = result_id };
......@@ -978,7 +1009,8 @@ pub const DeclGen = struct {
9781009 false,
9791010 alignment,
9801011 );
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
9831015 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
9841016 .id_result_type = result_ty_id,
......@@ -1260,7 +1292,7 @@ pub const DeclGen = struct {
12601292
12611293 const payload_ty_ref = try self.resolveType(payload_ty, .indirect);
12621294 if (ty.optionalReprIsPayload()) {
1263 // Optional is actually a pointer.
1295 // Optional is actually a pointer or a slice.
12641296 return payload_ty_ref;
12651297 }
12661298
......@@ -1277,18 +1309,16 @@ pub const DeclGen = struct {
12771309 .ErrorUnion => {
12781310 const payload_ty = ty.errorUnionPayload();
12791311 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) {
12811315 return error_ty_ref;
12821316 }
12831317
12841318 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
12891320 var members = std.BoundedArray(SpvType.Payload.Struct.Member, 2){};
1290 // Similar to unions, we're going to put the most aligned member first.
1291 if (error_align > payload_align) {
1321 if (eu_layout.error_first) {
12921322 // Put the error first
12931323 members.appendAssumeCapacity(.{ .ty = error_ty_ref, .name = "error" });
12941324 members.appendAssumeCapacity(.{ .ty = payload_ty_ref, .name = "payload" });
......@@ -1336,6 +1366,34 @@ pub const DeclGen = struct {
13361366 };
13371367 }
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
13391397 /// The SPIR-V backend is not yet advanced enough to support the std testing infrastructure.
13401398 /// In order to be able to run tests, we "temporarily" lower test kernels into separate entry-
13411399 /// points. The test executor will then be able to invoke these to run the tests.
......@@ -1416,7 +1474,7 @@ pub const DeclGen = struct {
14161474 const spv_decl_index = try self.resolveDecl(self.decl_index);
14171475
14181476 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
14211479 if (decl.val.castTag(.function)) |_| {
14221480 assert(decl.ty.zigTypeTag() == .Fn);
......@@ -1500,6 +1558,93 @@ pub const DeclGen = struct {
15001558 }
15011559 }
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
15031648 fn genBody(self: *DeclGen, body: []const Air.Inst.Index) Error!void {
15041649 for (body) |inst| {
15051650 try self.genInst(inst);
......@@ -1543,9 +1688,9 @@ pub const DeclGen = struct {
15431688
15441689 .shl => try self.airShift(inst, .OpShiftLeftLogical),
15451690
1546 .bitcast => try self.airBitcast(inst),
1547 .intcast => try self.airIntcast(inst),
1548 .not => try self.airNot(inst),
1691 .bitcast => try self.airBitcast(inst),
1692 .intcast, .trunc => try self.airIntcast(inst),
1693 .not => try self.airNot(inst),
15491694
15501695 .slice_ptr => try self.airSliceField(inst, 0),
15511696 .slice_len => try self.airSliceField(inst, 1),
......@@ -1573,20 +1718,30 @@ pub const DeclGen = struct {
15731718 .ret_ptr => try self.airAlloc(inst),
15741719 .block => try self.airBlock(inst),
15751720
1576 .load => try self.airLoad(inst),
1577 .store => return self.airStore(inst),
1578
1579 .br => return self.airBr(inst),
1580 .breakpoint => return,
1581 .cond_br => return self.airCondBr(inst),
1582 .constant => unreachable,
1583 .const_ty => unreachable,
1584 .dbg_stmt => return self.airDbgStmt(inst),
1585 .loop => return self.airLoop(inst),
1586 .ret => return self.airRet(inst),
1587 .ret_load => return self.airRetLoad(inst),
1588 .switch_br => return self.airSwitchBr(inst),
1589 .unreach => return self.airUnreach(),
1721 .load => try self.airLoad(inst),
1722 .store, .store_safe => return self.airStore(inst),
1723
1724 .br => return self.airBr(inst),
1725 .breakpoint => return,
1726 .cond_br => return self.airCondBr(inst),
1727 .constant => unreachable,
1728 .const_ty => unreachable,
1729 .dbg_stmt => return self.airDbgStmt(inst),
1730 .loop => return self.airLoop(inst),
1731 .ret => return self.airRet(inst),
1732 .ret_load => return self.airRetLoad(inst),
1733 .@"try" => try self.airTry(inst),
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
15911746 .assembly => try self.airAssembly(inst),
15921747
......@@ -1749,19 +1904,17 @@ pub const DeclGen = struct {
17491904 .float, .bool => unreachable,
17501905 }
17511906
1752 const operand_ty_id = try self.resolveTypeId(operand_ty);
1753 const result_type_id = try self.resolveTypeId(result_ty);
1754
1755 const overflow_member_ty = try self.intType(.unsigned, info.bits);
1756 const overflow_member_ty_id = self.typeId(overflow_member_ty);
1907 // The operand type must be the same as the result type in SPIR-V.
1908 const operand_ty_ref = try self.resolveType(operand_ty, .direct);
1909 const operand_ty_id = self.typeId(operand_ty_ref);
17571910
17581911 const op_result_id = blk: {
17591912 // Construct the SPIR-V result type.
17601913 // It is almost the same as the zig one, except that the fields must be the same type
17611914 // and they must be unsigned.
17621915 const overflow_result_ty_ref = try self.spv.simpleStructType(&.{
1763 .{ .ty = overflow_member_ty, .name = "res" },
1764 .{ .ty = overflow_member_ty, .name = "ov" },
1916 .{ .ty = operand_ty_ref, .name = "res" },
1917 .{ .ty = operand_ty_ref, .name = "ov" },
17651918 });
17661919 const result_id = self.spv.allocId();
17671920 try self.func.body.emit(self.spv.gpa, .OpIAddCarry, .{
......@@ -1775,11 +1928,13 @@ pub const DeclGen = struct {
17751928
17761929 // Now convert the SPIR-V flavor result into a Zig-flavor result.
17771930 // First, extract the two fields.
1778 const unsigned_result = try self.extractField(overflow_member_ty_id, op_result_id, 0);
1779 const overflow = try self.extractField(overflow_member_ty_id, op_result_id, 1);
1931 const unsigned_result = try self.extractField(operand_ty, op_result_id, 0);
1932 const overflow = try self.extractField(operand_ty, op_result_id, 1);
17801933
17811934 // We need to convert the results to the types that Zig expects here.
17821935 // 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?
17831938 const result = try self.bitcast(operand_ty_id, unsigned_result);
17841939
17851940 // The overflow needs to be converted into whatever is used to represent it in Zig.
......@@ -1802,7 +1957,7 @@ pub const DeclGen = struct {
18021957 const result_id = self.spv.allocId();
18031958 const constituents = [_]IdRef{ result, casted_overflow };
18041959 try self.func.body.emit(self.spv.gpa, .OpCompositeConstruct, .{
1805 .id_result_type = result_type_id,
1960 .id_result_type = operand_ty_id,
18061961 .id_result = result_id,
18071962 .constituents = &constituents,
18081963 });
......@@ -1954,24 +2109,14 @@ pub const DeclGen = struct {
19542109 return result_id;
19552110 }
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
19692112 fn airSliceField(self: *DeclGen, inst: Air.Inst.Index, field: u32) !?IdRef {
19702113 if (self.liveness.isUnused(inst)) return null;
19712114 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);
19722117 return try self.extractField(
1973 try self.resolveTypeId(self.air.typeOfIndex(inst)),
1974 try self.resolve(ty_op.operand),
2118 field_ty,
2119 operand_id,
19752120 field,
19762121 );
19772122 }
......@@ -2264,15 +2409,15 @@ pub const DeclGen = struct {
22642409 return null;
22652410
22662411 // Combine the result from the blocks using the Phi instruction.
2267
22682412 const result_id = self.spv.allocId();
22692413
22702414 // TODO: OpPhi is limited in the types that it may produce, such as pointers. Figure out which other types
22712415 // are not allowed to be created from a phi node, and throw an error for those.
22722416 const result_type_id = try self.resolveTypeId(ty);
2273 _ = result_type_id;
22742417
22752418 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
22772422 for (incoming_blocks.items) |incoming| {
22782423 self.func.body.writeOperand(spec.PairIdRefIdRef, .{ incoming.break_value_id, incoming.src_label_id });
......@@ -2340,71 +2485,20 @@ pub const DeclGen = struct {
23402485 return try self.load(ptr_ty, operand);
23412486 }
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
23722488 fn airStore(self: *DeclGen, inst: Air.Inst.Index) !void {
23732489 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
23742490 const ptr_ty = self.air.typeOf(bin_op.lhs);
23752491 const ptr = try self.resolve(bin_op.lhs);
23762492 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);
2379 }
2380
2381 fn store(self: *DeclGen, ptr_ty: Type, ptr: IdRef, value: IdRef) !void {
2382 const value_ty = ptr_ty.childType();
2383 const converted_value = switch (value_ty.zigTypeTag()) {
2384 .Bool => blk: {
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 });
2495 const val_is_undef = if (self.air.value(bin_op.rhs)) |val| val.isUndefDeep() else false;
2496 if (val_is_undef) {
2497 const undef = try self.constUndef(ptr_ty_ref);
2498 try self.store(ptr_ty, ptr, undef);
2499 } else {
2500 try self.store(ptr_ty, ptr, value);
2501 }
24082502 }
24092503
24102504 fn airLoop(self: *DeclGen, inst: Air.Inst.Index) !void {
......@@ -2451,6 +2545,232 @@ pub const DeclGen = struct {
24512545 });
24522546 }
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
24542774 fn airSwitchBr(self: *DeclGen, inst: Air.Inst.Index) !void {
24552775 const target = self.getTarget();
24562776 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
......@@ -2717,19 +3037,29 @@ pub const DeclGen = struct {
27173037 const result_id = self.spv.allocId();
27183038 const callee_id = try self.resolve(pl_op.operand);
27193039
2720 try self.func.body.emitRaw(self.spv.gpa, .OpFunctionCall, 3 + args.len);
2721 self.func.body.writeOperand(spec.IdResultType, result_type_id);
2722 self.func.body.writeOperand(spec.IdResult, result_id);
2723 self.func.body.writeOperand(spec.IdRef, callee_id);
3040 const params = try self.gpa.alloc(spec.IdRef, args.len);
3041 defer self.gpa.free(params);
27243042
3043 var n_params: usize = 0;
27253044 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.
27263048 const arg_id = try self.resolve(arg);
27273049 const arg_ty = self.air.typeOf(arg);
27283050 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;
27313054 }
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
27333063 if (return_type.isNoReturn()) {
27343064 try self.func.body.emit(self.spv.gpa, .OpUnreachable, {});
27353065 }
src/codegen/spirv/Module.zig+8-5
......@@ -40,14 +40,14 @@ pub const Fn = struct {
4040 /// the end of this function definition.
4141 body: Section = .{},
4242 /// The decl dependencies that this function depends on.
43 decl_deps: std.ArrayListUnmanaged(Decl.Index) = .{},
43 decl_deps: std.AutoArrayHashMapUnmanaged(Decl.Index, void) = .{},
4444
4545 /// Reset this function without deallocating resources, so that
4646 /// it may be used to emit code for another function.
4747 pub fn reset(self: *Fn) void {
4848 self.prologue.reset();
4949 self.body.reset();
50 self.decl_deps.items.len = 0;
50 self.decl_deps.clearRetainingCapacity();
5151 }
5252
5353 /// Free the resources owned by this function.
......@@ -358,7 +358,7 @@ pub fn flush(self: *Module, file: std.fs.File) !void {
358358pub fn addFunction(self: *Module, decl_index: Decl.Index, func: Fn) !void {
359359 try self.sections.functions.append(self.gpa, func.prologue);
360360 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());
362362}
363363
364364/// 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 {
393393/// be emitted at this point.
394394pub fn resolveType(self: *Module, ty: Type) !Type.Ref {
395395 const result = try self.type_cache.getOrPut(self.gpa, ty);
396 const index = @intToEnum(Type.Ref, result.index);
397
396398 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;
398401 }
399402
400 return @intToEnum(Type.Ref, result.index);
403 return index;
401404}
402405
403406pub fn resolveTypeId(self: *Module, ty: Type) !IdResultType {
test/behavior.zig+2-1
......@@ -241,7 +241,8 @@ test {
241241 builtin.zig_backend != .stage2_x86_64 and
242242 builtin.zig_backend != .stage2_aarch64 and
243243 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)
245246 {
246247 _ = @import("behavior/bugs/13063.zig");
247248 _ = @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" {
1919 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2223
2324 var runtime_index: usize = 1;
2425 const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];
......@@ -32,6 +33,8 @@ test "default alignment allows unspecified in type syntax" {
3233}
3334
3435test "implicitly decreasing pointer alignment" {
36 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
37
3538 const a: u32 align(4) = 3;
3639 const b: u32 align(8) = 4;
3740 try expect(addUnaligned(&a, &b) == 7);
......@@ -42,6 +45,8 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {
4245}
4346
4447test "@alignCast pointers" {
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
49
4550 var x: u32 align(4) = 1;
4651 expectsOnly1(&x);
4752 try expect(x == 2);
......@@ -214,6 +219,8 @@ test "alignment and size of structs with 128-bit fields" {
214219}
215220
216221test "@ptrCast preserves alignment of bigger source" {
222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
223
217224 var x: u32 align(16) = 1234;
218225 const ptr = @ptrCast(*u8, &x);
219226 try expect(@TypeOf(ptr) == *align(16) u8);
......@@ -231,6 +238,7 @@ fn fnWithAlignedStack() i32 {
231238test "implicitly decreasing slice alignment" {
232239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
233240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
234242
235243 const a: u32 align(4) = 3;
236244 const b: u32 align(8) = 4;
......@@ -256,6 +264,7 @@ test "@alignCast slices" {
256264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
257265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
258266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
259268
260269 var array align(4) = [_]u32{ 1, 1 };
261270 const slice = array[0..];
......@@ -273,6 +282,7 @@ test "return error union with 128-bit integer" {
273282 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
274283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
275284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
276286
277287 try expect(3 == try give());
278288}
......@@ -284,6 +294,7 @@ test "page aligned array on stack" {
284294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
285295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
286296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
287298
288299 if (builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) {
289300 // https://github.com/ziglang/zig/issues/13679
......@@ -329,6 +340,7 @@ test "implicitly decreasing fn alignment" {
329340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
330341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
331342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332344
333345 // function alignment is a compile error on wasm32/wasm64
334346 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -352,6 +364,7 @@ test "@alignCast functions" {
352364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354366 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
367 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
355368
356369 // function alignment is a compile error on wasm32/wasm64
357370 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -395,6 +408,7 @@ test "function align expression depends on generic parameter" {
395408
396409test "function callconv expression depends on generic parameter" {
397410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398412
399413 const S = struct {
400414 fn doTheTest() !void {
......@@ -412,6 +426,7 @@ test "function callconv expression depends on generic parameter" {
412426
413427test "runtime-known array index has best alignment possible" {
414428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
429 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
415430
416431 // take full advantage of over-alignment
417432 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 {
451466}
452467
453468test "alignment of function with c calling convention" {
469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
470
454471 var runtime_nothing = &nothing;
455472 const casted1 = @ptrCast(*const u8, runtime_nothing);
456473 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" {
468485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
470487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
471489
472490 var default_aligned = DefaultAligned{
473491 .nevermind = 1,
......@@ -485,6 +503,7 @@ test "read 128-bit field from default aligned struct in global memory" {
485503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
487505 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
488507
489508 try expect(12 == default_aligned_global.badguy);
490509}
......@@ -493,6 +512,7 @@ test "struct field explicit alignment" {
493512 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
494513 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
495514 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
515 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
496516
497517 const S = struct {
498518 const Node = struct {
......@@ -537,6 +557,7 @@ test "align(N) on functions" {
537557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538558 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
560 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
540561
541562 // This is not supported on MSVC
542563 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) {
......@@ -558,6 +579,7 @@ test "comptime alloc alignment" {
558579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
559580 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
560581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
582 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
561583
562584 comptime var bytes1 = [_]u8{0};
563585 _ = bytes1;
......@@ -570,6 +592,7 @@ test "comptime alloc alignment" {
570592test "@alignCast null" {
571593 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
572594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
573596
574597 var ptr: ?*anyopaque = null;
575598 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);
test/behavior/array.zig+30
......@@ -21,6 +21,7 @@ test "arrays" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
2526 var array: [5]u32 = undefined;
2627
......@@ -48,6 +49,7 @@ fn getArrayLen(a: []const u32) usize {
4849test "array concat with undefined" {
4950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5051 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5153
5254 const S = struct {
5355 fn doTheTest() !void {
......@@ -72,6 +74,7 @@ test "array concat with tuple" {
7274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7578
7679 const array: [2]u8 = .{ 1, 2 };
7780 {
......@@ -86,6 +89,8 @@ test "array concat with tuple" {
8689
8790test "array init with concat" {
8891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
93
8994 const a = 'a';
9095 var i: [4]u8 = [2]u8{ a, 'b' } ++ [2]u8{ 'c', 'd' };
9196 try expect(std.mem.eql(u8, &i, "abcd"));
......@@ -94,6 +99,7 @@ test "array init with concat" {
9499test "array init with mult" {
95100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
96101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
97103
98104 const a = 'a';
99105 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;
......@@ -135,6 +141,7 @@ test "array literal with specified size" {
135141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
138145
139146 var array = [2]u8{ 1, 2 };
140147 try expect(array[0] == 1);
......@@ -156,6 +163,7 @@ test "array len field" {
156163test "array with sentinels" {
157164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
158165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
159167
160168 const S = struct {
161169 fn doTheTest(is_ct: bool) !void {
......@@ -193,6 +201,7 @@ test "nested arrays of strings" {
193201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
195203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
196205
197206 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
198207 for (array_of_strings, 0..) |s, i| {
......@@ -222,6 +231,7 @@ test "nested arrays of integers" {
222231test "implicit comptime in array type size" {
223232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
224233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225235
226236 var arr: [plusOne(10)]bool = undefined;
227237 try expect(arr.len == 11);
......@@ -234,6 +244,7 @@ fn plusOne(x: u32) u32 {
234244test "single-item pointer to array indexing and slicing" {
235245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
236246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237248
238249 try testSingleItemPtrArrayIndexSlice();
239250 comptime try testSingleItemPtrArrayIndexSlice();
......@@ -259,6 +270,7 @@ fn doSomeMangling(array: *[4]u8) void {
259270
260271test "implicit cast zero sized array ptr to slice" {
261272 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
273 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
262274
263275 {
264276 var b = "".*;
......@@ -276,6 +288,7 @@ test "anonymous list literal syntax" {
276288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279292
280293 const S = struct {
281294 fn doTheTest() !void {
......@@ -296,6 +309,7 @@ const Str = struct { a: []Sub };
296309test "set global var array via slice embedded in struct" {
297310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
299313
300314 var s = Str{ .a = s_array[0..] };
301315
......@@ -312,6 +326,7 @@ test "read/write through global variable array of struct fields initialized via
312326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
313327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
314328 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315330
316331 const S = struct {
317332 fn doTheTest() !void {
......@@ -332,6 +347,7 @@ test "read/write through global variable array of struct fields initialized via
332347test "implicit cast single-item pointer" {
333348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
335351
336352 try testImplicitCastSingleItemPtr();
337353 comptime try testImplicitCastSingleItemPtr();
......@@ -351,6 +367,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {
351367test "comptime evaluating function that takes array by value" {
352368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353369 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
354371
355372 const arr = [_]u8{ 1, 2 };
356373 const x = comptime testArrayByValAtComptime(arr);
......@@ -362,6 +379,7 @@ test "comptime evaluating function that takes array by value" {
362379test "runtime initialize array elem and then implicit cast to slice" {
363380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
364381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
365383
366384 var two: i32 = 2;
367385 const x: []const i32 = &[_]i32{two};
......@@ -371,6 +389,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
371389test "array literal as argument to function" {
372390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
373391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
374393
375394 const S = struct {
376395 fn entry(two: i32) !void {
......@@ -399,6 +418,7 @@ test "double nested array to const slice cast in array literal" {
399418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
400419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
402422
403423 const S = struct {
404424 fn entry(two: i32) !void {
......@@ -460,6 +480,7 @@ test "anonymous literal in array" {
460480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
461481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
462482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
463484
464485 const S = struct {
465486 const Foo = struct {
......@@ -484,6 +505,7 @@ test "anonymous literal in array" {
484505test "access the null element of a null terminated array" {
485506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
487509
488510 const S = struct {
489511 fn doTheTest() !void {
......@@ -501,6 +523,7 @@ test "type deduction for array subscript expression" {
501523 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
502524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
503525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
526 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504527
505528 const S = struct {
506529 fn doTheTest() !void {
......@@ -519,6 +542,7 @@ test "sentinel element count towards the ABI size calculation" {
519542 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
520543 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
521544 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
545 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
522546
523547 const S = struct {
524548 fn doTheTest() !void {
......@@ -542,6 +566,7 @@ test "sentinel element count towards the ABI size calculation" {
542566test "zero-sized array with recursive type definition" {
543567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
544568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
569 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
545570
546571 const U = struct {
547572 fn foo(comptime T: type, comptime n: usize) type {
......@@ -564,6 +589,7 @@ test "type coercion of anon struct literal to array" {
564589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
565590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566591 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567593
568594 const S = struct {
569595 const U = union {
......@@ -596,6 +622,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {
596622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
597623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
598624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
599626
600627 const S = struct {
601628 const U = union {
......@@ -634,6 +661,7 @@ test "tuple to array handles sentinel" {
634661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
635662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
636663 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
637665
638666 const S = struct {
639667 const a = .{ 1, 2, 3 };
......@@ -646,6 +674,7 @@ test "array init of container level array variable" {
646674 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
647675 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
648676 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
649678
650679 const S = struct {
651680 var pair: [2]usize = .{ 1, 2 };
......@@ -676,6 +705,7 @@ test "array of array agregate init" {
676705 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
677706 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
678707 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
708 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
679709
680710 var a = [1]u32{11} ** 10;
681711 var b = [1][10]u32{a} ** 2;
test/behavior/asm.zig+4
......@@ -24,6 +24,7 @@ test "module level assembly" {
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
2829 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" {
3839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3940 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4041 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4143
4244 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" {
6163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6467
6568 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" {
7982 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8083 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8286
8387 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" {
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 try testCmpxchg();
1920 comptime try testCmpxchg();
......@@ -39,6 +40,7 @@ fn testCmpxchg() !void {
3940test "fence" {
4041 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4244
4345 var x: i32 = 1234;
4446 @fence(.SeqCst);
......@@ -49,6 +51,7 @@ test "atomicrmw and atomicload" {
4951 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5052 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5255
5356 var data: u8 = 200;
5457 try testAtomicRmw(&data);
......@@ -76,6 +79,7 @@ test "cmpxchg with ptr" {
7679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7780 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7881 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7983
8084 var data1: i32 = 1234;
8185 var data2: i32 = 5678;
......@@ -100,6 +104,7 @@ test "cmpxchg with ignored result" {
100104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
101105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103108
104109 var x: i32 = 1234;
105110
......@@ -115,6 +120,7 @@ test "128-bit cmpxchg" {
115120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
118124
119125 try test_u128_cmpxchg();
120126 comptime try test_u128_cmpxchg();
......@@ -143,6 +149,7 @@ test "cmpxchg on a global variable" {
143149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
144150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
146153
147154 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
148155 // https://github.com/ziglang/zig/issues/10627
......@@ -157,6 +164,7 @@ test "atomic load and rmw with enum" {
157164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
158165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160168
161169 const Value = enum(u8) { a, b, c };
162170 var x = Value.a;
......@@ -173,6 +181,7 @@ test "atomic store" {
173181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
176185
177186 var x: u32 = 0;
178187 @atomicStore(u32, &x, 1, .SeqCst);
......@@ -185,6 +194,7 @@ test "atomic store comptime" {
185194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
186195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
187196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
188198
189199 comptime try testAtomicStore();
190200 try testAtomicStore();
......@@ -203,6 +213,7 @@ test "atomicrmw with floats" {
203213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
204214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
205215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
206217
207218 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
208219 // https://github.com/ziglang/zig/issues/10627
......@@ -231,6 +242,7 @@ test "atomicrmw with ints" {
231242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
245 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
234246
235247 try testAtomicRmwInts();
236248 comptime try testAtomicRmwInts();
......@@ -301,6 +313,7 @@ test "atomicrmw with 128-bit ints" {
301313
302314 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
303315 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
316 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
304317
305318 // TODO "ld.lld: undefined symbol: __sync_lock_test_and_set_16" on -mcpu x86_64
306319 if (builtin.cpu.arch == .x86_64 and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
......@@ -376,6 +389,7 @@ test "atomics with different types" {
376389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
377390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
378391 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
379393
380394 try testAtomicsWithType(bool, true, false);
381395
......@@ -404,6 +418,7 @@ test "return @atomicStore, using it as a void value" {
404418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
405419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
406420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407422
408423 const S = struct {
409424 const A = struct {
test/behavior/basic.zig+55
......@@ -42,6 +42,7 @@ test "truncate to non-power-of-two integers from 128-bit" {
4242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4444 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4546
4647 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010101, 0x01);
4748 try testTrunc(u128, u1, 0xffffffff_ffffffff_ffffffff_01010110, 0x00);
......@@ -81,6 +82,8 @@ test "type equality" {
8182}
8283
8384test "pointer dereferencing" {
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
86
8487 var x = @as(i32, 3);
8588 const y = &x;
8689
......@@ -131,18 +134,21 @@ fn first4KeysOfHomeRow() []const u8 {
131134
132135test "return string from function" {
133136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134138
135139 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
136140}
137141
138142test "hex escape" {
139143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
140145
141146 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
142147}
143148
144149test "multiline string" {
145150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
146152
147153 const s1 =
148154 \\one
......@@ -155,6 +161,7 @@ test "multiline string" {
155161
156162test "multiline string comments at start" {
157163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158165
159166 const s1 =
160167 //\\one
......@@ -167,6 +174,7 @@ test "multiline string comments at start" {
167174
168175test "multiline string comments at end" {
169176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170178
171179 const s1 =
172180 \\one
......@@ -179,6 +187,7 @@ test "multiline string comments at end" {
179187
180188test "multiline string comments in middle" {
181189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
182191
183192 const s1 =
184193 \\one
......@@ -191,6 +200,7 @@ test "multiline string comments in middle" {
191200
192201test "multiline string comments at multiple places" {
193202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194204
195205 const s1 =
196206 \\one
......@@ -204,11 +214,14 @@ test "multiline string comments at multiple places" {
204214}
205215
206216test "string concatenation simple" {
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
218
207219 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
208220}
209221
210222test "array mult operator" {
211223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212225
213226 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
214227}
......@@ -218,6 +231,7 @@ const OpaqueB = opaque {};
218231
219232test "opaque types" {
220233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
221235
222236 try expect(*OpaqueA != *OpaqueB);
223237
......@@ -289,6 +303,8 @@ test "function closes over local const" {
289303}
290304
291305test "volatile load and store" {
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307
292308 var number: i32 = 1234;
293309 const ptr = @as(*volatile i32, &number);
294310 ptr.* += 1;
......@@ -304,6 +320,7 @@ fn fB() []const u8 {
304320
305321test "call function pointer in struct" {
306322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307324
308325 try expect(mem.eql(u8, f3(true), "a"));
309326 try expect(mem.eql(u8, f3(false), "b"));
......@@ -327,6 +344,7 @@ const FnPtrWrapper = struct {
327344
328345test "const ptr from var variable" {
329346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
347 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
330348
331349 var x: u64 = undefined;
332350 var y: u64 = undefined;
......@@ -345,6 +363,7 @@ test "call result of if else expression" {
345363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
346364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
347365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
348367
349368 try expect(mem.eql(u8, f2(true), "a"));
350369 try expect(mem.eql(u8, f2(false), "b"));
......@@ -354,6 +373,8 @@ fn f2(x: bool) []const u8 {
354373}
355374
356375test "variable is allowed to be a pointer to an opaque type" {
376 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
377
357378 var x: i32 = 1234;
358379 _ = hereIsAnOpaqueType(@ptrCast(*OpaqueA, &x));
359380}
......@@ -366,6 +387,7 @@ test "take address of parameter" {
366387 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
367388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
368389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
369391
370392 try testTakeAddressOfParameter(12.34);
371393}
......@@ -375,6 +397,8 @@ fn testTakeAddressOfParameter(f: f32) !void {
375397}
376398
377399test "pointer to void return type" {
400 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401
378402 try testPointerToVoidReturnType();
379403}
380404fn testPointerToVoidReturnType() anyerror!void {
......@@ -391,6 +415,7 @@ test "array 2D const double ptr" {
391415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
393417 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
418 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394419
395420 const rect_2d_vertexes = [_][1]f32{
396421 [_]f32{1.0},
......@@ -404,6 +429,7 @@ test "array 2D const double ptr with offset" {
404429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
406431 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
432 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407433
408434 const rect_2d_vertexes = [_][2]f32{
409435 [_]f32{ 3.0, 4.239 },
......@@ -417,6 +443,7 @@ test "array 3D const double ptr with offset" {
417443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
418444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
419445 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420447
421448 const rect_3d_vertexes = [_][2][2]f32{
422449 [_][2]f32{
......@@ -450,6 +477,7 @@ fn nine() u8 {
450477test "struct inside function" {
451478 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
452479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
453481
454482 try testStructInFn();
455483 comptime try testStructInFn();
......@@ -471,6 +499,7 @@ fn testStructInFn() !void {
471499
472500test "fn call returning scalar optional in equality expression" {
473501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
502 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
474503 try expect(getNull() == null);
475504}
476505
......@@ -481,6 +510,7 @@ fn getNull() ?*i32 {
481510test "global variable assignment with optional unwrapping with var initialized to undefined" {
482511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
483512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
484514
485515 const S = struct {
486516 var data: i32 = 1234;
......@@ -569,11 +599,15 @@ test "comptime cast fn to ptr" {
569599}
570600
571601test "equality compare fn ptrs" {
602 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
603
572604 var a = &emptyFn;
573605 try expect(a == a);
574606}
575607
576608test "self reference through fn ptr field" {
609 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
610
577611 const S = struct {
578612 const A = struct {
579613 f: *const fn (A) u8,
......@@ -591,6 +625,7 @@ test "self reference through fn ptr field" {
591625
592626test "global variable initialized to global variable array element" {
593627 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
628 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
594629
595630 try expect(global_ptr == &gdt[0]);
596631}
......@@ -622,6 +657,7 @@ test "global constant is loaded with a runtime-known index" {
622657
623658test "multiline string literal is null terminated" {
624659 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
660 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625661
626662 const s1 =
627663 \\one
......@@ -636,6 +672,7 @@ test "string escapes" {
636672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
637673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
638674 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
639676
640677 try expectEqualStrings("\"", "\x22");
641678 try expectEqualStrings("\'", "\x27");
......@@ -653,6 +690,8 @@ test "explicit cast optional pointers" {
653690}
654691
655692test "pointer comparison" {
693 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
694
656695 const a = @as([]const u8, "a");
657696 const b = &a;
658697 try expect(ptrEql(b, b));
......@@ -665,6 +704,7 @@ test "string concatenation" {
665704 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
666705 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
667706 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
707 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
668708
669709 const a = "OK" ++ " IT " ++ "WORKED";
670710 const b = "OK IT WORKED";
......@@ -692,6 +732,7 @@ test "comptime manyptr concatenation" {
692732 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
693733 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
694734 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
735 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
695736
696737 const s = "epic";
697738 const actual = manyptrConcat(s);
......@@ -713,6 +754,7 @@ test "result location is optional inside error union" {
713754 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
714755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
716758
717759 const x = maybe(true) catch unreachable;
718760 try expect(x.? == 42);
......@@ -728,6 +770,7 @@ fn maybe(x: bool) anyerror!?u32 {
728770test "auto created variables have correct alignment" {
729771 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
730772 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
773 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
731774
732775 const S = struct {
733776 fn foo(str: [*]const u8) u32 {
......@@ -748,6 +791,7 @@ test "extern variable with non-pointer opaque type" {
748791 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
749792 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
750793 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
794 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
751795
752796 @export(var_to_export, .{ .name = "opaque_extern_var" });
753797 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);
......@@ -830,6 +874,7 @@ test "labeled block implicitly ends in a break" {
830874test "catch in block has correct result location" {
831875 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
832876 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
877 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
833878
834879 const S = struct {
835880 fn open() error{A}!@This() {
......@@ -847,6 +892,8 @@ test "catch in block has correct result location" {
847892}
848893
849894test "labeled block with runtime branch forwards its result location type to break statements" {
895 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
896
850897 const E = enum { a, b };
851898 var a = false;
852899 const e: E = blk: {
......@@ -1004,6 +1051,7 @@ comptime {
10041051
10051052test "switch inside @as gets correct type" {
10061053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10071055
10081056 var a: u32 = 0;
10091057 var b: [2]u32 = undefined;
......@@ -1014,6 +1062,8 @@ test "switch inside @as gets correct type" {
10141062}
10151063
10161064test "inline call of function with a switch inside the return statement" {
1065 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1066
10171067 const S = struct {
10181068 inline fn foo(x: anytype) @TypeOf(x) {
10191069 return switch (x) {
......@@ -1029,6 +1079,7 @@ test "namespace lookup ignores decl causing the lookup" {
10291079 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
10301080 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10311081 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1082 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10321083
10331084 if (builtin.zig_backend == .stage2_llvm) {
10341085 // regressed with LLVM 15
......@@ -1096,6 +1147,7 @@ test "returning an opaque type from a function" {
10961147test "orelse coercion as function argument" {
10971148 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10981149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1150 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10991151
11001152 const Loc = struct { start: i32 = -1 };
11011153 const Container = struct {
......@@ -1112,6 +1164,8 @@ test "orelse coercion as function argument" {
11121164}
11131165
11141166test "runtime-known globals initialized with undefined" {
1167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1168
11151169 const S = struct {
11161170 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
11171171 var vp: [*]u32 = undefined;
......@@ -1131,6 +1185,7 @@ test "arrays and vectors with big integers" {
11311185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11321186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
11331187 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11341189
11351190 // TODO: only aarch64-windows didn't pass in the PR that added this code.
11361191 // figure out why if you can run this target.
test/behavior/bit_shifting.zig+1
......@@ -64,6 +64,7 @@ test "sharded table" {
6464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6768
6869 // realistic 16-way sharding
6970 try testShardedTable(u32, 4, 8);
test/behavior/bitcast.zig+15
......@@ -9,6 +9,7 @@ const native_endian = builtin.target.cpu.arch.endian();
99
1010test "@bitCast iX -> uX (32, 64)" {
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 const bit_values = [_]usize{ 32, 64 };
1415
......@@ -22,6 +23,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {
2223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2324 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2527
2628 const bit_values = [_]usize{ 8, 16, 128 };
2729
......@@ -37,6 +39,7 @@ test "@bitCast iX -> uX exotic integers" {
3739 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3840 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3941 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4043
4144 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
4245
......@@ -83,6 +86,7 @@ test "bitcast uX to bytes" {
8386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8588 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8690
8791 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
8892 inline for (bit_values) |bits| {
......@@ -150,6 +154,8 @@ test "bitcast literal [4]u8 param to u32" {
150154}
151155
152156test "bitcast generates a temporary value" {
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158
153159 var y = @as(u16, 0x55AA);
154160 const x = @bitCast(u16, @bitCast([2]u8, y));
155161 try expect(y == x);
......@@ -159,6 +165,7 @@ test "@bitCast packed structs at runtime and comptime" {
159165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
160166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
162169
163170 const Full = packed struct {
164171 number: u16,
......@@ -184,6 +191,7 @@ test "@bitCast packed structs at runtime and comptime" {
184191test "@bitCast extern structs at runtime and comptime" {
185192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
186193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
187195
188196 const Full = extern struct {
189197 number: u16,
......@@ -216,6 +224,7 @@ test "bitcast packed struct to integer and back" {
216224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
218226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219228
220229 const LevelUpMove = packed struct {
221230 move_id: u9,
......@@ -237,6 +246,7 @@ test "bitcast packed struct to integer and back" {
237246test "implicit cast to error union by returning" {
238247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
239248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
240250
241251 const S = struct {
242252 fn entry() !void {
......@@ -292,6 +302,7 @@ test "@bitCast packed struct of floats" {
292302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
293303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
294304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
295306
296307 const Foo = packed struct {
297308 a: f16 = 0,
......@@ -328,6 +339,7 @@ test "comptime @bitCast packed struct to int and back" {
328339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
329340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
330341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
331343
332344 if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) {
333345 // https://github.com/ziglang/zig/issues/13782
......@@ -368,6 +380,7 @@ test "comptime bitcast with fields following f80" {
368380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
369381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
370382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
371384
372385 const FloatT = extern struct { f: f80, x: u128 align(16) };
373386 const x: FloatT = .{ .f = 0.5, .x = 123 };
......@@ -383,6 +396,7 @@ test "bitcast vector to integer and back" {
383396 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
384397 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
385398 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
386400
387401 const arr: [16]bool = [_]bool{ true, false } ++ [_]bool{true} ** 14;
388402 var x = @splat(16, true);
......@@ -408,6 +422,7 @@ test "bitcast nan float does modify signaling bit" {
408422 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
409423 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
410424 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411426 // TODO: https://github.com/ziglang/zig/issues/14366
412427 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;
55
66test "@bitReverse large exotic integer" {
77 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 try expect(@bitReverse(@as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
1011}
......@@ -15,6 +16,7 @@ test "@bitReverse" {
1516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1617 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1718 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
1921 comptime try testBitReverse();
2022 try testBitReverse();
......@@ -100,6 +102,7 @@ test "bitReverse vectors u8" {
100102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
102104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103106
104107 comptime try vector8();
105108 try vector8();
......@@ -118,6 +121,7 @@ test "bitReverse vectors u16" {
118121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
120123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
121125
122126 comptime try vector16();
123127 try vector16();
......@@ -136,6 +140,7 @@ test "bitReverse vectors u24" {
136140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
138142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139144
140145 comptime try vector24();
141146 try vector24();
test/behavior/bool.zig+3
......@@ -1,4 +1,5 @@
11const std = @import("std");
2const builtin = @import("builtin");
23const expect = std.testing.expect;
34
45test "bool literals" {
......@@ -7,6 +8,8 @@ test "bool literals" {
78}
89
910test "cast bool to int" {
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12
1013 const t = true;
1114 const f = false;
1215 try expect(@boolToInt(t) == @as(u32, 1));
test/behavior/bugs/10138.zig+1
......@@ -5,6 +5,7 @@ test "registers get overwritten when ignoring return" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
77 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
910 const fd = open();
1011 _ = write(fd, "a", 1);
test/behavior/bugs/10147.zig+1
......@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 var x: u32 = 0x1;
1213 var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 };
test/behavior/bugs/10684.zig+1
......@@ -7,6 +7,7 @@ test "slicing slices" {
77 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 const foo = "1234";
1213 const bar = foo[0..4];
test/behavior/bugs/1076.zig+1
......@@ -6,6 +6,7 @@ const expect = std.testing.expect;
66test "comptime code should not modify constant data" {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 try testCastPtrOfArrayToSliceAndPtr();
1112 comptime try testCastPtrOfArrayToSliceAndPtr();
test/behavior/bugs/10970.zig+1
......@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 var cond = true;
1213 const opt = while (cond) {
test/behavior/bugs/11046.zig+1
......@@ -13,6 +13,7 @@ test "fixed" {
1313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 bar() catch |err| switch (err) {
1819 error.Foo => {}, // error: expected (inferred error set of bar), found error{Foo}
test/behavior/bugs/11100.zig+4
......@@ -1,4 +1,6 @@
11const std = @import("std");
2const builtin = @import("builtin");
3
24pub fn do() bool {
35 inline for (.{"a"}) |_| {
46 if (true) return false;
......@@ -7,5 +9,7 @@ pub fn do() bool {
79}
810
911test "bug" {
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13
1014 try std.testing.expect(!do());
1115}
test/behavior/bugs/11139.zig+1
......@@ -6,6 +6,7 @@ test "store array of array of structs at comptime" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 try expect(storeArrayOfArrayOfStructs() == 15);
1112 comptime try expect(storeArrayOfArrayOfStructs() == 15);
test/behavior/bugs/11165.zig+2
......@@ -2,6 +2,7 @@ const builtin = @import("builtin");
22
33test "bytes" {
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
67 const S = struct {
78 a: u32,
......@@ -23,6 +24,7 @@ test "bytes" {
2324
2425test "aggregate" {
2526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2628
2729 const S = struct {
2830 a: u32,
test/behavior/bugs/11179.zig+1
......@@ -1,4 +1,5 @@
11const std = @import("std");
2const builtin = @import("builtin");
23const Type = std.builtin.Type;
34
45test "Tuple" {
test/behavior/bugs/11213.zig+2
......@@ -3,6 +3,8 @@ const builtin = @import("builtin");
33const testing = std.testing;
44
55test {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
68 const g: error{Test}!void = error.Test;
79
810 var v: u32 = 0;
test/behavior/bugs/11787.zig+1
......@@ -7,6 +7,7 @@ test "slicing zero length array field of struct" {
77 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 const S = struct {
1213 a: [0]usize,
test/behavior/bugs/11816.zig+1
......@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44test {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
89 var x: u32 = 3;
910 const val: usize = while (true) switch (x) {
test/behavior/bugs/11995.zig+2
......@@ -22,6 +22,8 @@ test {
2222 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26
2527 var string: [5]u8 = "hello".*;
2628 const arg_data = wuffs_base__slice_u8{ .ptr = @ptrCast([*c]u8, &string), .len = string.len };
2729 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 {
1010 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
1315 var t: T = .{ .next = null };
1416 try std.testing.expect(t.next == null);
1517}
test/behavior/bugs/12025.zig+4
......@@ -1,4 +1,8 @@
1const builtin = @import("builtin");
2
13test {
4 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5
26 comptime var st = .{
37 .foo = &1,
48 .bar = &2,
test/behavior/bugs/12033.zig+3
......@@ -1,6 +1,9 @@
11const std = @import("std");
2const builtin = @import("builtin");
23
34test {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
47 const string = "Hello!\x00World!";
58 try std.testing.expect(@TypeOf(string) == *const [13:0]u8);
69
test/behavior/bugs/12043.zig+3
......@@ -1,4 +1,5 @@
11const std = @import("std");
2const builtin = @import("builtin");
23const expect = std.testing.expect;
34
45var ok = false;
......@@ -6,6 +7,8 @@ fn foo(x: anytype) void {
67 ok = x;
78}
89test {
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
912 const x = &foo;
1013 x(true);
1114 try expect(ok);
test/behavior/bugs/12051.zig+2
......@@ -7,6 +7,8 @@ test {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
1012 const x = X{};
1113 try std.testing.expectEqual(@as(u16, 0), x.y.a);
1214 try std.testing.expectEqual(false, x.y.b);
test/behavior/bugs/12092.zig+2
......@@ -18,6 +18,8 @@ test {
1818 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22
2123 var baz: u32 = 24;
2224 try takeFoo(&.{
2325 .a = .{
test/behavior/bugs/12119.zig+2
......@@ -9,6 +9,8 @@ test {
99 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13
1214 const zerox32: u8x32 = [_]u8{0} ** 32;
1315 const bigsum: u32x8 = @bitCast(u32x8, zerox32);
1416 try std.testing.expectEqual(0, @reduce(.Add, bigsum));
test/behavior/bugs/12142.zig+2
......@@ -23,6 +23,8 @@ test {
2323 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
27
2628 const test_struct = Test{
2729 .holders = &.{
2830 Holder{
test/behavior/bugs/12450.zig+2
......@@ -14,6 +14,8 @@ test {
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1719 var f1: *align(16) Foo = @alignCast(16, @ptrCast(*align(1) Foo, &buffer[0]));
1820 try expect(@typeInfo(@TypeOf(f1)).Pointer.alignment == 16);
1921 try expect(@ptrToInt(f1) == @ptrToInt(&f1.a));
test/behavior/bugs/12551.zig+1
......@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44test {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
89 try std.testing.expect(for ([1]u8{0}) |x| {
910 if (x == 0) break true;
test/behavior/bugs/12571.zig+1
......@@ -14,6 +14,7 @@ const Entry = packed struct {
1414test {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 const frame = Frame{ .num = 0x7FDE };
1920 var entry = Entry{ .other = 0, .frame = .{ .num = 0xFFFFF } };
test/behavior/bugs/12644.zig+3
......@@ -1,4 +1,5 @@
11const std = @import("std");
2const builtin = @import("builtin");
23
34inline fn foo(comptime T: type) !T {
45 return error.AnError;
......@@ -9,6 +10,8 @@ fn main0() !void {
910}
1011
1112test "issue12644" {
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
1215 main0() catch |e| {
1316 try std.testing.expect(e == error.AnError);
1417 };
test/behavior/bugs/12680.zig+1
......@@ -11,6 +11,7 @@ test "export a function twice" {
1111 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415 if (builtin.os.tag == .macos and builtin.zig_backend == .stage2_c) {
1516 // TODO: test.c: error: aliases are not supported on darwin
1617 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
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
2021 try std.testing.expect(s.f.?() == 1234);
2122}
test/behavior/bugs/12776.zig+1
......@@ -32,6 +32,7 @@ test {
3232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3536 if (builtin.zig_backend == .stage2_x86_64) {
3637 // Careful enabling this test, fails randomly.
3738 return error.SkipZigTest;
test/behavior/bugs/12801-2.zig+1
......@@ -18,6 +18,7 @@ test {
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
2223 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };
2324 try std.testing.expect(a.capacity() == 32);
test/behavior/bugs/12890.zig+1
......@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {
1111test {
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 var arr: [8]u3 = undefined;
1617 a(&arr, 5);
test/behavior/bugs/12891.zig+14
......@@ -7,21 +7,29 @@ test "issue12891" {
77 try std.testing.expect(i < f);
88}
99test "nan" {
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11
1012 const f = comptime std.math.nan(f64);
1113 var i: usize = 0;
1214 try std.testing.expect(!(f < i));
1315}
1416test "inf" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1519 const f = comptime std.math.inf(f64);
1620 var i: usize = 0;
1721 try std.testing.expect(f > i);
1822}
1923test "-inf < 0" {
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
25
2026 const f = comptime -std.math.inf(f64);
2127 var i: usize = 0;
2228 try std.testing.expect(f < i);
2329}
2430test "inf >= 1" {
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
32
2533 const f = comptime std.math.inf(f64);
2634 var i: usize = 1;
2735 try std.testing.expect(f >= i);
......@@ -29,6 +37,7 @@ test "inf >= 1" {
2937test "isNan(nan * 1)" {
3038 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3241
3342 const nan_times_one = comptime std.math.nan(f64) * 1;
3443 try std.testing.expect(std.math.isNan(nan_times_one));
......@@ -36,6 +45,7 @@ test "isNan(nan * 1)" {
3645test "runtime isNan(nan * 1)" {
3746 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3847 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3949
4050 const nan_times_one = std.math.nan(f64) * 1;
4151 try std.testing.expect(std.math.isNan(nan_times_one));
......@@ -43,6 +53,7 @@ test "runtime isNan(nan * 1)" {
4353test "isNan(nan * 0)" {
4454 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4657
4758 const nan_times_zero = comptime std.math.nan(f64) * 0;
4859 try std.testing.expect(std.math.isNan(nan_times_zero));
......@@ -52,6 +63,7 @@ test "isNan(nan * 0)" {
5263test "isNan(inf * 0)" {
5364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5567
5668 const inf_times_zero = comptime std.math.inf(f64) * 0;
5769 try std.testing.expect(std.math.isNan(inf_times_zero));
......@@ -61,6 +73,7 @@ test "isNan(inf * 0)" {
6173test "runtime isNan(nan * 0)" {
6274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6477
6578 const nan_times_zero = std.math.nan(f64) * 0;
6679 try std.testing.expect(std.math.isNan(nan_times_zero));
......@@ -70,6 +83,7 @@ test "runtime isNan(nan * 0)" {
7083test "runtime isNan(inf * 0)" {
7184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7285 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7387
7488 const inf_times_zero = std.math.inf(f64) * 0;
7589 try std.testing.expect(std.math.isNan(inf_times_zero));
test/behavior/bugs/12928.zig+8
......@@ -1,5 +1,7 @@
11const std = @import("std");
2const builtin = @import("builtin");
23const expect = std.testing.expect;
4
35const A = extern struct {
46 value: *volatile B,
57};
......@@ -7,11 +9,15 @@ const B = extern struct {
79 a: u32,
810 b: i32,
911};
12
1013test {
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
1116 var a: *A = undefined;
1217 try expect(@TypeOf(&a.value.a) == *volatile u32);
1318 try expect(@TypeOf(&a.value.b) == *volatile i32);
1419}
20
1521const C = extern struct {
1622 value: *volatile D,
1723};
......@@ -20,6 +26,8 @@ const D = extern union {
2026 b: i32,
2127};
2228test {
29 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
30
2331 var c: *C = undefined;
2432 try expect(@TypeOf(&c.value.a) == *volatile u32);
2533 try expect(@TypeOf(&c.value.b) == *volatile i32);
test/behavior/bugs/12972.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 const c: u8 = 42;
1112 f(&[_:null]?u8{c});
test/behavior/bugs/12984.zig+1
......@@ -14,6 +14,7 @@ pub const CustomDraw = DeleagateWithContext(fn (?OnConfirm) void);
1414test "simple test" {
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 var c: CustomDraw = undefined;
1920 _ = c;
test/behavior/bugs/13064.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 var x: [10][10]u32 = undefined;
1112
test/behavior/bugs/13065.zig+1
......@@ -11,6 +11,7 @@ test {
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 var x = U{ .array = undefined };
1617
test/behavior/bugs/13068.zig+1
......@@ -9,6 +9,7 @@ test {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 list.items.len = 0;
1415}
test/behavior/bugs/13069.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;
1112
test/behavior/bugs/13113.zig+2
......@@ -11,6 +11,8 @@ test {
1111 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
1416 const foo = Foo{
1517 .a = 1,
1618 .b = 2,
test/behavior/bugs/13128.zig+1
......@@ -17,6 +17,7 @@ test "runtime union init, most-aligned field != largest" {
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
2122 var x: u8 = 1;
2223 try foo(.{ .x = x });
test/behavior/bugs/13159.zig+2
......@@ -11,6 +11,8 @@ const Bar = packed struct {
1111
1212test {
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15
1416 var foo = Bar.Baz.fizz;
1517 try expect(foo == .fizz);
1618}
test/behavior/bugs/13285.zig+1
......@@ -6,6 +6,7 @@ const Crasher = struct {
66
77test {
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 var a: Crasher = undefined;
1112 var crasher_ptr = &a;
test/behavior/bugs/13366.zig+1
......@@ -18,6 +18,7 @@ test {
1818 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
2223 var a: u32 = 16;
2324 var reason = .{ .c_import = .{ .a = a } };
test/behavior/bugs/13664.zig+1
......@@ -18,6 +18,7 @@ test {
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
2223 const timestamp: i64 = value();
2324 const id = ID{ .fields = Fields{
test/behavior/bugs/13785.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 var a: u8 = 0;
1112 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" {
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1818 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
2122 var as = [_]A{
2223 A{ .B = B{ .D = 1 } },
test/behavior/bugs/1442.zig+2
......@@ -10,6 +10,8 @@ test "const error union field alignment" {
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
1315 var union_or_err: anyerror!Union = Union{ .Color = 1234 };
1416 try std.testing.expect((union_or_err catch unreachable).Color == 1234);
1517}
test/behavior/bugs/14854.zig+3
......@@ -1,6 +1,9 @@
11const testing = @import("std").testing;
2const builtin = @import("builtin");
23
34test {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
47 try testing.expect(getGeneric(u8, getU8) == 123);
58}
69
test/behavior/bugs/1500.zig+2
......@@ -6,6 +6,8 @@ const A = struct {
66const B = *const fn (A) void;
77
88test "allow these dependencies" {
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10
911 var a: A = undefined;
1012 var b: B = undefined;
1113 if (false) {
test/behavior/bugs/1607.zig+2
......@@ -14,6 +14,8 @@ test "slices pointing at the same address as global array." {
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1719 try checkAddress(&a);
1820 comptime try checkAddress(&a);
1921}
test/behavior/bugs/1735.zig+2
......@@ -44,6 +44,8 @@ const a = struct {
4444test "initialization" {
4545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4646 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
48
4749 var t = a.init();
4850 try std.testing.expect(t.foo.len == 0);
4951}
test/behavior/bugs/1741.zig+1
......@@ -5,6 +5,7 @@ test "fixed" {
55 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 const x: f32 align(128) = 12.34;
1011 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" {
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {
1213 return error.SkipZigTest; // TODO
test/behavior/bugs/1914.zig+4
......@@ -12,6 +12,8 @@ const b_list: []B = &[_]B{};
1212const a = A{ .b_list_pointer = &b_list };
1313
1414test "segfault bug" {
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
16
1517 const assert = std.debug.assert;
1618 const obj = B{ .a_pointer = &a };
1719 assert(obj.a_pointer == &a); // this makes zig crash
......@@ -28,5 +30,7 @@ pub const B2 = struct {
2830var b_value = B2{ .pointer_array = &[_]*A2{} };
2931
3032test "basic stuff" {
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
34
3135 std.debug.assert(&b_value == &b_value);
3236}
test/behavior/bugs/2006.zig+1
......@@ -7,6 +7,7 @@ const S = struct {
77};
88test "bug 2006" {
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 var a: S = undefined;
1213 a = S{ .p = undefined };
test/behavior/bugs/2114.zig+1
......@@ -14,6 +14,7 @@ test "fixed" {
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 try testCtz();
1920 comptime try testCtz();
test/behavior/bugs/2578.zig+1
......@@ -15,6 +15,7 @@ test "fixed" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1819
1920 bar(t);
2021}
test/behavior/bugs/2622.zig+1
......@@ -7,6 +7,7 @@ test "reslice of undefined global var slice" {
77 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 var mem: [100]u8 = [_]u8{0} ** 100;
1213 buf = &mem;
test/behavior/bugs/2692.zig+1
......@@ -7,6 +7,7 @@ fn foo(a: []u8) void {
77test "address of 0 length array" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 var pt: [0]u8 = undefined;
1213 foo(&pt);
test/behavior/bugs/3007.zig+1
......@@ -22,6 +22,7 @@ test "fixed" {
2222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2526
2627 default_foo = get_foo() catch null; // This Line
2728 try std.testing.expect(!default_foo.?.free);
test/behavior/bugs/3046.zig+1
......@@ -16,6 +16,7 @@ test "fixed" {
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1717 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1818 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
2021 some_struct = SomeStruct{
2122 .field = couldFail() catch @as(i32, 0),
test/behavior/bugs/3112.zig+2
......@@ -15,6 +15,8 @@ test "zig test crash" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
1820 var global: State = undefined;
1921 global.enter = prev;
2022 global.enter(null);
test/behavior/bugs/3367.zig+2
......@@ -10,6 +10,8 @@ const Mixin = struct {
1010};
1111
1212test "container member access usingnamespace decls" {
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
1315 var foo = Foo{};
1416 foo.two();
1517}
test/behavior/bugs/3742.zig+2
......@@ -40,5 +40,7 @@ test "fixed" {
4040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4141 if (builtin.zig_backend == .stage2_llvm and
4242 builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
44
4345 ArgSerializer.serializeCommand(GET.init("banana"));
4446}
test/behavior/bugs/3779.zig+5
......@@ -8,6 +8,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
88test "@tagName() returns a string literal" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
1314 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
......@@ -21,6 +22,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
2122test "@errorName() returns a string literal" {
2223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2426
2527 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
2628 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
......@@ -34,6 +36,7 @@ const ptr_type_name: [*:0]const u8 = type_name;
3436test "@typeName() returns a string literal" {
3537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3740
3841 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
3942 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
......@@ -47,6 +50,7 @@ const expected_contents = "hello zig\n";
4750test "@embedFile() returns a string literal" {
4851 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4952 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5054
5155 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
5256 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
......@@ -61,6 +65,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
6165test "@src() returns a struct containing 0-terminated string slices" {
6266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6367 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6469
6570 const src = testFnForSrc();
6671 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
test/behavior/bugs/421.zig+1
......@@ -5,6 +5,7 @@ test "bitCast to array" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 comptime try testBitCastArray();
1011 try testBitCastArray();
test/behavior/bugs/4328.zig+5
......@@ -17,6 +17,8 @@ const S = extern struct {
1717};
1818
1919test "Extern function calls in @TypeOf" {
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
21
2022 const Test = struct {
2123 fn test_fn_1(a: anytype, b: anytype) @TypeOf(c_printf("%d %s\n", a, b)) {
2224 return 0;
......@@ -37,6 +39,8 @@ test "Extern function calls in @TypeOf" {
3739}
3840
3941test "Peer resolution of extern function calls in @TypeOf" {
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
43
4044 const Test = struct {
4145 fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {
4246 return 0;
......@@ -54,6 +58,7 @@ test "Peer resolution of extern function calls in @TypeOf" {
5458test "Extern function calls, dereferences and field access in @TypeOf" {
5559 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5660 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5762
5863 const Test = struct {
5964 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
test/behavior/bugs/4954.zig+1
......@@ -8,6 +8,7 @@ test "crash" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 var buf: [4096]u8 = undefined;
1314 f(&buf);
test/behavior/bugs/529.zig+1
......@@ -16,6 +16,7 @@ test "issue 529 fixed" {
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920
2021 @import("529_other_file.zig").issue529(null);
2122 issue529(null);
test/behavior/bugs/5398.zig+1
......@@ -22,6 +22,7 @@ test "assignment of field with padding" {
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2526
2627 renderable = Renderable{
2728 .mesh = Mesh{ .id = 0 },
test/behavior/bugs/6047.zig+1
......@@ -14,6 +14,7 @@ test "`try`ing an if/else expression" {
1414 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 try @import("std").testing.expectError(error.Test, getError2());
1920}
test/behavior/bugs/6456.zig+1
......@@ -13,6 +13,7 @@ const text =
1313test "issue 6456" {
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 comptime {
1819 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
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1719 try foo(false, true);
1820}
1921
test/behavior/bugs/6781.zig+1
......@@ -68,6 +68,7 @@ test "fixed" {
6868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6969 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7070 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7172
7273 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;
7374 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" {
66 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 var u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
1112
test/behavior/bugs/6947.zig+1
......@@ -9,6 +9,7 @@ test {
99 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 var slice: []void = undefined;
1415 destroy(&slice[0]);
test/behavior/bugs/7047.zig+3
......@@ -1,4 +1,5 @@
11const std = @import("std");
2const builtin = @import("builtin");
23
34const U = union(enum) {
45 T: type,
......@@ -14,6 +15,8 @@ fn S(comptime query: U) type {
1415}
1516
1617test "compiler doesn't consider equal unions with different 'type' payload" {
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
1720 const s1 = S(U{ .T = u32 }).tag();
1821 try std.testing.expectEqual(u32, s1);
1922
test/behavior/bugs/718.zig+1
......@@ -13,6 +13,7 @@ test "zero keys with @memset" {
1313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 @memset(@ptrCast([*]u8, &keys)[0..@sizeOf(@TypeOf(keys))], 0);
1819 try expect(!keys.up);
test/behavior/bugs/7187.zig+2
......@@ -3,6 +3,8 @@ const builtin = @import("builtin");
33const expect = std.testing.expect;
44
55test "miscompilation with bool return type" {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
68 var x: usize = 1;
79 var y: bool = getFalse();
810 _ = y;
test/behavior/bugs/726.zig+2
......@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {
55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 const c: u8 = 4;
1011 var x: ?*const u8 = @ptrCast(?*const u8, &c);
......@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {
1516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1617 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1718 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
1921 const container = struct {
2022 var c: u8 = 4;
test/behavior/bugs/7325.zig+1
......@@ -82,6 +82,7 @@ test {
8282 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8484 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8586
8687 var param: ParamType = .{
8788 .one_of = .{ .name = "name" },
test/behavior/bugs/8277.zig+2
......@@ -2,6 +2,8 @@ const std = @import("std");
22const builtin = @import("builtin");
33
44test "@sizeOf reified union zero-size payload fields" {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
57 comptime {
68 try std.testing.expect(0 == @sizeOf(@Type(@typeInfo(union {}))));
79 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 {
3131
3232test "comptime struct return should not return the same instance" {
3333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3435
3536 //the first parameter must be passed by reference to trigger the bug
3637 //a second parameter is required to trigger the bug
test/behavior/bugs/8646.zig+1
......@@ -11,6 +11,7 @@ test {
1111 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 try std.testing.expect(array[0].len == 1);
1617 try std.testing.expectEqualStrings("hello", array[0][0]);
test/behavior/bugs/920.zig+1
......@@ -62,6 +62,7 @@ test "bug 920 fixed" {
6262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6566
6667 const NormalDist1 = blk: {
6768 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 {
4747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4848 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4949 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
5152 var flags = A{
5253 .a = false,
test/behavior/byteswap.zig+4
......@@ -8,6 +8,7 @@ test "@byteSwap integers" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 const ByteSwapIntTest = struct {
1314 fn run() !void {
......@@ -66,6 +67,7 @@ test "@byteSwap vectors u8" {
6667 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6768 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6869 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6971
7072 comptime try vector8();
7173 try vector8();
......@@ -84,6 +86,7 @@ test "@byteSwap vectors u16" {
8486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8587 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8790
8891 comptime try vector16();
8992 try vector16();
......@@ -102,6 +105,7 @@ test "@byteSwap vectors u24" {
102105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
103106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
104107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105109
106110 comptime try vector24();
107111 try vector24();
test/behavior/byval_arg_var.zig+1
......@@ -5,6 +5,7 @@ var result: []const u8 = "wrong";
55
66test "pass string literal byvalue to a generic var param" {
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 start();
1011 blowUpStack(10);
test/behavior/call.zig+12
......@@ -24,6 +24,7 @@ test "basic invocations" {
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
2829 const foo = struct {
2930 fn foo() i32 {
......@@ -56,6 +57,7 @@ test "tuple parameters" {
5657 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5859 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
6062 const add = struct {
6163 fn add(a: i32, b: i32) i32 {
......@@ -88,6 +90,7 @@ test "result location of function call argument through runtime condition and st
8890 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9092 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9194
9295 const E = enum { a, b };
9396 const S = struct {
......@@ -106,6 +109,7 @@ test "result location of function call argument through runtime condition and st
106109
107110test "function call with 40 arguments" {
108111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
109113
110114 const S = struct {
111115 fn doTheTest(thirty_nine: i32) !void {
......@@ -265,6 +269,7 @@ test "forced tail call" {
265269 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
266270 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
267271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
268273
269274 if (builtin.zig_backend == .stage2_llvm) {
270275 // Only attempt this test on targets we know have tail call support in LLVM.
......@@ -298,6 +303,7 @@ test "inline call preserves tail call" {
298303 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
299304 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
300305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301307
302308 if (builtin.zig_backend == .stage2_llvm) {
303309 // Only attempt this test on targets we know have tail call support in LLVM.
......@@ -329,6 +335,7 @@ test "inline call preserves tail call" {
329335test "inline call doesn't re-evaluate non generic struct" {
330336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
331337 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332339
333340 const S = struct {
334341 fn foo(f: struct { a: u8, b: u8 }) !void {
......@@ -367,6 +374,8 @@ test "Enum constructed by @Type passed as generic argument" {
367374}
368375
369376test "generic function with generic function parameter" {
377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378
370379 const S = struct {
371380 fn f(comptime a: fn (anytype) anyerror!void, b: anytype) anyerror!void {
372381 try a(b);
......@@ -379,6 +388,8 @@ test "generic function with generic function parameter" {
379388}
380389
381390test "recursive inline call with comptime known argument" {
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392
382393 const S = struct {
383394 inline fn foo(x: i32) i32 {
384395 if (x <= 0) {
......@@ -395,6 +406,7 @@ test "recursive inline call with comptime known argument" {
395406test "inline while with @call" {
396407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398410
399411 const S = struct {
400412 fn inc(a: *u32) void {
test/behavior/cast.zig+88
......@@ -97,6 +97,7 @@ test "@intToFloat" {
9797 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9999 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
100101
101102 const S = struct {
102103 fn doTheTest() !void {
......@@ -119,6 +120,7 @@ test "@intToFloat(f80)" {
119120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120121 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
121122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
122124
123125 const S = struct {
124126 fn doTheTest(comptime Int: type) !void {
......@@ -154,6 +156,7 @@ test "@floatToInt" {
154156 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155157 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
156158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157160
158161 try testFloatToInts();
159162 comptime try testFloatToInts();
......@@ -176,6 +179,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
176179test "implicitly cast indirect pointer to maybe-indirect pointer" {
177180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
178181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
182 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
179183
180184 const S = struct {
181185 const Self = @This();
......@@ -204,12 +208,16 @@ test "implicitly cast indirect pointer to maybe-indirect pointer" {
204208}
205209
206210test "@intCast comptime_int" {
211 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212
207213 const result = @intCast(i32, 1234);
208214 try expect(@TypeOf(result) == i32);
209215 try expect(result == 1234);
210216}
211217
212218test "@floatCast comptime_int and comptime_float" {
219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
220
213221 {
214222 const result = @floatCast(f16, 1234);
215223 try expect(@TypeOf(result) == f16);
......@@ -236,6 +244,7 @@ test "coerce undefined to optional" {
236244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
238246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
239248
240249 try expect(MakeType(void).getNull() == null);
241250 try expect(MakeType(void).getNonNull() != null);
......@@ -256,6 +265,7 @@ fn MakeType(comptime T: type) type {
256265test "implicit cast from *[N]T to [*c]T" {
257266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
258267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
259269
260270 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
261271 var y: [*c]u16 = &x;
......@@ -267,6 +277,8 @@ test "implicit cast from *[N]T to [*c]T" {
267277}
268278
269279test "*usize to *void" {
280 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
281
270282 var i = @as(usize, 0);
271283 var v = @ptrCast(*void, &i);
272284 v.* = {};
......@@ -317,6 +329,7 @@ test "peer result null and comptime_int" {
317329test "*const ?[*]const T to [*c]const [*c]const T" {
318330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
319331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
332 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
320333
321334 var array = [_]u8{ 'o', 'k' };
322335 const opt_array_ptr: ?[*]const u8 = &array;
......@@ -329,6 +342,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
329342test "array coersion to undefined at runtime" {
330343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
331344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
332346
333347 @setRuntimeSafety(true);
334348
......@@ -359,6 +373,7 @@ test "return u8 coercing into ?u32 return type" {
359373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
360374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
361375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
376 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
362377
363378 const S = struct {
364379 fn doTheTest() !void {
......@@ -380,6 +395,7 @@ test "cast from ?[*]T to ??[*]T" {
380395test "peer type unsigned int to signed" {
381396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
382397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
383399
384400 var w: u31 = 5;
385401 var x: u8 = 7;
......@@ -392,6 +408,7 @@ test "peer type unsigned int to signed" {
392408test "expected [*c]const u8, found [*:0]const u8" {
393409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
394410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
395412
396413 var a: [*:0]const u8 = "hello";
397414 var b: [*c]const u8 = a;
......@@ -403,6 +420,7 @@ test "explicit cast from integer to error type" {
403420 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
405422 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
406424
407425 try testCastIntToErr(error.ItBroke);
408426 comptime try testCastIntToErr(error.ItBroke);
......@@ -417,6 +435,7 @@ test "peer resolve array and const slice" {
417435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
418436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
419437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420439
421440 try testPeerResolveArrayConstSlice(true);
422441 comptime try testPeerResolveArrayConstSlice(true);
......@@ -432,6 +451,7 @@ test "implicitly cast from T to anyerror!?T" {
432451 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433452 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
434453 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
435455
436456 try castToOptionalTypeError(1);
437457 comptime try castToOptionalTypeError(1);
......@@ -457,6 +477,7 @@ fn castToOptionalTypeError(z: i32) !void {
457477test "implicitly cast from [0]T to anyerror![]T" {
458478 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
459479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
460481
461482 try testCastZeroArrayToErrSliceMut();
462483 comptime try testCastZeroArrayToErrSliceMut();
......@@ -474,6 +495,7 @@ test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
474495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
475496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
498 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
477499
478500 const S = struct {
479501 fn doTheTest() anyerror!void {
......@@ -505,6 +527,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
505527test "implicit cast from *const [N]T to []const T" {
506528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
508531
509532 try testCastConstArrayRefToConstSlice();
510533 comptime try testCastConstArrayRefToConstSlice();
......@@ -530,6 +553,7 @@ fn testCastConstArrayRefToConstSlice() !void {
530553test "peer type resolution: error and [N]T" {
531554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
532555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
533557
534558 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
535559 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
......@@ -554,6 +578,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
554578test "single-item pointer of array to slice to unknown length pointer" {
555579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
556580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
557582
558583 try testCastPtrOfArrayToSliceAndPtr();
559584 comptime try testCastPtrOfArrayToSliceAndPtr();
......@@ -583,6 +608,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
583608test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
584609 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
585610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
611 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
586612
587613 const window_name = [1][*]const u8{"window name"};
588614 const x: [*]const ?[*]const u8 = &window_name;
......@@ -595,6 +621,7 @@ test "vector casts" {
595621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
596622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
597623 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
598625
599626 const S = struct {
600627 fn doTheTest() !void {
......@@ -636,6 +663,7 @@ test "@floatCast cast down" {
636663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
637664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
638665 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
639667
640668 {
641669 var double: f64 = 0.001534;
......@@ -652,6 +680,7 @@ test "@floatCast cast down" {
652680test "peer type resolution: unreachable, error set, unreachable" {
653681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
654682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
683 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
655684
656685 const Error = error{
657686 FileDescriptorAlreadyPresentInSet,
......@@ -686,6 +715,7 @@ test "peer type resolution: error set supersets" {
686715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
687716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
688717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
718 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
689719
690720 const a: error{ One, Two } = undefined;
691721 const b: error{One} = undefined;
......@@ -715,6 +745,7 @@ test "peer type resolution: disjoint error sets" {
715745 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
716746 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
717747 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
718749
719750 const a: error{ One, Two } = undefined;
720751 const b: error{Three} = undefined;
......@@ -744,6 +775,7 @@ test "peer type resolution: error union and error set" {
744775 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
745776 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
746777 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
778 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
747779
748780 const a: error{Three} = undefined;
749781 const b: error{ One, Two }!u32 = undefined;
......@@ -777,6 +809,7 @@ test "peer type resolution: error union after non-error" {
777809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
778810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
779811 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
812 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
780813
781814 const a: u32 = undefined;
782815 const b: error{ One, Two }!u32 = undefined;
......@@ -810,6 +843,7 @@ test "peer cast *[0]T to E![]const T" {
810843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
811844 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
812845 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
846 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
813847
814848 var buffer: [5]u8 = "abcde".*;
815849 var buf: anyerror![]const u8 = buffer[0..];
......@@ -824,6 +858,7 @@ test "peer cast *[0]T to []const T" {
824858 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
825859 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
826860 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
861 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
827862
828863 var buffer: [5]u8 = "abcde".*;
829864 var buf: []const u8 = buffer[0..];
......@@ -834,6 +869,7 @@ test "peer cast *[0]T to []const T" {
834869
835870test "peer cast *[N]T to [*]T" {
836871 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
872 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
837873
838874 var array = [4:99]i32{ 1, 2, 3, 4 };
839875 var dest: [*]i32 = undefined;
......@@ -845,6 +881,7 @@ test "peer resolution of string literals" {
845881 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
846882 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
847883 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
848885
849886 const S = struct {
850887 const E = enum { a, b, c, d };
......@@ -866,6 +903,7 @@ test "peer resolution of string literals" {
866903test "peer cast [:x]T to []T" {
867904 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
868905 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
906 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
869907
870908 const S = struct {
871909 fn doTheTest() !void {
......@@ -882,6 +920,7 @@ test "peer cast [:x]T to []T" {
882920test "peer cast [N:x]T to [N]T" {
883921 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
884922 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
923 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
885924
886925 const S = struct {
887926 fn doTheTest() !void {
......@@ -897,6 +936,7 @@ test "peer cast [N:x]T to [N]T" {
897936test "peer cast *[N:x]T to *[N]T" {
898937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
900940
901941 const S = struct {
902942 fn doTheTest() !void {
......@@ -912,6 +952,7 @@ test "peer cast *[N:x]T to *[N]T" {
912952test "peer cast [*:x]T to [*]T" {
913953 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
914954 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
955 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
915956
916957 const S = struct {
917958 fn doTheTest() !void {
......@@ -932,6 +973,7 @@ test "peer cast [:x]T to [*:x]T" {
932973 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
933974 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
934975 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
976 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
935977
936978 const S = struct {
937979 fn doTheTest() !void {
......@@ -952,6 +994,7 @@ test "peer cast [:x]T to [*:x]T" {
952994test "peer type resolution implicit cast to return type" {
953995 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
954996 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
997 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
955998
956999 const S = struct {
9571000 fn doTheTest() !void {
......@@ -972,6 +1015,7 @@ test "peer type resolution implicit cast to return type" {
9721015test "peer type resolution implicit cast to variable type" {
9731016 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9741017 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1018 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9751019
9761020 const S = struct {
9771021 fn doTheTest() !void {
......@@ -996,6 +1040,7 @@ test "variable initialization uses result locations properly with regards to the
9961040test "cast between C pointer with different but compatible types" {
9971041 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9981042 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1043 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9991044
10001045 const S = struct {
10011046 fn foo(arg: [*]c_ushort) u16 {
......@@ -1013,6 +1058,7 @@ test "cast between C pointer with different but compatible types" {
10131058test "peer type resolve string lit with sentinel-terminated mutable slice" {
10141059 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10151060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10161062
10171063 var array: [4:0]u8 = undefined;
10181064 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" {
10221068}
10231069
10241070test "peer type resolve array pointers, one of them const" {
1071 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1072
10251073 var array1: [4]u8 = undefined;
10261074 const array2: [5]u8 = undefined;
10271075 comptime try expect(@TypeOf(&array1, &array2) == []const u8);
......@@ -1029,6 +1077,8 @@ test "peer type resolve array pointers, one of them const" {
10291077}
10301078
10311079test "peer type resolve array pointer and unknown pointer" {
1080 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1081
10321082 const const_array: [4]u8 = undefined;
10331083 var array: [4]u8 = undefined;
10341084 var const_ptr: [*]const u8 = undefined;
......@@ -1048,6 +1098,8 @@ test "peer type resolve array pointer and unknown pointer" {
10481098}
10491099
10501100test "comptime float casts" {
1101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1102
10511103 const a = @intToFloat(comptime_float, 1);
10521104 try expect(a == 1);
10531105 try expect(@TypeOf(a) == comptime_float);
......@@ -1078,6 +1130,7 @@ test "implicit cast from [*]T to ?*anyopaque" {
10781130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10791131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10801132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10811134
10821135 var a = [_]u8{ 3, 2, 1 };
10831136 var runtime_zero: usize = 0;
......@@ -1093,6 +1146,8 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
10931146}
10941147
10951148test "compile time int to ptr of function" {
1149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1150
10961151 try foobar(FUNCTION_CONSTANT);
10971152}
10981153
......@@ -1109,6 +1164,7 @@ test "implicit ptr to *anyopaque" {
11091164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11101165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11111166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1167 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11121168
11131169 var a: u32 = 1;
11141170 var ptr: *align(@alignOf(u32)) anyopaque = &a;
......@@ -1122,6 +1178,7 @@ test "implicit ptr to *anyopaque" {
11221178test "return null from fn() anyerror!?&T" {
11231179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11241180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1181 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11251182
11261183 const a = returnNullFromOptionalTypeErrorRef();
11271184 const b = returnNullLitFromOptionalTypeErrorRef();
......@@ -1138,6 +1195,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
11381195test "peer type resolution: [0]u8 and []const u8" {
11391196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11401197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11411199
11421200 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
11431201 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
......@@ -1158,6 +1216,7 @@ test "implicitly cast from [N]T to ?[]const T" {
11581216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11591217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11601218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11611220
11621221 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
11631222 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
......@@ -1172,6 +1231,7 @@ test "cast u128 to f128 and back" {
11721231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11731232 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11741233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11751235
11761236 comptime try testCast128();
11771237 try testCast128();
......@@ -1193,6 +1253,7 @@ test "implicit cast from *[N]T to ?[*]T" {
11931253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11941254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11951255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11961257
11971258 var x: ?[*]u16 = null;
11981259 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
......@@ -1208,6 +1269,7 @@ test "implicit cast from *T to ?*anyopaque" {
12081269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12091270 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12101271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12111273
12121274 var a: u8 = 1;
12131275 incrementVoidPtrValue(&a);
......@@ -1221,6 +1283,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
12211283test "implicit cast *[0]T to E![]const u8" {
12221284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12231285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1286 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12241287
12251288 var x = @as(anyerror![]const u8, &[0]u8{});
12261289 try expect((x catch unreachable).len == 0);
......@@ -1228,10 +1291,14 @@ test "implicit cast *[0]T to E![]const u8" {
12281291
12291292var global_array: [4]u8 = undefined;
12301293test "cast from array reference to fn: comptime fn ptr" {
1294 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1295
12311296 const f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
12321297 try expect(@ptrToInt(f) == @ptrToInt(&global_array));
12331298}
12341299test "cast from array reference to fn: runtime fn ptr" {
1300 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1301
12351302 var f = @ptrCast(*align(1) const fn () callconv(.C) void, &global_array);
12361303 try expect(@ptrToInt(f) == @ptrToInt(&global_array));
12371304}
......@@ -1240,6 +1307,7 @@ test "*const [N]null u8 to ?[]const u8" {
12401307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12411308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12421309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1310 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12431311
12441312 const S = struct {
12451313 fn doTheTest() !void {
......@@ -1253,6 +1321,8 @@ test "*const [N]null u8 to ?[]const u8" {
12531321}
12541322
12551323test "cast between [*c]T and ?[*:0]T on fn parameter" {
1324 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1325
12561326 const S = struct {
12571327 const Handler = ?fn ([*c]const u8) callconv(.C) void;
12581328 fn addCallback(comptime handler: Handler) void {
......@@ -1275,12 +1345,15 @@ test "assignment to optional pointer result loc" {
12751345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12761346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12771347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12781349
12791350 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
12801351 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));
12811352}
12821353
12831354test "cast between *[N]void and []void" {
1355 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1356
12841357 var a: [4]void = undefined;
12851358 var b: []void = &a;
12861359 try expect(b.len == 4);
......@@ -1289,6 +1362,7 @@ test "cast between *[N]void and []void" {
12891362test "peer resolve arrays of different size to const slice" {
12901363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12911364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1365 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12921366
12931367 try expect(mem.eql(u8, boolToStr(true), "true"));
12941368 try expect(mem.eql(u8, boolToStr(false), "false"));
......@@ -1305,6 +1379,7 @@ test "cast f16 to wider types" {
13051379 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13061380 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13071381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1382 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13081383
13091384 const S = struct {
13101385 fn doTheTest() !void {
......@@ -1324,6 +1399,7 @@ test "cast f128 to narrower types" {
13241399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13251400 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13261401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13271403
13281404 const S = struct {
13291405 fn doTheTest() !void {
......@@ -1341,6 +1417,7 @@ test "peer type resolution: unreachable, null, slice" {
13411417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13421418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13431419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1420 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13441421
13451422 const S = struct {
13461423 fn doTheTest(num: usize, word: []const u8) !void {
......@@ -1380,6 +1457,7 @@ test "cast compatible optional types" {
13801457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13811458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13821459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1460 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13831461
13841462 var a: ?[:0]const u8 = null;
13851463 var b: ?[]const u8 = a;
......@@ -1389,6 +1467,7 @@ test "cast compatible optional types" {
13891467test "coerce undefined single-item pointer of array to error union of slice" {
13901468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13911469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13921471
13931472 const a = @as([*]u8, undefined)[0..0];
13941473 var b: error{a}![]const u8 = a;
......@@ -1398,6 +1477,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {
13981477
13991478test "pointer to empty struct literal to mutable slice" {
14001479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14011481
14021482 var x: []i32 = &.{};
14031483 try expect(x.len == 0);
......@@ -1409,6 +1489,7 @@ test "coerce between pointers of compatible differently-named floats" {
14091489 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14101490 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14111491 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1492 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14121493
14131494 if (builtin.os.tag == .windows) {
14141495 // https://github.com/ziglang/zig/issues/12396
......@@ -1463,6 +1544,7 @@ test "cast typed undefined to int" {
14631544
14641545test "implicit cast from [:0]T to [*c]T" {
14651546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14661548
14671549 var a: [:0]const u8 = "foo";
14681550 var b: [*c]const u8 = a;
......@@ -1485,6 +1567,7 @@ test "bitcast packed struct with u0" {
14851567
14861568test "optional pointer coerced to optional allowzero pointer" {
14871569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1570 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14881571
14891572 var p: ?*u32 = undefined;
14901573 var q: ?*allowzero u32 = undefined;
......@@ -1494,6 +1577,8 @@ test "optional pointer coerced to optional allowzero pointer" {
14941577}
14951578
14961579test "single item pointer to pointer to array to slice" {
1580 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1581
14971582 var x: i32 = 1234;
14981583 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
14991584 const z1 = @as([]const i32, @as(*[1]i32, &x));
......@@ -1502,6 +1587,7 @@ test "single item pointer to pointer to array to slice" {
15021587
15031588test "peer type resolution forms error union" {
15041589 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1590 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15051591
15061592 var foo: i32 = 123;
15071593 const result = if (foo < 0) switch (-foo) {
......@@ -1528,6 +1614,8 @@ test "@volatileCast without a result location" {
15281614}
15291615
15301616test "coercion from single-item pointer to @as to slice" {
1617 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1618
15311619 var x: u32 = 1;
15321620
15331621 // Why the following line gets a compile error?
test/behavior/cast_int.zig+1
......@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 var x: u128 = maxInt(u128);
1314 var y: i32 = 120;
test/behavior/const_slice_child.zig+1
......@@ -10,6 +10,7 @@ test "const slice child" {
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1314
1415 const strs = [_][*]const u8{ "one", "two", "three" };
1516 argv = &strs;
test/behavior/decltest.zig+4
......@@ -1,7 +1,11 @@
1const builtin = @import("builtin");
2
13pub fn the_add_function(a: u32, b: u32) u32 {
24 return a + b;
35}
46
57test the_add_function {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
610 if (the_add_function(1, 2) != 3) unreachable;
711}
test/behavior/defer.zig+9
......@@ -5,6 +5,8 @@ const expectEqual = std.testing.expectEqual;
55const expectError = std.testing.expectError;
66
77test "break and continue inside loop inside defer expression" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
810 testBreakContInDefer(10);
911 comptime testBreakContInDefer(10);
1012}
......@@ -21,6 +23,8 @@ fn testBreakContInDefer(x: usize) void {
2123}
2224
2325test "defer and labeled break" {
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
27
2428 var i = @as(usize, 0);
2529
2630 blk: {
......@@ -34,6 +38,7 @@ test "defer and labeled break" {
3438test "errdefer does not apply to fn inside fn" {
3539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3640 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3742
3843 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
3944}
......@@ -53,6 +58,7 @@ test "return variable while defer expression in scope to modify it" {
5358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5459 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5662
5763 const S = struct {
5864 fn doTheTest() !void {
......@@ -94,6 +100,7 @@ test "mixing normal and error defers" {
94100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
95101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
97104
98105 try expect(runSomeErrorDefers(true) catch unreachable);
99106 try expect(result[0] == 'c');
......@@ -113,6 +120,7 @@ test "errdefer with payload" {
113120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
114121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
115122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
116124
117125 const S = struct {
118126 fn foo() !i32 {
......@@ -132,6 +140,7 @@ test "errdefer with payload" {
132140test "simple else prong doesn't emit an error for unreachable else prong" {
133141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135144
136145 const S = struct {
137146 fn foo() error{Foo}!void {
test/behavior/duplicated_test_names.zig+4
......@@ -1,3 +1,5 @@
1const builtin = @import("builtin");
2
13const Namespace = struct {
24 test "thingy" {}
35};
......@@ -13,5 +15,7 @@ comptime {
1315test "thingy" {}
1416
1517test thingy {
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19
1620 if (thingy(1, 2) != 3) unreachable;
1721}
test/behavior/empty_tuple_fields.zig+2
......@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44test "empty file level struct" {
55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
89 const T = @import("empty_file_level_struct.zig");
910 const info = @typeInfo(T);
......@@ -15,6 +16,7 @@ test "empty file level struct" {
1516test "empty file level union" {
1617 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1718 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1820
1921 const T = @import("empty_file_level_union.zig");
2022 const info = @typeInfo(T);
test/behavior/empty_union.zig+6
......@@ -12,6 +12,7 @@ test "switch on empty enum" {
1212
1313test "switch on empty enum with a specified tag type" {
1414 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1516
1617 const E = enum(u8) {};
1718 var e: E = undefined;
......@@ -21,6 +22,7 @@ test "switch on empty enum with a specified tag type" {
2122test "switch on empty auto numbered tagged union" {
2223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2324 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2426
2527 const U = union(enum(u8)) {};
2628 var u: U = undefined;
......@@ -50,6 +52,8 @@ test "empty extern union" {
5052}
5153
5254test "empty union passed as argument" {
55 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
56
5357 const U = union(enum) {
5458 fn f(u: @This()) void {
5559 switch (u) {}
......@@ -59,6 +63,8 @@ test "empty union passed as argument" {
5963}
6064
6165test "empty enum passed as argument" {
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
67
6268 const E = enum {
6369 fn f(e: @This()) void {
6470 switch (e) {}
test/behavior/enum.zig+23
......@@ -27,6 +27,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
2727test "int to enum" {
2828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2929 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3031
3132 try testIntToEnumEval(3);
3233}
......@@ -575,6 +576,8 @@ test "enum literal equality" {
575576}
576577
577578test "enum literal cast to enum" {
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580
578581 const Color = enum { Auto, Off, On };
579582
580583 var color1: Color = .Auto;
......@@ -617,6 +620,7 @@ test "enum with specified tag values" {
617620test "non-exhaustive enum" {
618621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
619622 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
620624
621625 const S = struct {
622626 const E = enum(u8) { a, b, _ };
......@@ -659,6 +663,8 @@ test "non-exhaustive enum" {
659663}
660664
661665test "empty non-exhaustive enum" {
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
667
662668 const S = struct {
663669 const E = enum(u8) { _ };
664670
......@@ -680,6 +686,7 @@ test "empty non-exhaustive enum" {
680686test "single field non-exhaustive enum" {
681687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
682688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
683690
684691 const S = struct {
685692 const E = enum(u8) { a, _ };
......@@ -852,6 +859,8 @@ fn doALoopThing(id: EnumWithOneMember) void {
852859}
853860
854861test "comparison operator on enum with one member is comptime-known" {
862 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
863
855864 doALoopThing(EnumWithOneMember.Eof);
856865}
857866
......@@ -865,6 +874,8 @@ test "switch on enum with one member is comptime-known" {
865874}
866875
867876test "method call on an enum" {
877 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
878
868879 const S = struct {
869880 const E = enum {
870881 one,
......@@ -904,6 +915,7 @@ test "enum literal casting to tagged union" {
904915 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
905916 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
906917 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
918 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
907919
908920 const Arch = union(enum) {
909921 x86_64,
......@@ -929,6 +941,7 @@ const Bar = enum { A, B, C, D };
929941test "enum literal casting to error union with payload enum" {
930942 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
931943 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
944 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
932945
933946 var bar: error{B}!Bar = undefined;
934947 bar = .B; // should never cast to the error set
......@@ -940,6 +953,7 @@ test "constant enum initialization with differing sizes" {
940953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
941954 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
942955 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
956 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
943957
944958 try test3_1(test3_foo);
945959 try test3_2(test3_bar);
......@@ -982,6 +996,7 @@ test "@tagName" {
982996 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
983997 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
984998 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
999 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9851000
9861001 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
9871002 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
......@@ -997,6 +1012,7 @@ test "@tagName non-exhaustive enum" {
9971012 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9981013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9991014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10001016
10011017 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
10021018 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
......@@ -1007,6 +1023,7 @@ test "@tagName is null-terminated" {
10071023 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10081024 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10091025 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1026 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10101027
10111028 const S = struct {
10121029 fn doTheTest(n: BareNumber) !void {
......@@ -1021,6 +1038,7 @@ test "tag name with assigned enum values" {
10211038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10221039 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10231040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1041 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10241042
10251043 const LocalFoo = enum(u8) {
10261044 A = 1,
......@@ -1033,6 +1051,7 @@ test "tag name with assigned enum values" {
10331051test "@tagName on enum literals" {
10341052 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10351053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10361055
10371056 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
10381057 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
......@@ -1042,6 +1061,7 @@ test "enum literal casting to optional" {
10421061 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10431062 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10441063 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10451065
10461066 var bar: ?Bar = undefined;
10471067 bar = .B;
......@@ -1070,6 +1090,7 @@ test "bit field access with enum fields" {
10701090 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10711091 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10721092 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1093 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10731094
10741095 var data = bit_field_1;
10751096 try expect(getA(&data) == A.Two);
......@@ -1110,6 +1131,7 @@ test "tag name functions are unique" {
11101131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11111132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11121133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11131135
11141136 {
11151137 const E = enum { a, b };
......@@ -1128,6 +1150,7 @@ test "tag name functions are unique" {
11281150test "size of enum with only one tag which has explicit integer tag type" {
11291151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11301152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11311154
11321155 const E = enum(u8) { nope = 10 };
11331156 const S0 = struct { e: E };
test/behavior/error.zig+39
......@@ -16,12 +16,14 @@ fn expectError(expected_err: anyerror, observed_err_union: anytype) !void {
1616}
1717
1818test "error values" {
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1920 const a = @errorToInt(error.err1);
2021 const b = @errorToInt(error.err2);
2122 try expect(a != b);
2223}
2324
2425test "redefinition of error values allowed" {
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2527 shouldBeNotEqual(error.AnError, error.SecondError);
2628}
2729fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
......@@ -30,6 +32,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
3032
3133test "error binary operator" {
3234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3336
3437 const a = errBinaryOperatorG(true) catch 3;
3538 const b = errBinaryOperatorG(false) catch 3;
......@@ -61,12 +64,14 @@ pub fn baz() anyerror!i32 {
6164
6265test "error wrapping" {
6366 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6468
6569 try expect((baz() catch unreachable) == 15);
6670}
6771
6872test "unwrap simple value from error" {
6973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7075
7176 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
7277 try expect(i == 13);
......@@ -77,6 +82,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
7782
7883test "error return in assignment" {
7984 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8086
8187 doErrReturnInAssignment() catch unreachable;
8288}
......@@ -99,6 +105,7 @@ test "syntax: optional operator in front of error union operator" {
99105test "widen cast integer payload of error union function call" {
100106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102109
103110 const S = struct {
104111 fn errorable() !u64 {
......@@ -124,6 +131,7 @@ test "debug info for optional error set" {
124131
125132test "implicit cast to optional to error union to return result loc" {
126133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127135
128136 const S = struct {
129137 fn entry() !void {
......@@ -144,11 +152,13 @@ test "implicit cast to optional to error union to return result loc" {
144152}
145153
146154test "fn returning empty error set can be passed as fn returning any error" {
155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147156 entry();
148157 comptime entry();
149158}
150159
151160test "fn returning empty error set can be passed as fn returning any error - pointer" {
161 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
152162 entryPtr();
153163 comptime entryPtr();
154164}
......@@ -216,6 +226,7 @@ fn testErrorSetType() !void {
216226
217227test "explicit error set cast" {
218228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219230
220231 try testExplicitErrorSetCast(Set1.A);
221232 comptime try testExplicitErrorSetCast(Set1.A);
......@@ -234,6 +245,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
234245
235246test "comptime test error for empty error set" {
236247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237249
238250 try testComptimeTestErrorEmptySet(1234);
239251 comptime try testComptimeTestErrorEmptySet(1234);
......@@ -269,6 +281,7 @@ test "inferred empty error set comptime catch" {
269281}
270282
271283test "error inference with an empty set" {
284 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
272285 const S = struct {
273286 const Struct = struct {
274287 pub fn func() (error{})!usize {
......@@ -291,6 +304,7 @@ test "error inference with an empty set" {
291304
292305test "error union peer type resolution" {
293306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
294308
295309 try testErrorUnionPeerTypeResolution(1);
296310}
......@@ -322,6 +336,7 @@ fn quux_1() !i32 {
322336
323337test "error: Zero sized error set returned with value payload crash" {
324338 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
339 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
325340
326341 _ = try foo3(0);
327342 _ = comptime try foo3(0);
......@@ -334,6 +349,7 @@ fn foo3(b: usize) Error!usize {
334349
335350test "error: Infer error set from literals" {
336351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337353
338354 _ = nullLiteral("n") catch |err| handleErrors(err);
339355 _ = floatLiteral("n") catch |err| handleErrors(err);
......@@ -373,6 +389,7 @@ test "nested error union function call in optional unwrap" {
373389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
375391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
376393
377394 const S = struct {
378395 const Foo = struct {
......@@ -419,6 +436,7 @@ test "nested error union function call in optional unwrap" {
419436test "return function call to error set from error union function" {
420437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
421438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422440
423441 const S = struct {
424442 fn errorable() anyerror!i32 {
......@@ -437,6 +455,7 @@ test "optional error set is the same size as error set" {
437455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
438456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
439457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
440459
441460 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));
442461 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));
......@@ -452,6 +471,7 @@ test "optional error set is the same size as error set" {
452471test "nested catch" {
453472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
454473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
474 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
455475
456476 const S = struct {
457477 fn entry() !void {
......@@ -476,6 +496,7 @@ test "nested catch" {
476496
477497test "function pointer with return type that is error union with payload which is pointer of parent struct" {
478498 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
499 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
479500
480501 const S = struct {
481502 const Foo = struct {
......@@ -501,6 +522,7 @@ test "return result loc as peer result loc in inferred error set function" {
501522 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
502523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
503524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504526
505527 const S = struct {
506528 fn doTheTest() !void {
......@@ -532,6 +554,7 @@ test "error payload type is correctly resolved" {
532554 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
533555 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
534556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
535558
536559 const MyIntWrapper = struct {
537560 const Self = @This();
......@@ -561,6 +584,7 @@ test "@errorName" {
561584 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
562585 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
563586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
564588
565589 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));
566590 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));
......@@ -574,6 +598,7 @@ test "@errorName sentinel length matches slice length" {
574598 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
575599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
576600 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
577602
578603 const name = testBuiltinErrorName(error.FooBar);
579604 const length: usize = 6;
......@@ -647,6 +672,7 @@ test "peer type resolution of two different error unions" {
647672}
648673
649674test "coerce error set to the current inferred error set" {
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
650676 const S = struct {
651677 fn foo() !void {
652678 var a = false;
......@@ -665,6 +691,7 @@ test "error union payload is properly aligned" {
665691 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
666692 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
667693 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
694 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
668695
669696 const S = struct {
670697 a: u128,
......@@ -697,6 +724,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {
697724test "simple else prong allowed even when all errors handled" {
698725 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
699726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
727 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
700728
701729 const S = struct {
702730 fn foo() !u8 {
......@@ -725,6 +753,7 @@ test "pointer to error union payload" {
725753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
726754 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
727755 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
756 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
728757
729758 var err_union: anyerror!u8 = 15;
730759
......@@ -758,6 +787,7 @@ test "error union of noreturn used with if" {
758787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
759788 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
760789 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
790 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
761791
762792 NoReturn.a = 64;
763793 if (NoReturn.loop()) {
......@@ -772,6 +802,7 @@ test "error union of noreturn used with try" {
772802 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
773803 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
774804 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
805 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
775806
776807 NoReturn.a = 64;
777808 const err = NoReturn.testTry();
......@@ -783,6 +814,7 @@ test "error union of noreturn used with catch" {
783814 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
784815 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
785816 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
786818
787819 NoReturn.a = 64;
788820 const err = NoReturn.testCatch();
......@@ -793,6 +825,7 @@ test "alignment of wrapping an error union payload" {
793825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
794826 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
795827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
828 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
796829
797830 const S = struct {
798831 const I = extern struct { x: i128 };
......@@ -807,6 +840,7 @@ test "alignment of wrapping an error union payload" {
807840
808841test "compare error union and error set" {
809842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
810844
811845 var a: anyerror = error.Foo;
812846 var b: anyerror!u32 = error.Bar;
......@@ -835,6 +869,8 @@ fn non_errorable() void {
835869}
836870
837871test "catch within a function that calls no errorable functions" {
872 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
873
838874 non_errorable();
839875}
840876
......@@ -842,6 +878,7 @@ test "error from comptime string" {
842878 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
843879 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
881 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
845882
846883 const name = "Weird error name!";
847884 const S = struct {
......@@ -865,6 +902,7 @@ test "field access of anyerror results in smaller error set" {
865902test "optional error union return type" {
866903 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
867904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
905 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
868906
869907 const S = struct {
870908 fn foo() ?anyerror!u32 {
......@@ -878,6 +916,7 @@ test "optional error union return type" {
878916test "optional error set return type" {
879917 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
880918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
919 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
881920
882921 const E = error{ A, B };
883922 const S = struct {
test/behavior/eval.zig+54
......@@ -5,6 +5,8 @@ const expect = std.testing.expect;
55const expectEqual = std.testing.expectEqual;
66
77test "compile time recursion" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
810 try expect(some_data.len == 21);
911}
1012var some_data: [@intCast(usize, fibonacci(7))]u8 = undefined;
......@@ -21,6 +23,7 @@ test "static add one" {
2123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2427
2528 try expect(should_be_1235 == 1235);
2629}
......@@ -45,6 +48,8 @@ test "inline variable gets result of const if" {
4548}
4649
4750test "static function evaluation" {
51 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
52
4853 try expect(statically_added_number == 3);
4954}
5055const statically_added_number = staticAdd(1, 2);
......@@ -72,6 +77,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {
7277test "constant expressions" {
7378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7581
7682 var array: [array_size]u8 = undefined;
7783 try expect(@sizeOf(@TypeOf(array)) == 20);
......@@ -140,6 +146,7 @@ test "pointer to type" {
140146test "a type constructed in a global expression" {
141147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143150
144151 var l: List = undefined;
145152 l.array[0] = 10;
......@@ -198,6 +205,8 @@ test "@setEvalBranchQuota" {
198205}
199206
200207test "constant struct with negation" {
208 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
209
201210 try expect(vertices[0].x == @as(f32, -0.6));
202211}
203212const Vertex = struct {
......@@ -302,6 +311,8 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {
302311}
303312
304313test "comptime iterate over fn ptr list" {
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315
305316 try expect(performFn('t', 1) == 6);
306317 try expect(performFn('o', 0) == 1);
307318 try expect(performFn('w', 99) == 99);
......@@ -340,6 +351,7 @@ fn doesAlotT(comptime T: type, value: usize) T {
340351test "@setEvalBranchQuota at same scope as generic function call" {
341352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
343355
344356 try expect(doesAlotT(u32, 2) == 2);
345357}
......@@ -376,6 +388,8 @@ test "zero extend from u0 to u1" {
376388}
377389
378390test "return 0 from function that has u0 return type" {
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392
379393 const S = struct {
380394 fn foo_zero() u0 {
381395 return 0;
......@@ -391,6 +405,7 @@ test "return 0 from function that has u0 return type" {
391405test "statically initialized struct" {
392406 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
393407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
394409
395410 st_init_str_foo.x += 1;
396411 try expect(st_init_str_foo.x == 14);
......@@ -405,6 +420,8 @@ var st_init_str_foo = StInitStrFoo{
405420};
406421
407422test "inline for with same type but different values" {
423 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
424
408425 var res: usize = 0;
409426 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
410427 var a: T = undefined;
......@@ -440,6 +457,7 @@ test "binary math operator in partially inlined function" {
440457 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
441458 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
442459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
460 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443461
444462 var s: [4]u32 = undefined;
445463 var b: [16]u8 = undefined;
......@@ -459,6 +477,7 @@ test "comptime shl" {
459477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
460478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
461479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
462481
463482 var a: u128 = 3;
464483 var b: u7 = 63;
......@@ -486,6 +505,7 @@ test "comptime bitwise operators" {
486505test "comptime shlWithOverflow" {
487506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
488507 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
489509
490510 const ct_shifted = @shlWithOverflow(~@as(u64, 0), 16)[0];
491511 var a = ~@as(u64, 0);
......@@ -497,6 +517,7 @@ test "comptime shlWithOverflow" {
497517test "const ptr to variable data changes at runtime" {
498518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
499519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
520 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
500521
501522 try expect(foo_ref.name[0] == 'a');
502523 foo_ref.name = "b";
......@@ -516,6 +537,7 @@ test "runtime 128 bit integer division" {
516537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
517538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
518539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
519541
520542 var a: u128 = 152313999999999991610955792383;
521543 var b: u128 = 10000000000000000000;
......@@ -526,6 +548,7 @@ test "runtime 128 bit integer division" {
526548test "@tagName of @typeInfo" {
527549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
528550 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
529552
530553 const str = @tagName(@typeInfo(u8));
531554 try expect(std.mem.eql(u8, str, "Int"));
......@@ -535,6 +558,7 @@ test "static eval list init" {
535558 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536559 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
537560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
561 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
538562
539563 try expect(static_vec3.data[2] == 1.0);
540564 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
566590test "ptr to local array argument at comptime" {
567591 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
568592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
593 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
569594
570595 comptime {
571596 var bytes: [10]u8 = undefined;
......@@ -602,6 +627,7 @@ const hi1 = "hi";
602627const hi2 = hi1;
603628test "const global shares pointer with other same one" {
604629 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
630 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
605631
606632 try assertEqualPtrs(&hi1[0], &hi2[0]);
607633 comptime try expect(&hi1[0] == &hi2[0]);
......@@ -637,6 +663,8 @@ pub fn TypeWithCompTimeSlice(comptime field_name: []const u8) type {
637663}
638664
639665test "comptime function with mutable pointer is not memoized" {
666 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
667
640668 comptime {
641669 var x: i32 = 1;
642670 const ptr = &x;
......@@ -728,6 +756,7 @@ test "array concatenation of function calls" {
728756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
729757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
730758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
731760
732761 var a = oneItem(3) ++ oneItem(4);
733762 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
......@@ -737,6 +766,7 @@ test "array multiplication of function calls" {
737766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
738767 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
739768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
769 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
740770
741771 var a = oneItem(3) ** scalar(2);
742772 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
......@@ -754,6 +784,7 @@ test "array concatenation peer resolves element types - value" {
754784 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
755785 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
756786 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
757788
758789 var a = [2]u3{ 1, 7 };
759790 var b = [3]u8{ 200, 225, 255 };
......@@ -770,6 +801,7 @@ test "array concatenation peer resolves element types - pointer" {
770801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
771802 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
772803 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
804 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
773805
774806 var a = [2]u3{ 1, 7 };
775807 var b = [3]u8{ 200, 225, 255 };
......@@ -788,6 +820,7 @@ test "array concatenation sets the sentinel - value" {
788820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
789821 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
790822 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
823 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
791824
792825 var a = [2]u3{ 1, 7 };
793826 var b = [3:69]u8{ 200, 225, 255 };
......@@ -805,6 +838,7 @@ test "array concatenation sets the sentinel - value" {
805838test "array concatenation sets the sentinel - pointer" {
806839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
807840 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
808842
809843 var a = [2]u3{ 1, 7 };
810844 var b = [3:69]u8{ 200, 225, 255 };
......@@ -825,6 +859,7 @@ test "array multiplication sets the sentinel - value" {
825859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
826860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
827861 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
862 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
828863
829864 var a = [2:7]u3{ 1, 6 };
830865 var b = a ** 2;
......@@ -841,6 +876,7 @@ test "array multiplication sets the sentinel - pointer" {
841876 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
842877 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
843878 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
879 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
844880
845881 var a = [2:7]u3{ 1, 6 };
846882 var b = &a ** 2;
......@@ -965,6 +1001,7 @@ test "closure capture type of runtime-known parameter" {
9651001
9661002test "comptime break passing through runtime condition converted to runtime break" {
9671003 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1004 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9681005
9691006 const S = struct {
9701007 fn doTheTest() !void {
......@@ -998,6 +1035,7 @@ test "comptime break to outer loop passing through runtime condition converted t
9981035 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9991036 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10001037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10011039
10021040 const S = struct {
10031041 fn doTheTest() !void {
......@@ -1069,6 +1107,7 @@ test "comptime break operand passing through runtime switch converted to runtime
10691107test "no dependency loop for alignment of self struct" {
10701108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10711109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10721111
10731112 const S = struct {
10741113 fn doTheTest() !void {
......@@ -1106,6 +1145,7 @@ test "no dependency loop for alignment of self struct" {
11061145test "no dependency loop for alignment of self bare union" {
11071146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11081147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1148 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11091149
11101150 const S = struct {
11111151 fn doTheTest() !void {
......@@ -1143,6 +1183,7 @@ test "no dependency loop for alignment of self bare union" {
11431183test "no dependency loop for alignment of self tagged union" {
11441184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11451185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1186 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11461187
11471188 const S = struct {
11481189 fn doTheTest() !void {
......@@ -1186,6 +1227,7 @@ test "storing an array of type in a field" {
11861227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11871228 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11881229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1230 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11891231
11901232 const S = struct {
11911233 fn doTheTest() void {
......@@ -1214,6 +1256,7 @@ test "storing an array of type in a field" {
12141256test "pass pointer to field of comptime-only type as a runtime parameter" {
12151257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12161258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12171260
12181261 const S = struct {
12191262 const Mixed = struct {
......@@ -1331,6 +1374,7 @@ test "lazy value is resolved as slice operand" {
13311374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13321375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13331376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13341378
13351379 const A = struct { a: u32 };
13361380 var a: [512]u64 = undefined;
......@@ -1388,6 +1432,7 @@ test "inline for inside a runtime condition" {
13881432
13891433test "continue in inline for inside a comptime switch" {
13901434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1435 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13911436
13921437 const arr = .{ 1, 2, 3 };
13931438 var count: u8 = 0;
......@@ -1453,6 +1498,7 @@ test "continue nested inline for loop in named block expr" {
14531498
14541499test "x and false is comptime-known false" {
14551500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1501 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14561502
14571503 const T = struct {
14581504 var x: u32 = 0;
......@@ -1480,6 +1526,7 @@ test "x and false is comptime-known false" {
14801526
14811527test "x or true is comptime-known true" {
14821528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1529 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14831530
14841531 const T = struct {
14851532 var x: u32 = 0;
......@@ -1510,6 +1557,7 @@ test "non-optional and optional array elements concatenated" {
15101557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15111558 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15121559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1560 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15131561
15141562 const array = [1]u8{'A'} ++ [1]?u8{null};
15151563 var index: usize = 0;
......@@ -1540,6 +1588,8 @@ test "comptime function turns function value to function pointer" {
15401588}
15411589
15421590test "container level const and var have unique addresses" {
1591 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1592
15431593 const S = struct {
15441594 x: i32,
15451595 y: i32,
......@@ -1596,6 +1646,8 @@ test "result of nested switch assigned to variable" {
15961646}
15971647
15981648test "inline for loop of functions returning error unions" {
1649 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1650
15991651 const T1 = struct {
16001652 fn v() error{}!usize {
16011653 return 1;
......@@ -1649,6 +1701,8 @@ test "early exit in container level const" {
16491701}
16501702
16511703test "@inComptime" {
1704 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1705
16521706 const S = struct {
16531707 fn inComptime() bool {
16541708 return @inComptime();
test/behavior/field_parent_ptr.zig+7
......@@ -4,6 +4,8 @@ const builtin = @import("builtin");
44test "@fieldParentPtr non-first field" {
55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8
79 try testParentFieldPtr(&foo.c);
810 comptime try testParentFieldPtr(&foo.c);
911}
......@@ -12,6 +14,8 @@ test "@fieldParentPtr first field" {
1214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1315 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1416 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1519 try testParentFieldPtrFirst(&foo.a);
1620 comptime try testParentFieldPtrFirst(&foo.a);
1721}
......@@ -51,6 +55,7 @@ test "@fieldParentPtr untagged union" {
5155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5256 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5357 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5459
5560 try testFieldParentPtrUnion(&bar.c);
5661 comptime try testFieldParentPtrUnion(&bar.c);
......@@ -78,6 +83,7 @@ test "@fieldParentPtr tagged union" {
7883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7984 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8085 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8187
8288 try testFieldParentPtrTaggedUnion(&bar_tagged.c);
8389 comptime try testFieldParentPtrTaggedUnion(&bar_tagged.c);
......@@ -105,6 +111,7 @@ test "@fieldParentPtr extern union" {
105111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
106112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
108115
109116 try testFieldParentPtrExternUnion(&bar_extern.c);
110117 comptime try testFieldParentPtrExternUnion(&bar_extern.c);
test/behavior/floatop.zig+51
......@@ -58,6 +58,7 @@ test "different sized float comparisons" {
5858 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5959 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6162
6263 try testDifferentSizedFloatComparisons();
6364 comptime try testDifferentSizedFloatComparisons();
......@@ -101,6 +102,7 @@ test "@sqrt" {
101102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104106
105107 comptime try testSqrt();
106108 try testSqrt();
......@@ -138,6 +140,7 @@ test "@sqrt with vectors" {
138140 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
139141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
140142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
141144
142145 comptime try testSqrtWithVectors();
143146 try testSqrtWithVectors();
......@@ -157,6 +160,7 @@ test "more @sqrt f16 tests" {
157160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
159162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160164
161165 // TODO these are not all passing at comptime
162166 try expect(@sqrt(@as(f16, 0.0)) == 0.0);
......@@ -181,6 +185,7 @@ test "another, possibly redundant @sqrt test" {
181185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
182186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
183187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
184189
185190 try testSqrtLegacy(f64, 12.0);
186191 comptime try testSqrtLegacy(f64, 12.0);
......@@ -207,6 +212,7 @@ test "@sin" {
207212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
208213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
209214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210216
211217 comptime try testSin();
212218 try testSin();
......@@ -227,6 +233,7 @@ test "@sin with vectors" {
227233 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
228234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
229235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
236 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
230237
231238 comptime try testSinWithVectors();
232239 try testSinWithVectors();
......@@ -246,6 +253,7 @@ test "@cos" {
246253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
247254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
249257
250258 comptime try testCos();
251259 try testCos();
......@@ -266,6 +274,7 @@ test "@cos with vectors" {
266274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
267275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
268276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
269278
270279 comptime try testCosWithVectors();
271280 try testCosWithVectors();
......@@ -285,6 +294,7 @@ test "@exp" {
285294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
286295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
287296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
288298
289299 comptime try testExp();
290300 try testExp();
......@@ -304,6 +314,7 @@ test "@exp with vectors" {
304314 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
305315 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
317 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
307318
308319 comptime try testExpWithVectors();
309320 try testExpWithVectors();
......@@ -323,6 +334,7 @@ test "@exp2" {
323334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
324335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
325336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
326338
327339 comptime try testExp2();
328340 try testExp2();
......@@ -342,6 +354,7 @@ test "@exp2 with @vectors" {
342354 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
343355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
344356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
345358
346359 comptime try testExp2WithVectors();
347360 try testExp2WithVectors();
......@@ -361,6 +374,7 @@ test "@log" {
361374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
362375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
363376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
364378
365379 comptime try testLog();
366380 try testLog();
......@@ -392,6 +406,7 @@ test "@log with @vectors" {
392406 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
393407 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
394408 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
395410
396411 {
397412 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
......@@ -408,6 +423,7 @@ test "@log2" {
408423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
409424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
426 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411427
412428 comptime try testLog2();
413429 try testLog2();
......@@ -427,6 +443,7 @@ test "@log2 with vectors" {
427443 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
428444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
429445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
446 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
430447 // https://github.com/ziglang/zig/issues/13681
431448 if (builtin.zig_backend == .stage2_llvm and
432449 builtin.cpu.arch == .aarch64 and
......@@ -450,6 +467,7 @@ test "@log10" {
450467 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
451468 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
452469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
453471
454472 comptime try testLog10();
455473 try testLog10();
......@@ -469,6 +487,7 @@ test "@log10 with vectors" {
469487 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
470488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
471489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
472491
473492 comptime try testLog10WithVectors();
474493 try testLog10WithVectors();
......@@ -487,6 +506,7 @@ test "@fabs" {
487506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
488507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
489508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
490510
491511 comptime try testFabs();
492512 try testFabs();
......@@ -515,6 +535,7 @@ test "@fabs with vectors" {
515535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
516536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
517537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
518539
519540 comptime try testFabsWithVectors();
520541 try testFabsWithVectors();
......@@ -534,6 +555,7 @@ test "another, possibly redundant, @fabs test" {
534555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
535556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536557 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
558 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
537559
538560 try testFabsLegacy(f128, 12.0);
539561 comptime try testFabsLegacy(f128, 12.0);
......@@ -555,6 +577,7 @@ test "@fabs f80" {
555577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
556578 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
557579 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
580 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
558581
559582 try testFabsLegacy(f80, 12.0);
560583 comptime try testFabsLegacy(f80, 12.0);
......@@ -571,6 +594,7 @@ test "a third @fabs test, surely there should not be three fabs tests" {
571594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
572595 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
573596 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
597 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
574598
575599 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {
576600 // normals
......@@ -598,6 +622,7 @@ test "@floor" {
598622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
599623 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
600624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
601626
602627 comptime try testFloor();
603628 try testFloor();
......@@ -622,6 +647,7 @@ test "@floor with vectors" {
622647 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
623648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
624649 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
650 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625651
626652 comptime try testFloorWithVectors();
627653 try testFloorWithVectors();
......@@ -640,6 +666,7 @@ test "another, possibly redundant, @floor test" {
640666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
641667 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
642668 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
669 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
643670
644671 try testFloorLegacy(f64, 12.0);
645672 comptime try testFloorLegacy(f64, 12.0);
......@@ -659,6 +686,7 @@ test "@floor f80" {
659686 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
660687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
661688 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
689 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
662690
663691 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
664692 // https://github.com/ziglang/zig/issues/12602
......@@ -674,6 +702,7 @@ test "@floor f128" {
674702 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
675703 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
676704 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
677706
678707 try testFloorLegacy(f128, 12.0);
679708 comptime try testFloorLegacy(f128, 12.0);
......@@ -689,6 +718,7 @@ test "@ceil" {
689718 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
690719 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
691720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
721 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
692722
693723 comptime try testCeil();
694724 try testCeil();
......@@ -713,6 +743,7 @@ test "@ceil with vectors" {
713743 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
714744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
746 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
716747
717748 comptime try testCeilWithVectors();
718749 try testCeilWithVectors();
......@@ -731,6 +762,7 @@ test "another, possibly redundant, @ceil test" {
731762 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
732763 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
733764 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
765 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
734766
735767 try testCeilLegacy(f64, 12.0);
736768 comptime try testCeilLegacy(f64, 12.0);
......@@ -750,6 +782,7 @@ test "@ceil f80" {
750782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
751783 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
752784 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
785 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
753786
754787 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
755788 // https://github.com/ziglang/zig/issues/12602
......@@ -765,6 +798,7 @@ test "@ceil f128" {
765798 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
766799 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
767800 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
768802
769803 try testCeilLegacy(f128, 12.0);
770804 comptime try testCeilLegacy(f128, 12.0);
......@@ -804,6 +838,7 @@ test "@trunc with vectors" {
804838 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; // TODO
805839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
806840 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
807842
808843 comptime try testTruncWithVectors();
809844 try testTruncWithVectors();
......@@ -822,6 +857,7 @@ test "another, possibly redundant, @trunc test" {
822857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
823858 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
824859 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
860 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
825861
826862 try testTruncLegacy(f64, 12.0);
827863 comptime try testTruncLegacy(f64, 12.0);
......@@ -841,6 +877,7 @@ test "@trunc f80" {
841877 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
842878 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
843879 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
880 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
844881
845882 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
846883 // https://github.com/ziglang/zig/issues/12602
......@@ -862,6 +899,7 @@ test "@trunc f128" {
862899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
863900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
864901 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
902 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
865903
866904 try testTruncLegacy(f128, 12.0);
867905 comptime try testTruncLegacy(f128, 12.0);
......@@ -886,6 +924,7 @@ test "negation f16" {
886924 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
887925 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
888926 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
927 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
889928
890929 if (builtin.os.tag == .freebsd) {
891930 // TODO file issue to track this failure
......@@ -910,6 +949,7 @@ test "negation f32" {
910949 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
912951 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
913953
914954 const S = struct {
915955 fn doTheTest() !void {
......@@ -929,6 +969,7 @@ test "negation f64" {
929969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
930970 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
931971 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
972 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
932973
933974 const S = struct {
934975 fn doTheTest() !void {
......@@ -950,6 +991,7 @@ test "negation f80" {
950991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
951992 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
952993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
953995
954996 const S = struct {
955997 fn doTheTest() !void {
......@@ -971,6 +1013,7 @@ test "negation f128" {
9711013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9721014 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9731015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9741017
9751018 const S = struct {
9761019 fn doTheTest() !void {
......@@ -989,6 +1032,7 @@ test "negation f128" {
9891032test "eval @setFloatMode at compile-time" {
9901033 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9911034 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1035 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9921036
9931037 const result = comptime fnWithFloatMode();
9941038 try expect(result == 1234.0);
......@@ -1014,6 +1058,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
10141058 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10151059 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10161060 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10171062
10181063 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
10191064 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" {
10251070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10261071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10271072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1073 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10281074
10291075 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
10301076 const pos = @as(F, 1) / @as(F, 0);
......@@ -1044,6 +1090,7 @@ test "nan negation f16" {
10441090 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10451091 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10461092 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1093 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10471094
10481095 const nan_comptime = comptime math.nan(f16);
10491096 const neg_nan_comptime = -nan_comptime;
......@@ -1062,6 +1109,7 @@ test "nan negation f32" {
10621109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10631110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10641111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10651113
10661114 const nan_comptime = comptime math.nan(f32);
10671115 const neg_nan_comptime = -nan_comptime;
......@@ -1081,6 +1129,7 @@ test "nan negation f64" {
10811129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10821130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10831131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10841133
10851134 const nan_comptime = comptime math.nan(f64);
10861135 const neg_nan_comptime = -nan_comptime;
......@@ -1101,6 +1150,7 @@ test "nan negation f128" {
11011150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11021151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11031152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11041154
11051155 const nan_comptime = comptime math.nan(f128);
11061156 const neg_nan_comptime = -nan_comptime;
......@@ -1121,6 +1171,7 @@ test "nan negation f80" {
11211171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11221172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11231173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11241175
11251176 const nan_comptime = comptime math.nan(f80);
11261177 const neg_nan_comptime = -nan_comptime;
test/behavior/fn.zig+33
......@@ -5,6 +5,8 @@ const expect = testing.expect;
55const expectEqual = testing.expectEqual;
66
77test "params" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
810 try expect(testParamsAdd(22, 11) == 33);
911}
1012fn testParamsAdd(a: i32, b: i32) i32 {
......@@ -12,6 +14,8 @@ fn testParamsAdd(a: i32, b: i32) i32 {
1214}
1315
1416test "local variables" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1519 testLocVars(2);
1620}
1721fn testLocVars(b: i32) void {
......@@ -20,6 +24,8 @@ fn testLocVars(b: i32) void {
2024}
2125
2226test "mutable local variables" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
2329 var zero: i32 = 0;
2430 try expect(zero == 0);
2531
......@@ -51,6 +57,8 @@ test "weird function name" {
5157}
5258
5359test "assign inline fn to const variable" {
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
61
5462 const a = inlineFn;
5563 a();
5664}
......@@ -68,6 +76,8 @@ fn outer(y: u32) *const fn (u32) u32 {
6876}
6977
7078test "return inner function which references comptime variable of outer function" {
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
80
7181 var func = outer(10);
7282 try expect(func(3) == 7);
7383}
......@@ -99,6 +109,7 @@ test "inline function call that calls optional function pointer, return pointer
99109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
100110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
101111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102113
103114 const S = struct {
104115 field: u32,
......@@ -144,6 +155,7 @@ fn fnWithUnreachable() noreturn {
144155
145156test "extern struct with stdcallcc fn pointer" {
146157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147159
148160 const S = extern struct {
149161 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" {
174186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
175187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
177190
178191 try expect(fComplexCallconvRet(3).x == 9);
179192}
180193
181194test "pass by non-copying value" {
182195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
183197
184198 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
185199}
......@@ -195,6 +209,7 @@ fn addPointCoords(pt: Point) i32 {
195209
196210test "pass by non-copying value through var arg" {
197211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
198213
199214 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
200215}
......@@ -206,6 +221,7 @@ fn addPointCoordsVar(pt: anytype) !i32 {
206221
207222test "pass by non-copying value as method" {
208223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
209225
210226 var pt = Point2{ .x = 1, .y = 2 };
211227 try expect(pt.addPointCoords() == 3);
......@@ -222,6 +238,7 @@ const Point2 = struct {
222238
223239test "pass by non-copying value as method, which is generic" {
224240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225242
226243 var pt = Point3{ .x = 1, .y = 2 };
227244 try expect(pt.addPointCoords(i32) == 3);
......@@ -239,6 +256,7 @@ const Point3 = struct {
239256
240257test "pass by non-copying value as method, at comptime" {
241258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
242260
243261 comptime {
244262 var pt = Point2{ .x = 1, .y = 2 };
......@@ -250,6 +268,7 @@ test "implicit cast fn call result to optional in field result" {
250268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
251269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
253272
254273 const S = struct {
255274 fn entry() !void {
......@@ -276,6 +295,7 @@ test "implicit cast fn call result to optional in field result" {
276295test "void parameters" {
277296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279299
280300 try voidFun(1, void{}, 2, {});
281301}
......@@ -301,6 +321,7 @@ test "function pointers" {
301321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
302322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
303323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
304325
305326 const fns = [_]*const @TypeOf(fn1){
306327 &fn1,
......@@ -338,6 +359,7 @@ test "function call with anon list literal" {
338359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
339360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
340361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
341363
342364 const S = struct {
343365 fn doTheTest() !void {
......@@ -358,6 +380,7 @@ test "function call with anon list literal - 2D" {
358380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
359381 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
360382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
361384
362385 const S = struct {
363386 fn doTheTest() !void {
......@@ -376,6 +399,8 @@ test "function call with anon list literal - 2D" {
376399}
377400
378401test "ability to give comptime types and non comptime types to same parameter" {
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
403
379404 const S = struct {
380405 fn doTheTest() !void {
381406 var x: i32 = 1;
......@@ -393,6 +418,8 @@ test "ability to give comptime types and non comptime types to same parameter" {
393418}
394419
395420test "function with inferred error set but returning no error" {
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422
396423 const S = struct {
397424 fn foo() !void {}
398425 };
......@@ -403,6 +430,7 @@ test "function with inferred error set but returning no error" {
403430
404431test "import passed byref to function in return type" {
405432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
433 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
406434
407435 const S = struct {
408436 fn get() @import("std").ArrayListUnmanaged(i32) {
......@@ -419,6 +447,7 @@ test "implicit cast function to function ptr" {
419447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420448 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
421449 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
450 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
422451
423452 const S1 = struct {
424453 export fn someFunctionThatReturnsAValue() c_int {
......@@ -437,6 +466,7 @@ test "implicit cast function to function ptr" {
437466test "method call with optional and error union first param" {
438467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
439468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
440470
441471 const S = struct {
442472 x: i32 = 1234,
......@@ -456,6 +486,7 @@ test "method call with optional and error union first param" {
456486test "method call with optional pointer first param" {
457487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
458488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
459490
460491 const S = struct {
461492 x: i32 = 1234,
......@@ -475,6 +506,7 @@ test "using @ptrCast on function pointers" {
475506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
477508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
478510
479511 const S = struct {
480512 const A = struct { data: [4]u8 };
......@@ -512,6 +544,7 @@ test "function returns function returning type" {
512544
513545test "peer type resolution of inferred error set with non-void payload" {
514546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
515548
516549 const S = struct {
517550 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 {
3434test "fn delegation" {
3535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3636 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3738
3839 const foo = Foo{};
3940 try expect(foo.one() == 11);
test/behavior/fn_in_struct_in_comptime.zig+3
......@@ -1,3 +1,4 @@
1const builtin = @import("builtin");
12const expect = @import("std").testing.expect;
23
34fn get_foo() fn (*u8) usize {
......@@ -12,6 +13,8 @@ fn get_foo() fn (*u8) usize {
1213}
1314
1415test "define a function in an anonymous struct in comptime" {
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
17
1518 const foo = get_foo();
1619 try expect(foo(@intToPtr(*u8, 12345)) == 12345);
1720}
test/behavior/for.zig+22
......@@ -7,6 +7,7 @@ const mem = std.mem;
77test "continue in for loop" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 const array = [_]i32{ 1, 2, 3, 4, 5 };
1213 var sum: i32 = 0;
......@@ -21,6 +22,8 @@ test "continue in for loop" {
2122}
2223
2324test "break from outer for loop" {
25 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
26
2427 try testBreakOuter();
2528 comptime try testBreakOuter();
2629}
......@@ -38,6 +41,8 @@ fn testBreakOuter() !void {
3841}
3942
4043test "continue outer for loop" {
44 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
45
4146 try testContinueOuter();
4247 comptime try testContinueOuter();
4348}
......@@ -69,6 +74,7 @@ test "basic for loop" {
6974 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7075 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7278
7379 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" {
112118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
114120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
115122
116123 const S = struct {
117124 fn doTheTest(slice: []const u8) !void {
......@@ -132,6 +139,7 @@ test "for with null and T peer types and inferred result location type" {
132139test "2 break statements and an else" {
133140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135143
136144 const S = struct {
137145 fn entry(t: bool, f: bool) !void {
......@@ -153,6 +161,7 @@ test "for loop with pointer elem var" {
153161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156165
157166 const source = "abcdefg";
158167 var target: [source.len]u8 = undefined;
......@@ -179,6 +188,7 @@ fn mangleString(s: []u8) void {
179188test "for copies its payload" {
180189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
181190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
182192
183193 const S = struct {
184194 fn doTheTest() !void {
......@@ -198,6 +208,7 @@ test "for on slice with allowzero ptr" {
198208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
199209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
201212
202213 const S = struct {
203214 fn doTheTest(slice: []const u8) !void {
......@@ -213,6 +224,7 @@ test "for on slice with allowzero ptr" {
213224test "else continue outer for" {
214225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
215226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
216228
217229 var i: usize = 6;
218230 var buf: [5]u8 = undefined;
......@@ -226,6 +238,7 @@ test "else continue outer for" {
226238
227239test "for loop with else branch" {
228240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
229242
230243 {
231244 var x = [_]u32{ 1, 2 };
......@@ -248,6 +261,7 @@ test "for loop with else branch" {
248261test "count over fixed range" {
249262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
250263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
251265
252266 var sum: usize = 0;
253267 for (0..6) |i| {
......@@ -260,6 +274,7 @@ test "count over fixed range" {
260274test "two counters" {
261275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
263278
264279 var sum: usize = 0;
265280 for (0..10, 10..20) |i, j| {
......@@ -273,6 +288,7 @@ test "two counters" {
273288test "1-based counter and ptr to array" {
274289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
275290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
276292
277293 var ok: usize = 0;
278294
......@@ -306,6 +322,7 @@ test "slice and two counters, one is offset and one is runtime" {
306322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
308324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
309326
310327 const slice: []const u8 = "blah";
311328 var start: usize = 0;
......@@ -334,6 +351,7 @@ test "two slices, one captured by-ref" {
334351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337355
338356 var buf: [10]u8 = undefined;
339357 const slice1: []const u8 = "blah";
......@@ -353,6 +371,7 @@ test "raw pointer and slice" {
353371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356375
357376 var buf: [10]u8 = undefined;
358377 const slice: []const u8 = "blah";
......@@ -372,6 +391,7 @@ test "raw pointer and counter" {
372391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
375395
376396 var buf: [10]u8 = undefined;
377397 const ptr: [*]u8 = &buf;
......@@ -390,6 +410,7 @@ test "inline for with slice as the comptime-known" {
390410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391411 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
392412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
393414
394415 const comptime_slice = "hello";
395416 var runtime_i: usize = 3;
......@@ -420,6 +441,7 @@ test "inline for with counter as the comptime-known" {
420441 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421442 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
422443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
444 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
423445
424446 var runtime_slice = "hello";
425447 var runtime_i: usize = 3;
test/behavior/generics.zig+24
......@@ -5,6 +5,8 @@ const expect = testing.expect;
55const expectEqual = testing.expectEqual;
66
77test "one param, explicit comptime" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9
810 var x: usize = 0;
911 x += checkSize(i32);
1012 x += checkSize(bool);
......@@ -19,6 +21,7 @@ fn checkSize(comptime T: type) usize {
1921test "simple generic fn" {
2022 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2225
2326 try expect(max(i32, 3, -1) == 3);
2427 try expect(max(u8, 1, 100) == 100);
......@@ -59,6 +62,7 @@ test "fn with comptime args" {
5962 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6063 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6266
6367 try expect(gimmeTheBigOne(1234, 5678) == 5678);
6468 try expect(shouldCallSameInstance(34, 12) == 34);
......@@ -69,6 +73,7 @@ test "anytype params" {
6973 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7074 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7277
7378 try expect(max_i32(12, 34) == 34);
7479 try expect(max_f64(1.2, 3.4) == 3.4);
......@@ -93,6 +98,7 @@ fn max_f64(a: f64, b: f64) f64 {
9398test "type constructed by comptime function call" {
9499 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
95100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
96102
97103 var l: SimpleList(10) = undefined;
98104 l.array[0] = 10;
......@@ -116,6 +122,7 @@ test "function with return type type" {
116122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
117123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
118124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
119126
120127 var list: List(i32) = undefined;
121128 var list2: List(i32) = undefined;
......@@ -147,6 +154,8 @@ fn GenericDataThing(comptime count: isize) type {
147154}
148155
149156test "use generic param in generic param" {
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
158
150159 try expect(aGenericFn(i32, 3, 4) == 7);
151160}
152161fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
......@@ -157,6 +166,7 @@ test "generic fn with implicit cast" {
157166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
159168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
169 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160170
161171 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
162172 try expect(getFirstByte(u16, &[_]u16{
......@@ -175,6 +185,7 @@ test "generic fn keeps non-generic parameter types" {
175185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
176186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
177187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
178189
179190 const A = 128;
180191
......@@ -209,6 +220,7 @@ fn foo2(arg: anytype) bool {
209220
210221test "generic struct" {
211222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212224
213225 var a1 = GenNode(i32){
214226 .value = 13,
......@@ -249,6 +261,7 @@ test "generic function instantiation turns into comptime call" {
249261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
250262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
251263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
252265
253266 const S = struct {
254267 fn doTheTest() !void {
......@@ -298,6 +311,7 @@ test "generic function with void and comptime parameter" {
298311test "anonymous struct return type referencing comptime parameter" {
299312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
300313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301315
302316 const S = struct {
303317 pub fn extraData(comptime T: type, index: usize) struct { data: T, end: usize } {
......@@ -316,6 +330,7 @@ test "generic function instantiation non-duplicates" {
316330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
317331 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
318332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
319334 if (builtin.os.tag == .wasi) return error.SkipZigTest;
320335
321336 const S = struct {
......@@ -351,6 +366,8 @@ test "generic instantiation of tagged union with only one field" {
351366}
352367
353368test "nested generic function" {
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
370
354371 const S = struct {
355372 fn foo(comptime T: type, callback: *const fn (user_data: T) anyerror!void, data: T) anyerror!void {
356373 try callback(data);
......@@ -366,6 +383,8 @@ test "nested generic function" {
366383}
367384
368385test "extern function used as generic parameter" {
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387
369388 const S = struct {
370389 extern fn usedAsGenericParameterFoo() void;
371390 extern fn usedAsGenericParameterBar() void;
......@@ -393,6 +412,8 @@ test "generic struct as parameter type" {
393412}
394413
395414test "slice as parameter type" {
415 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
416
396417 const S = struct {
397418 fn internComptimeString(comptime str: []const u8) *const []const u8 {
398419 return &struct {
......@@ -407,6 +428,8 @@ test "slice as parameter type" {
407428}
408429
409430test "null sentinel pointer passed as generic argument" {
431 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
432
410433 const S = struct {
411434 fn doTheTest(a: anytype) !void {
412435 try std.testing.expect(@ptrToInt(a) == 8);
......@@ -417,6 +440,7 @@ test "null sentinel pointer passed as generic argument" {
417440
418441test "generic function passed as comptime argument" {
419442 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
443 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
420444
421445 const S = struct {
422446 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;
4545
4646test "unwrap mutable global var" {
4747 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4849
4950 if (global_with_val) |v| {
5051 try expect(v == 0);
......@@ -70,6 +71,8 @@ test "labeled break inside comptime if inside runtime if" {
7071}
7172
7273test "const result loc, runtime if cond, else unreachable" {
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
75
7376 const Num = enum { One, Two };
7477
7578 var t = true;
......@@ -115,6 +118,7 @@ test "if peer expressions inferred optional type" {
115118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
117120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
118122
119123 var self: []const u8 = "abcdef";
120124 var index: usize = 0;
......@@ -132,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti
132136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
133137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
134138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135140
136141 const A = struct { b: u64, c: u64 };
137142 var d: bool = true;
test/behavior/inline_switch.zig+5
......@@ -47,6 +47,7 @@ test "inline switch unions" {
4747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4848 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4949 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
5152 var x: U = .a;
5253 switch (x) {
......@@ -72,6 +73,7 @@ test "inline switch unions" {
7273test "inline else bool" {
7374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7577
7678 var a = true;
7779 switch (a) {
......@@ -83,6 +85,7 @@ test "inline else bool" {
8385test "inline else error" {
8486 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8587 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8689
8790 const Err = error{ a, b, c };
8891 var a = Err.a;
......@@ -138,6 +141,8 @@ test "inline else int all values" {
138141}
139142
140143test "inline switch capture is set when switch operand is comptime known" {
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145
141146 const U2 = union(enum) {
142147 a: u32,
143148 };
test/behavior/int128.zig+5
......@@ -8,6 +8,7 @@ test "uint128" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 var buff: u128 = maxInt(u128);
1314 try expect(buff == maxInt(u128));
......@@ -26,6 +27,7 @@ test "undefined 128 bit int" {
2627 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2728 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2829 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2931
3032 @setRuntimeSafety(true);
3133
......@@ -43,6 +45,7 @@ test "int128" {
4345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4649
4750 var buff: i128 = -1;
4851 try expect(buff < 0 and (buff + 1) == 0);
......@@ -66,6 +69,7 @@ test "truncate int128" {
6669 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6770 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6871 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6973
7074 {
7175 var buff: u128 = maxInt(u128);
......@@ -87,6 +91,7 @@ test "shift int128" {
8791 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8892 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9095
9196 const types = .{ u128, i128 };
9297 inline for (types) |t| {
test/behavior/int_comparison_elision.zig+2
......@@ -4,6 +4,8 @@ const maxInt = std.math.maxInt;
44const builtin = @import("builtin");
55
66test "int comparison elision" {
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8
79 testIntEdges(u0);
810 testIntEdges(i0);
911 testIntEdges(u1);
test/behavior/inttoptr.zig+1
......@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
1920}
test/behavior/ir_block_deps.zig+1
......@@ -21,6 +21,7 @@ test "ir block deps" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
2526 try expect((foo(1) catch unreachable) == 0);
2627 try expect((foo(2) catch unreachable) == 0);
test/behavior/lower_strlit_to_vector.zig+1
......@@ -6,6 +6,7 @@ test "strlit to vector" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 const strlit = "0123456789abcdef0123456789ABCDEF";
1112 const vec_from_strlit: @Vector(32, u8) = strlit.*;
test/behavior/math.zig+42
......@@ -11,6 +11,7 @@ const math = std.math;
1111test "assignment operators" {
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 var i: u32 = 0;
1617 i += 5;
......@@ -64,6 +65,7 @@ test "@clz" {
6465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
6870 try testClz();
6971 comptime try testClz();
......@@ -82,6 +84,7 @@ test "@clz big ints" {
8284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8588
8689 try testClzBigInts();
8790 comptime try testClzBigInts();
......@@ -102,6 +105,7 @@ test "@clz vectors" {
102105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
104107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
105109
106110 try testClzVectors();
107111 comptime try testClzVectors();
......@@ -142,6 +146,7 @@ test "@ctz" {
142146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145150
146151 try testCtz();
147152 comptime try testCtz();
......@@ -164,6 +169,7 @@ test "@ctz vectors" {
164169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
165170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
172 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
167173
168174 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
169175 // This regressed with LLVM 14:
......@@ -204,6 +210,7 @@ test "float equality" {
204210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205211 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
207214
208215 const x: f64 = 0.012;
209216 const y: f64 = x + 1.0;
......@@ -381,6 +388,7 @@ test "binary not 128-bit" {
381388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
382389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
383390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
384392
385393 try expect(comptime x: {
386394 break :x ~@as(u128, 0x55555555_55555555_55555555_55555555) == 0xaaaaaaaa_aaaaaaaa_aaaaaaaa_aaaaaaaa;
......@@ -404,6 +412,7 @@ test "division" {
404412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
405413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
406414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
415 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
407416
408417 try testDivision();
409418 comptime try testDivision();
......@@ -484,6 +493,7 @@ test "division half-precision floats" {
484493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
485494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
486495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
487497
488498 try testDivisionFP16();
489499 comptime try testDivisionFP16();
......@@ -564,6 +574,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {
564574test "negation wrapping" {
565575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
566576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
577 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567578
568579 try expectEqual(@as(u1, 1), negateWrap(u1, 1));
569580}
......@@ -604,6 +615,8 @@ test "bit shift a u1" {
604615}
605616
606617test "truncating shift right" {
618 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
619
607620 try testShrTrunc(maxInt(u16));
608621 comptime try testShrTrunc(maxInt(u16));
609622}
......@@ -618,6 +631,7 @@ test "f128" {
618631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
619632 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
620633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
634 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
621635
622636 try test_f128();
623637 comptime try test_f128();
......@@ -647,6 +661,7 @@ test "128-bit multiplication" {
647661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
648662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
649663 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
650665
651666 {
652667 var a: i128 = 3;
......@@ -672,6 +687,7 @@ test "@addWithOverflow" {
672687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
673688 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
674689 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
690 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
675691
676692 {
677693 var a: u8 = 250;
......@@ -717,6 +733,7 @@ test "@addWithOverflow" {
717733test "small int addition" {
718734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
719735 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
736 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
720737
721738 var x: u2 = 0;
722739 try expect(x == 0);
......@@ -738,6 +755,7 @@ test "small int addition" {
738755test "basic @mulWithOverflow" {
739756 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
740757 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
741759
742760 {
743761 var a: u8 = 86;
......@@ -768,6 +786,7 @@ test "extensive @mulWithOverflow" {
768786 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
769787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
770788 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
789 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
771790
772791 {
773792 var a: u5 = 3;
......@@ -932,6 +951,7 @@ test "@mulWithOverflow bitsize > 32" {
932951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
933952 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
934953 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
954 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
935955
936956 {
937957 var a: u62 = 3;
......@@ -990,6 +1010,7 @@ test "@subWithOverflow" {
9901010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9911011 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9921012 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1013 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9931014
9941015 {
9951016 var a: u8 = 1;
......@@ -1037,6 +1058,8 @@ test "@shlWithOverflow" {
10371058 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10381059 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10391060 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1062
10401063 {
10411064 var a: u4 = 2;
10421065 var b: u2 = 1;
......@@ -1114,6 +1137,8 @@ test "overflow arithmetic with u0 values" {
11141137}
11151138
11161139test "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
11171142 try expect(5 / 3 == 1);
11181143 try expect(-5 / -3 == 1);
11191144 try expect(-6 / 3 == -2);
......@@ -1132,6 +1157,7 @@ test "quad hex float literal parsing accurate" {
11321157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11331158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11341159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1160 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11351161
11361162 const a: f128 = 0x1.1111222233334444555566667777p+0;
11371163
......@@ -1232,6 +1258,8 @@ fn testShlTrunc(x: u16) !void {
12321258}
12331259
12341260test "exact shift left" {
1261 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1262
12351263 try testShlExact(0b00110101);
12361264 comptime try testShlExact(0b00110101);
12371265}
......@@ -1241,6 +1269,8 @@ fn testShlExact(x: u8) !void {
12411269}
12421270
12431271test "exact shift right" {
1272 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1273
12441274 try testShrExact(0b10110100);
12451275 comptime try testShrExact(0b10110100);
12461276}
......@@ -1280,6 +1310,7 @@ test "remainder division" {
12801310 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12811311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12821312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12831314 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12841315
12851316 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
......@@ -1316,6 +1347,7 @@ test "float remainder division using @rem" {
13161347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13171348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13181349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13191351 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13201352
13211353 comptime try frem(f16);
......@@ -1359,6 +1391,7 @@ test "float modulo division using @mod" {
13591391 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13601392 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13611393 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1394 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13621395
13631396 comptime try fmod(f16);
13641397 comptime try fmod(f32);
......@@ -1401,6 +1434,7 @@ test "@round" {
14011434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14021435 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14031436 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1437 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14041438
14051439 try testRound(f64, 12.0);
14061440 comptime try testRound(f64, 12.0);
......@@ -1421,6 +1455,7 @@ test "@round f80" {
14211455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14221456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14231457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1458 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14241459
14251460 try testRound(f80, 12.0);
14261461 comptime try testRound(f80, 12.0);
......@@ -1432,6 +1467,7 @@ test "@round f128" {
14321467 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14331468 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14341469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14351471
14361472 try testRound(f128, 12.0);
14371473 comptime try testRound(f128, 12.0);
......@@ -1449,6 +1485,7 @@ test "vector integer addition" {
14491485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14501486 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14511487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1488 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14521489
14531490 const S = struct {
14541491 fn doTheTest() !void {
......@@ -1470,6 +1507,7 @@ test "NaN comparison" {
14701507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14711508 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14721509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1510 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14731511
14741512 try testNanEqNan(f16);
14751513 try testNanEqNan(f32);
......@@ -1487,6 +1525,7 @@ test "NaN comparison f80" {
14871525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14881526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14891527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1528 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14901529
14911530 try testNanEqNan(f80);
14921531 comptime try testNanEqNan(f80);
......@@ -1509,6 +1548,7 @@ test "vector comparison" {
15091548 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15101549 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
15111550 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1551 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15121552
15131553 const S = struct {
15141554 fn doTheTest() !void {
......@@ -1538,6 +1578,7 @@ test "signed zeros are represented properly" {
15381578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15391579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15401580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1581 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15411582
15421583 const S = struct {
15431584 fn doTheTest() !void {
......@@ -1573,6 +1614,7 @@ test "absFloat" {
15731614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15741615 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
15751616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15761618
15771619 try testAbsFloat();
15781620 comptime try testAbsFloat();
test/behavior/maximum_minimum.zig+11
......@@ -8,6 +8,7 @@ test "@max" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 const S = struct {
1314 fn doTheTest() !void {
......@@ -27,6 +28,7 @@ test "@max on vectors" {
2728 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2829 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2930 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
3133 const S = struct {
3234 fn doTheTest() !void {
......@@ -54,6 +56,7 @@ test "@min" {
5456 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5658 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5760
5861 const S = struct {
5962 fn doTheTest() !void {
......@@ -73,6 +76,7 @@ test "@min for vectors" {
7376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7680
7781 const S = struct {
7882 fn doTheTest() !void {
......@@ -122,6 +126,8 @@ test "@min/max for floats" {
122126}
123127
124128test "@min/@max on lazy values" {
129 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
130
125131 const A = extern struct { u8_4: [4]u8 };
126132 const B = extern struct { u8_16: [16]u8 };
127133 const size = @max(@sizeOf(A), @sizeOf(B));
......@@ -129,6 +135,8 @@ test "@min/@max on lazy values" {
129135}
130136
131137test "@min/@max more than two arguments" {
138 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139
132140 const x: u32 = 30;
133141 const y: u32 = 10;
134142 const z: u32 = 20;
......@@ -142,6 +150,7 @@ test "@min/@max more than two vector arguments" {
142150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
145154
146155 const x: @Vector(2, u32) = .{ 3, 2 };
147156 const y: @Vector(2, u32) = .{ 4, 1 };
......@@ -154,6 +163,7 @@ test "@min/@max notices bounds" {
154163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
155164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157167
158168 var x: u16 = 20;
159169 const y = 30;
......@@ -172,6 +182,7 @@ test "@min/@max notices vector bounds" {
172182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
173183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
174184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
175186
176187 var x: @Vector(2, u16) = .{ 140, 40 };
177188 const y: @Vector(2, u64) = .{ 5, 100 };
test/behavior/member_func.zig+2
......@@ -30,6 +30,7 @@ test "standard field calls" {
3030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3334
3435 try expect(HasFuncs.one(0) == 1);
3536 try expect(HasFuncs.two(0) == 2);
......@@ -73,6 +74,7 @@ test "@field field calls" {
7374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7475 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7678
7779 try expect(@field(HasFuncs, "one")(0) == 1);
7880 try expect(@field(HasFuncs, "two")(0) == 2);
test/behavior/memcpy.zig+2
......@@ -6,6 +6,7 @@ test "memcpy and memset intrinsics" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
1011 try testMemcpyMemset();
1112 try comptime testMemcpyMemset();
......@@ -27,6 +28,7 @@ test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {
2728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2930 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
3133 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
3234 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
test/behavior/memset.zig+7
......@@ -6,6 +6,7 @@ test "@memset on array pointers" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910 if (builtin.zig_backend == .stage2_wasm) {
1011 // TODO: implement memset when element ABI size > 1
1112 return error.SkipZigTest;
......@@ -38,6 +39,7 @@ test "@memset on slices" {
3839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4041 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4143 if (builtin.zig_backend == .stage2_wasm) {
4244 // TODO: implement memset when element ABI size > 1
4345 // TODO: implement memset on slices
......@@ -75,6 +77,7 @@ test "memset with bool element" {
7577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7678 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7881 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
7982
8083 var buf: [5]bool = undefined;
......@@ -87,6 +90,7 @@ test "memset with 1-byte struct element" {
8790 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8891 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8992 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9094 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
9195
9296 const S = struct { x: bool };
......@@ -100,6 +104,7 @@ test "memset with 1-byte array element" {
100104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
101105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
102106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
103108 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
104109
105110 const A = [1]bool;
......@@ -113,6 +118,7 @@ test "memset with large array element, runtime known" {
113118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
114119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
115120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
116122 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
117123 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" {
131137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
132138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
133139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
140 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134141 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
135142 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 {
1313
1414test "merge error sets" {
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 if (foo()) {
1819 @panic("unexpected");
test/behavior/muladd.zig+9
......@@ -10,6 +10,7 @@ test "@mulAdd" {
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1314
1415 comptime try testMulAdd();
1516 try testMulAdd();
......@@ -35,6 +36,7 @@ test "@mulAdd f16" {
3536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3637 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3738 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3840
3941 comptime try testMulAdd16();
4042 try testMulAdd16();
......@@ -53,6 +55,7 @@ test "@mulAdd f80" {
5355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5456 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5557 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5659
5760 comptime try testMulAdd80();
5861 try testMulAdd80();
......@@ -71,6 +74,7 @@ test "@mulAdd f128" {
7174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7478
7579 comptime try testMulAdd128();
7680 try testMulAdd128();
......@@ -101,6 +105,7 @@ test "vector f16" {
101105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
102106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
103107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
104109
105110 comptime try vector16();
106111 try vector16();
......@@ -124,6 +129,7 @@ test "vector f32" {
124129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127133
128134 comptime try vector32();
129135 try vector32();
......@@ -147,6 +153,7 @@ test "vector f64" {
147153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
149155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
150157
151158 comptime try vector64();
152159 try vector64();
......@@ -169,6 +176,7 @@ test "vector f80" {
169176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
170177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
171178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
172180
173181 comptime try vector80();
174182 try vector80();
......@@ -192,6 +200,7 @@ test "vector f128" {
192200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
194202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
195204
196205 comptime try vector128();
197206 try vector128();
test/behavior/null.zig+7
......@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {
3232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3536
3637 var maybe_bool: ?bool = true;
3738
......@@ -52,6 +53,7 @@ test "maybe return" {
5253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5557
5658 try maybeReturnImpl();
5759 comptime try maybeReturnImpl();
......@@ -82,6 +84,7 @@ fn testTestNullRuntime(x: ?i32) !void {
8284test "optional void" {
8385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8588
8689 try optionalVoidImpl();
8790 comptime try optionalVoidImpl();
......@@ -105,6 +108,7 @@ const Empty = struct {};
105108test "optional struct{}" {
106109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
107110 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
108112
109113 _ = try optionalEmptyStructImpl();
110114 _ = comptime try optionalEmptyStructImpl();
......@@ -130,6 +134,7 @@ test "null with default unwrap" {
130134
131135test "optional pointer to 0 bit type null value at runtime" {
132136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
133138
134139 const EmptyStruct = struct {};
135140 var x: ?*EmptyStruct = null;
......@@ -140,6 +145,7 @@ test "if var maybe pointer" {
140145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
141146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
142147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143149
144150 try expect(shouldBeAPlus1(Particle{
145151 .a = 14,
......@@ -183,6 +189,7 @@ test "unwrap optional which is field of global var" {
183189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
184190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
185191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
186193
187194 struct_with_optional.field = null;
188195 if (struct_with_optional.field) |payload| {
test/behavior/optional.zig+25
......@@ -8,6 +8,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
88test "passing an optional integer as a parameter" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 const S = struct {
1314 fn entry() bool {
......@@ -27,6 +28,7 @@ pub const EmptyStruct = struct {};
2728
2829test "optional pointer to size zero struct" {
2930 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3032
3133 var e = EmptyStruct{};
3234 var o: ?*EmptyStruct = &e;
......@@ -34,6 +36,8 @@ test "optional pointer to size zero struct" {
3436}
3537
3638test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
3741 try testNullPtrsEql();
3842 comptime try testNullPtrsEql();
3943}
......@@ -58,6 +62,7 @@ test "optional with void type" {
5862 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6064 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6166
6267 const Foo = struct {
6368 x: ?void,
......@@ -71,6 +76,7 @@ test "address of unwrap optional" {
7176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7378 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7480
7581 const S = struct {
7682 const Foo = struct {
......@@ -92,6 +98,7 @@ test "nested optional field in struct" {
9298 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9399 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
94100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
95102
96103 const S2 = struct {
97104 y: u8,
......@@ -109,6 +116,7 @@ test "equality compare optional with non-optional" {
109116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
110117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
111118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
112120
113121 try test_cmp_optional_non_optional();
114122 comptime try test_cmp_optional_non_optional();
......@@ -146,6 +154,7 @@ fn test_cmp_optional_non_optional() !void {
146154test "unwrap function call with optional pointer return value" {
147155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
149158
150159 const S = struct {
151160 fn entry() !void {
......@@ -167,6 +176,7 @@ test "unwrap function call with optional pointer return value" {
167176test "nested orelse" {
168177 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
169178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170180
171181 const S = struct {
172182 fn entry() !void {
......@@ -193,6 +203,7 @@ test "nested orelse" {
193203test "self-referential struct through a slice of optional" {
194204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
195205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
196207
197208 const S = struct {
198209 const Node = struct {
......@@ -228,6 +239,7 @@ test "coerce an anon struct literal to optional struct" {
228239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
229240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
230241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
231243
232244 const S = struct {
233245 const Struct = struct {
......@@ -247,6 +259,7 @@ test "0-bit child type coerced to optional return ptr result location" {
247259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
249261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
250263
251264 const S = struct {
252265 fn doTheTest() !void {
......@@ -271,6 +284,7 @@ test "0-bit child type coerced to optional return ptr result location" {
271284
272285test "0-bit child type coerced to optional" {
273286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
287 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274288
275289 const S = struct {
276290 fn doTheTest() !void {
......@@ -298,6 +312,7 @@ test "array of optional unaligned types" {
298312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
299313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
300314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
301316
302317 const Enum = enum { one, two, three };
303318
......@@ -334,6 +349,7 @@ test "optional pointer to zero bit optional payload" {
334349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
335350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
336351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337353
338354 const B = struct {
339355 fn foo(_: *@This()) void {}
......@@ -354,6 +370,7 @@ test "optional pointer to zero bit error union payload" {
354370 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355371 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
356372 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
357374
358375 const B = struct {
359376 fn foo(_: *@This()) void {}
......@@ -387,6 +404,7 @@ const NoReturn = struct {
387404
388405test "optional of noreturn used with if" {
389406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
390408
391409 NoReturn.a = 64;
392410 if (NoReturn.loop()) |_| {
......@@ -398,6 +416,7 @@ test "optional of noreturn used with if" {
398416
399417test "optional of noreturn used with orelse" {
400418 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401420
402421 NoReturn.a = 64;
403422 const val = NoReturn.testOrelse();
......@@ -405,6 +424,8 @@ test "optional of noreturn used with orelse" {
405424}
406425
407426test "orelse on C pointer" {
427 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
428
408429 // TODO https://github.com/ziglang/zig/issues/6597
409430 const foo: [*c]const u8 = "hey";
410431 const d = foo orelse @compileError("bad");
......@@ -415,6 +436,7 @@ test "alignment of wrapping an optional payload" {
415436 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
416437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
417438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
418440
419441 const S = struct {
420442 const I = extern struct { x: i128 };
......@@ -431,6 +453,7 @@ test "Optional slice size is optimized" {
431453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
432454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
433455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
434457
435458 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
436459 var a: ?[]const u8 = null;
......@@ -442,6 +465,7 @@ test "Optional slice size is optimized" {
442465test "peer type resolution in nested if expressions" {
443466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
444467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
468 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
445469
446470 const Thing = struct { n: i32 };
447471 var a = false;
......@@ -467,6 +491,7 @@ test "peer type resolution in nested if expressions" {
467491test "cast slice to const slice nested in error union and optional" {
468492 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
494 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
470495
471496 const S = struct {
472497 fn inner() !?[]u8 {
test/behavior/packed-struct.zig+17
......@@ -7,6 +7,7 @@ const native_endian = builtin.cpu.arch.endian();
77
88test "flags in packed structs" {
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 const Flags1 = packed struct {
1213 // first 8 bits
......@@ -93,6 +94,7 @@ test "flags in packed structs" {
9394
9495test "consistent size of packed structs" {
9596 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9698
9799 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };
98100 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };
......@@ -123,6 +125,7 @@ test "correct sizeOf and offsets in packed structs" {
123125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125127 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
126129
127130 const PStruct = packed struct {
128131 bool_a: bool,
......@@ -190,6 +193,7 @@ test "nested packed structs" {
190193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
191194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
192195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
193197
194198 const S1 = packed struct { a: u8, b: u8, c: u8 };
195199
......@@ -235,6 +239,7 @@ test "regular in irregular packed struct" {
235239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
236240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
237241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
238243
239244 const Irregular = packed struct {
240245 bar: Regular = Regular{},
......@@ -254,6 +259,7 @@ test "byte-aligned field pointer offsets" {
254259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
255260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
256261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
257263
258264 const S = struct {
259265 const A = packed struct {
......@@ -354,6 +360,7 @@ test "load pointer from packed struct" {
354360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
355361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
356362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
357364
358365 const A = struct {
359366 index: u16,
......@@ -375,6 +382,7 @@ test "@ptrToInt on a packed struct field" {
375382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
377384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
378386
379387 const S = struct {
380388 const P = packed struct {
......@@ -395,6 +403,7 @@ test "optional pointer in packed struct" {
395403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
397405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
406 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
398407
399408 const T = packed struct { ptr: ?*const u8 };
400409 var n: u8 = 0;
......@@ -409,6 +418,7 @@ test "nested packed struct field access test" {
409418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
410419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
411420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
412422 //
413423 const Vec2 = packed struct {
414424 x: f32,
......@@ -525,6 +535,7 @@ test "runtime init of unnamed packed struct type" {
525535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
526536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
527537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
528539
529540 var z: u8 = 123;
530541 try (packed struct {
......@@ -539,6 +550,7 @@ test "packed struct passed to callconv(.C) function" {
539550 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
540551 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
541552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
542554
543555 const S = struct {
544556 const Packed = packed struct {
......@@ -564,6 +576,8 @@ test "overaligned pointer to packed struct" {
564576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
565577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
566578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580
567581 const S = packed struct { a: u32, b: u32 };
568582 var foo: S align(4) = .{ .a = 123, .b = 456 };
569583 const ptr: *align(4) S = &foo;
......@@ -584,6 +598,7 @@ test "packed struct initialized in bitcast" {
584598 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
585599 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
586600 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
601 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
587602
588603 const T = packed struct { val: u8 };
589604 var val: u8 = 123;
......@@ -597,6 +612,7 @@ test "pointer to container level packed struct field" {
597612 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
598613 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
599614 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
615 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
600616
601617 const S = packed struct(u32) {
602618 test_bit: bool,
......@@ -621,6 +637,7 @@ test "store undefined to packed result location" {
621637 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
622638 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
623639 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
640 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
624641 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
625642
626643 var x: u4 = 0;
test/behavior/packed_struct_explicit_backing_int.zig+1
......@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 const S1 = packed struct { a: u8, b: u8, c: u8 };
1415
test/behavior/pointers.zig+23
......@@ -5,6 +5,7 @@ const expect = testing.expect;
55const expectError = testing.expectError;
66
77test "dereference pointer" {
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89 comptime try testDerefPtr();
910 try testDerefPtr();
1011}
......@@ -19,6 +20,7 @@ fn testDerefPtr() !void {
1920test "pointer arithmetic" {
2021 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2224
2325 var ptr: [*]const u8 = "abcd";
2426
......@@ -51,6 +53,7 @@ fn PtrOf(comptime T: type) type {
5153
5254test "implicit cast single item pointer to C pointer and back" {
5355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5457
5558 var y: u8 = 11;
5659 var x: [*c]u8 = &y;
......@@ -67,6 +70,7 @@ test "initialize const optional C pointer to null" {
6770
6871test "assigning integer to C pointer" {
6972 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7074
7175 var x: i32 = 0;
7276 var y: i32 = 1;
......@@ -83,6 +87,7 @@ test "assigning integer to C pointer" {
8387
8488test "C pointer comparison and arithmetic" {
8589 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
90 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8691
8792 const S = struct {
8893 fn doTheTest() !void {
......@@ -125,6 +130,7 @@ fn testDerefPtrOneVal() !void {
125130}
126131
127132test "peer type resolution with C pointers" {
133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
128134 var ptr_one: *u8 = undefined;
129135 var ptr_many: [*]u8 = undefined;
130136 var ptr_c: [*c]u8 = undefined;
......@@ -140,6 +146,7 @@ test "peer type resolution with C pointers" {
140146}
141147
142148test "peer type resolution with C pointer and const pointer" {
149 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143150 var ptr_c: [*c]u8 = undefined;
144151 const ptr_const: u8 = undefined;
145152 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" {
149156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
150157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
151158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
152160
153161 var slice: []const u8 = "aoeu";
154162 const opt_many_ptr: ?[*]const u8 = slice.ptr;
......@@ -163,6 +171,7 @@ test "implicit cast error unions with non-optional to optional pointer" {
163171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
164172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
165173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
166175
167176 const S = struct {
168177 fn doTheTest() !void {
......@@ -191,6 +200,7 @@ test "allowzero pointer and slice" {
191200 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
192201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
193202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194204
195205 var ptr = @intToPtr([*]allowzero i32, 0);
196206 var opt_ptr: ?[*]allowzero i32 = ptr;
......@@ -209,6 +219,7 @@ test "assign null directly to C pointer and test null equality" {
209219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
210220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
211221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
212223
213224 var x: [*c]i32 = null;
214225 try expect(x == null);
......@@ -275,6 +286,7 @@ test "array initialization types" {
275286test "null terminated pointer" {
276287 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
278290
279291 const S = struct {
280292 fn doTheTest() !void {
......@@ -292,6 +304,7 @@ test "null terminated pointer" {
292304test "allow any sentinel" {
293305 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
294306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
295308
296309 const S = struct {
297310 fn doTheTest() !void {
......@@ -307,6 +320,7 @@ test "allow any sentinel" {
307320test "pointer sentinel with enums" {
308321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
309322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
310324
311325 const S = struct {
312326 const Number = enum {
......@@ -328,6 +342,7 @@ test "pointer sentinel with optional element" {
328342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
329343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
330344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
331346
332347 const S = struct {
333348 fn doTheTest() !void {
......@@ -344,6 +359,7 @@ test "pointer sentinel with +inf" {
344359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345360 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
346361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
347363
348364 const S = struct {
349365 fn doTheTest() !void {
......@@ -364,6 +380,7 @@ test "pointer to array at fixed address" {
364380}
365381
366382test "pointer arithmetic affects the alignment" {
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
367384 {
368385 var ptr: [*]align(8) u32 = undefined;
369386 var x: usize = 1;
......@@ -410,6 +427,7 @@ test "indexing array with sentinel returns correct type" {
410427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
411428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
412429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
430 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
413431
414432 var s: [:0]const u8 = "abc";
415433 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
......@@ -418,6 +436,7 @@ test "indexing array with sentinel returns correct type" {
418436test "element pointer to slice" {
419437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
439 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
421440
422441 const S = struct {
423442 fn doTheTest() !void {
......@@ -440,6 +459,7 @@ test "element pointer to slice" {
440459test "element pointer arithmetic to slice" {
441460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
442461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
462 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
443463
444464 const S = struct {
445465 fn doTheTest() !void {
......@@ -464,6 +484,7 @@ test "element pointer arithmetic to slice" {
464484
465485test "array slicing to slice" {
466486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
487 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
467488
468489 const S = struct {
469490 fn doTheTest() !void {
......@@ -494,6 +515,7 @@ test "ptrCast comptime known slice to C pointer" {
494515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
495516 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
497519
498520 const s: [:0]const u8 = "foo";
499521 var p = @ptrCast([*c]const u8, s);
......@@ -504,6 +526,7 @@ test "ptrToInt on a generic function" {
504526 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
505527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
506528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
507530
508531 const S = struct {
509532 fn generic(i: anytype) @TypeOf(i) {
test/behavior/popcount.zig+3
......@@ -7,6 +7,7 @@ test "@popCount integers" {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 comptime try testPopCountIntegers();
1213 try testPopCountIntegers();
......@@ -17,6 +18,7 @@ test "@popCount 128bit integer" {
1718 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1819 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2022
2123 comptime {
2224 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);
......@@ -71,6 +73,7 @@ test "@popCount vectors" {
7173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7477
7578 comptime try testPopCountVectors();
7679 try testPopCountVectors();
test/behavior/prefetch.zig+3
......@@ -1,6 +1,9 @@
1const builtin = @import("builtin");
12const std = @import("std");
23
34test "@prefetch()" {
5 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6
47 var a: u32 = 42;
58
69 @prefetch(&a, .{});
test/behavior/ptrcast.zig+6
......@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2627
2728 try testReinterpretWithOffsetAndNoWellDefinedLayout();
2829 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();
......@@ -130,6 +131,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {
130131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
131132 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
132133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
133135
134136 // Test lowering a field ptr
135137 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };
......@@ -153,6 +155,7 @@ test "lower reinterpreted comptime field ptr" {
153155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154156 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
155157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156159
157160 // Test lowering a field ptr
158161 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
......@@ -174,6 +177,7 @@ test "lower reinterpreted comptime field ptr" {
174177test "reinterpret struct field at comptime" {
175178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
180 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
177181
178182 const numNative = comptime Bytes.init(0x12345678);
179183 if (native_endian != .Little) {
......@@ -241,6 +245,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
241245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
244249
245250 var buf: [4]u8 = "aoeu".*;
246251 var x: ?[*]u8 = &buf;
......@@ -253,6 +258,7 @@ test "@ptrCast slice to slice" {
253258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
254259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
255260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
256262
257263 const S = struct {
258264 fn foo(slice: []u32) []i32 {
test/behavior/pub_enum.zig+3
......@@ -1,7 +1,10 @@
1const builtin = @import("builtin");
12const other = @import("pub_enum/other.zig");
23const expect = @import("std").testing.expect;
34
45test "pub enum" {
6 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7
58 try pubEnumTest(other.APubEnum.Two);
69}
710fn 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" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 try foo(true, Num.Two, false, "aoeu");
1314 try expect(!ok);
test/behavior/reflection.zig+1
......@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
2828test "reflection: @field" {
2929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3132
3233 var f = Foo{
3334 .one = 42,
test/behavior/return_address.zig+2
......@@ -10,6 +10,8 @@ test "return address" {
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14
1315 _ = retAddr();
1416 // TODO: #14938
1517 try testing.expectEqual(0, comptime retAddr());
test/behavior/saturating_arithmetic.zig+7
......@@ -9,6 +9,7 @@ test "saturating add" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 const S = struct {
1415 fn doTheTest() !void {
......@@ -56,6 +57,7 @@ test "saturating add 128bit" {
5657 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5859 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
6062 const S = struct {
6163 fn doTheTest() !void {
......@@ -81,6 +83,7 @@ test "saturating subtraction" {
8183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8487
8588 const S = struct {
8689 fn doTheTest() !void {
......@@ -127,6 +130,7 @@ test "saturating subtraction 128bit" {
127130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
128131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
129132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
130134
131135 const S = struct {
132136 fn doTheTest() !void {
......@@ -154,6 +158,7 @@ test "saturating multiplication" {
154158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
155159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
157162
158163 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
159164 // https://github.com/ziglang/zig/issues/9660
......@@ -198,6 +203,7 @@ test "saturating shift-left" {
198203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
199204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
201207
202208 const S = struct {
203209 fn doTheTest() !void {
......@@ -237,6 +243,7 @@ test "saturating shl uses the LHS type" {
237243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
238244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239245 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
246 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
240247
241248 const lhs_const: u8 = 1;
242249 var lhs_var: u8 = 1;
test/behavior/select.zig+2
......@@ -9,6 +9,7 @@ test "@select vectors" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 comptime try selectVectors();
1415 try selectVectors();
......@@ -37,6 +38,7 @@ test "@select arrays" {
3738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3940 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4042
4143 comptime try selectArrays();
4244 try selectArrays();
test/behavior/shuffle.zig+3
......@@ -8,6 +8,7 @@ test "@shuffle int" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 const S = struct {
1314 fn doTheTest() !void {
......@@ -49,6 +50,7 @@ test "@shuffle bool 1" {
4950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5254
5355 const S = struct {
5456 fn doTheTest() !void {
......@@ -69,6 +71,7 @@ test "@shuffle bool 2" {
6971 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7072 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7275
7376 if (builtin.zig_backend == .stage2_llvm) {
7477 // https://github.com/ziglang/zig/issues/3246
test/behavior/sizeof_and_typeof.zig+8
......@@ -18,6 +18,8 @@ test "@sizeOf on compile-time types" {
1818}
1919
2020test "@TypeOf() with multiple arguments" {
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
22
2123 {
2224 var var_1: u32 = undefined;
2325 var var_2: u8 = undefined;
......@@ -75,6 +77,7 @@ const P = packed struct {
7577
7678test "@offsetOf" {
7779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7881
7982 // Packed structs have fixed memory layout
8083 try expect(@offsetOf(P, "a") == 0);
......@@ -137,6 +140,8 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {
137140}
138141
139142test "@TypeOf() has no runtime side effects" {
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
144
140145 const S = struct {
141146 fn foo(comptime T: type, ptr: *T) T {
142147 ptr.* += 1;
......@@ -151,6 +156,8 @@ test "@TypeOf() has no runtime side effects" {
151156
152157test "branching logic inside @TypeOf" {
153158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
160
154161 const S = struct {
155162 var data: i32 = 0;
156163 fn foo() anyerror!i32 {
......@@ -264,6 +271,7 @@ test "runtime instructions inside typeof in comptime only scope" {
264271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
265272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
266273 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
274 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267275
268276 {
269277 var y: i8 = 2;
test/behavior/slice.zig+32-1
......@@ -29,6 +29,7 @@ comptime {
2929
3030test "slicing" {
3131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3233
3334 var array: [20]i32 = undefined;
3435
......@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {
6465
6566test "implicitly cast array of size 0 to slice" {
6667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
6870 var msg = [_]u8{};
6971 try assertLenIsZero(&msg);
......@@ -120,6 +122,7 @@ test "slice of type" {
120122
121123test "generic malloc free" {
122124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
123126
124127 const a = memAlloc(u8, 10) catch unreachable;
125128 memFree(u8, a);
......@@ -171,6 +174,7 @@ test "comptime pointer cast array and then slice" {
171174test "slicing zero length array" {
172175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
173176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
174178
175179 const s1 = ""[0..];
176180 const s2 = ([_]u32{})[0..];
......@@ -195,6 +199,8 @@ test "slicing pointer by length" {
195199const x = @intToPtr([*]i32, 0x1000)[0..0x500];
196200const y = x[0x100..];
197201test "compile time slice of pointer to hard coded address" {
202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
203
198204 try expect(@ptrToInt(x) == 0x1000);
199205 try expect(x.len == 0x500);
200206
......@@ -216,6 +222,7 @@ test "slice string literal has correct type" {
216222
217223test "result location zero sized array inside struct field implicit cast to slice" {
218224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219226
220227 const E = struct {
221228 entries: []u32,
......@@ -228,6 +235,7 @@ test "runtime safety lets us slice from len..len" {
228235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
229236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
231239
232240 var an_array = [_]u8{ 1, 2, 3 };
233241 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 {
238246}
239247
240248test "C pointer" {
241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242249 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
244253 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
245254 var len: u32 = 10;
......@@ -251,6 +260,7 @@ test "C pointer slice access" {
251260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
253262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
263 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
254264
255265 var buf: [10]u32 = [1]u32{42} ** 10;
256266 const c_ptr = @ptrCast([*c]const u32, &buf);
......@@ -280,6 +290,7 @@ fn sliceSum(comptime q: []const u8) i32 {
280290test "slice type with custom alignment" {
281291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
282292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
283294
284295 const LazilyResolvedType = struct {
285296 anything: i32,
......@@ -293,6 +304,7 @@ test "slice type with custom alignment" {
293304
294305test "obtaining a null terminated slice" {
295306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
296308
297309 // here we have a normal array
298310 var buf: [50]u8 = undefined;
......@@ -335,6 +347,7 @@ test "empty array to slice" {
335347test "@ptrCast slice to pointer" {
336348 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
338351
339352 const S = struct {
340353 fn doTheTest() !void {
......@@ -353,6 +366,7 @@ test "slice syntax resulting in pointer-to-array" {
353366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
354367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356370
357371 const S = struct {
358372 fn doTheTest() !void {
......@@ -551,6 +565,7 @@ test "slice syntax resulting in pointer-to-array" {
551565test "slice pointer-to-array null terminated" {
552566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
553567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
554569
555570 comptime {
556571 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
......@@ -569,6 +584,7 @@ test "slice pointer-to-array null terminated" {
569584
570585test "slice pointer-to-array zero length" {
571586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
572588
573589 comptime {
574590 {
......@@ -603,6 +619,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
603619 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
604620 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
605621 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
622 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
606623
607624 const S = struct {
608625 const U = union {
......@@ -655,6 +672,7 @@ test "array mult of slice gives ptr to array" {
655672
656673test "slice bounds in comptime concatenation" {
657674 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
658676
659677 const bs = comptime blk: {
660678 const b = "........1........";
......@@ -690,6 +708,7 @@ test "slice sentinel access at comptime" {
690708test "slicing array with sentinel as end index" {
691709 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
692710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
711 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
693712
694713 const S = struct {
695714 fn do() !void {
......@@ -708,6 +727,7 @@ test "slicing array with sentinel as end index" {
708727test "slicing slice with sentinel as end index" {
709728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
710729 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
730 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
711731
712732 const S = struct {
713733 fn do() !void {
......@@ -736,6 +756,8 @@ test "slice len modification at comptime" {
736756}
737757
738758test "slice field ptr const" {
759 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
760
739761 const const_slice: []const u8 = "string";
740762
741763 const const_ptr_const_slice = &const_slice;
......@@ -749,6 +771,7 @@ test "slice field ptr const" {
749771
750772test "slice field ptr var" {
751773 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
752775
753776 var var_slice: []const u8 = "string";
754777
......@@ -765,6 +788,7 @@ test "global slice field access" {
765788 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
766789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
767790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
768792
769793 const S = struct {
770794 var slice: []const u8 = undefined;
......@@ -776,6 +800,8 @@ test "global slice field access" {
776800}
777801
778802test "slice of void" {
803 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
804
779805 var n: usize = 10;
780806 var arr: [12]void = undefined;
781807 const slice = @as([]void, &arr)[0..n];
......@@ -783,6 +809,8 @@ test "slice of void" {
783809}
784810
785811test "slice with dereferenced value" {
812 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
813
786814 var a: usize = 0;
787815 var idx: *usize = &a;
788816 _ = blk: {
......@@ -798,6 +826,7 @@ test "slice with dereferenced value" {
798826
799827test "empty slice ptr is non null" {
800828 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
802831 {
803832 const empty_slice: []u8 = &[_]u8{};
......@@ -816,6 +845,7 @@ test "empty slice ptr is non null" {
816845test "slice decays to many pointer" {
817846 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
818847 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
848 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
819849
820850 var buf: [8]u8 = "abcdefg\x00".*;
821851 const p: [*:0]const u8 = buf[0..7 :0];
......@@ -826,6 +856,7 @@ test "write through pointer to optional slice arg" {
826856 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
827857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
828858 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
859 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
829860
830861 const S = struct {
831862 fn bar(foo: *?[]const u8) !void {
test/behavior/src.zig+3
......@@ -17,6 +17,7 @@ test "@src" {
1717 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2021
2122 try doTheTest();
2223}
......@@ -33,6 +34,8 @@ test "@src used as a comptime parameter" {
3334}
3435
3536test "@src in tuple passed to anytype function" {
37 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
38
3639 const S = struct {
3740 fn Foo(a: anytype) u32 {
3841 return a[0].line;
test/behavior/struct.zig+53
......@@ -11,6 +11,7 @@ top_level_field: i32,
1111test "top level fields" {
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 var instance = @This(){
1617 .top_level_field = 1234,
......@@ -89,6 +90,7 @@ test "structs" {
8990 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9091 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9294
9395 var foo: StructFoo = undefined;
9496 @memset(@ptrCast([*]u8, &foo)[0..@sizeOf(StructFoo)], 0);
......@@ -107,6 +109,7 @@ fn testMutation(foo: *StructFoo) void {
107109
108110test "struct byval assign" {
109111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
110113
111114 var foo1: StructFoo = undefined;
112115 var foo2: StructFoo = undefined;
......@@ -119,6 +122,8 @@ test "struct byval assign" {
119122}
120123
121124test "call struct static method" {
125 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
126
122127 const result = StructWithNoFields.add(3, 4);
123128 try expect(result == 7);
124129}
......@@ -126,6 +131,8 @@ test "call struct static method" {
126131const should_be_11 = StructWithNoFields.add(5, 6);
127132
128133test "invoke static method in global scope" {
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
135
129136 try expect(should_be_11 == 11);
130137}
131138
......@@ -248,6 +255,7 @@ test "usingnamespace within struct scope" {
248255test "struct field init with catch" {
249256 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250257 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
251259
252260 const S = struct {
253261 fn doTheTest() !void {
......@@ -274,6 +282,7 @@ const blah: packed struct {
274282
275283test "bit field alignment" {
276284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285
277286 try expect(@TypeOf(&blah.b) == *align(1:3:1) const u3);
278287}
279288
......@@ -289,6 +298,7 @@ const Val = struct {
289298test "struct point to self" {
290299 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
291300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
301 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
292302
293303 var root: Node = undefined;
294304 root.val.x = 1;
......@@ -305,6 +315,7 @@ test "struct point to self" {
305315test "void struct fields" {
306316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
307317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
308319
309320 const foo = VoidStructFieldsFoo{
310321 .a = void{},
......@@ -332,6 +343,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
332343
333344test "pass slice of empty struct to fn" {
334345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
335347
336348 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
337349}
......@@ -343,6 +355,7 @@ test "self-referencing struct via array member" {
343355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
344356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345357 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
346359
347360 const T = struct {
348361 children: [1]*@This(),
......@@ -353,6 +366,8 @@ test "self-referencing struct via array member" {
353366}
354367
355368test "empty struct method call" {
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
370
356371 const es = EmptyStruct{};
357372 try expect(es.method() == 1234);
358373}
......@@ -365,6 +380,7 @@ const EmptyStruct = struct {
365380
366381test "align 1 field before self referential align 8 field as slice return type" {
367382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
368384
369385 const result = alloc(Expr);
370386 try expect(result.len == 0);
......@@ -388,6 +404,7 @@ test "packed struct" {
388404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
389405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
390406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
391408
392409 var foo = APackedStruct{
393410 .x = 1,
......@@ -416,6 +433,7 @@ test "packed struct 24bits" {
416433 if (builtin.cpu.arch == .wasm32) return error.SkipZigTest; // TODO
417434 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO
418435 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
419437
420438 comptime {
421439 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
......@@ -457,6 +475,7 @@ test "runtime struct initialization of bitfield" {
457475 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
458476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
459477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
478 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
460479
461480 const s1 = Nibbles{
462481 .x = x1,
......@@ -495,6 +514,7 @@ test "packed struct fields are ordered from LSB to MSB" {
495514 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
497516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
498518
499519 var all: u64 = 0x7765443322221111;
500520 var bytes: [8]u8 align(@alignOf(Bitfields)) = undefined;
......@@ -515,6 +535,7 @@ test "implicit cast packed struct field to const ptr" {
515535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
516536 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
517537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
518539
519540 const LevelUpMove = packed struct {
520541 move_id: u9,
......@@ -533,6 +554,7 @@ test "implicit cast packed struct field to const ptr" {
533554
534555test "zero-bit field in packed struct" {
535556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
557 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
536558
537559 const S = packed struct {
538560 x: u10,
......@@ -549,6 +571,7 @@ test "packed struct with non-ABI-aligned field" {
549571 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
550572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
551573 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
552575
553576 const S = packed struct {
554577 x: u9,
......@@ -577,6 +600,7 @@ test "bit field access" {
577600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
578601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579602 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
603 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
580604
581605 var data = bit_field_1;
582606 try expect(getA(&data) == 1);
......@@ -631,6 +655,7 @@ test "packed array 24bits" {
631655 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
632656 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
633657 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
634659
635660 comptime {
636661 try expect(@sizeOf([9]Foo32Bits) == 9 * 4);
......@@ -697,6 +722,7 @@ test "pointer to packed struct member in a stack variable" {
697722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
698723 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
699724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
725 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
700726
701727 const S = packed struct {
702728 a: u2,
......@@ -723,6 +749,7 @@ test "packed struct with u0 field access" {
723749test "access to global struct fields" {
724750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
725751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
726753
727754 g_foo.bar.value = 42;
728755 try expect(g_foo.bar.value == 42);
......@@ -747,6 +774,7 @@ test "packed struct with fp fields" {
747774 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
748775 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
749776 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
777 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
750778
751779 const S = packed struct {
752780 data0: f32,
......@@ -799,6 +827,7 @@ test "non-packed struct with u128 entry in union" {
799827 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
800828 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
801829 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
830 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
802831
803832 const U = union(enum) {
804833 Num: u128,
......@@ -822,6 +851,7 @@ test "packed struct field passed to generic function" {
822851 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
823852 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
824853 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
854 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
825855
826856 const S = struct {
827857 const P = packed struct {
......@@ -915,6 +945,8 @@ test "tuple assigned to variable" {
915945}
916946
917947test "comptime struct field" {
948 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
949
918950 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
919951 if (builtin.cpu.arch == .arm) return error.SkipZigTest; // TODO
920952
......@@ -933,6 +965,7 @@ test "tuple element initialized with fn call" {
933965 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
934966 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
935967 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
968 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
936969
937970 const S = struct {
938971 fn doTheTest() !void {
......@@ -951,6 +984,7 @@ test "struct with union field" {
951984 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
952985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
953986 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
987 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
954988
955989 const Value = struct {
956990 ref: u32 = 2,
......@@ -971,6 +1005,7 @@ test "type coercion of anon struct literal to struct" {
9711005 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9721006 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9731007 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1008 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9741009
9751010 const S = struct {
9761011 const S2 = struct {
......@@ -1008,6 +1043,7 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {
10081043 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10091044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10101045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1046 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10111047
10121048 const S = struct {
10131049 const S2 = struct {
......@@ -1047,6 +1083,7 @@ test "packed struct with undefined initializers" {
10471083 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10481084 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10491085 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1086 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10501087
10511088 const S = struct {
10521089 const P = packed struct {
......@@ -1115,6 +1152,7 @@ test "anon init through error unions and optionals" {
11151152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11161153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11171154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11181156
11191157 const S = struct {
11201158 a: u32,
......@@ -1141,6 +1179,7 @@ test "anon init through optional" {
11411179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11421180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11431181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1182 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11441183
11451184 const S = struct {
11461185 a: u32,
......@@ -1160,6 +1199,7 @@ test "anon init through error union" {
11601199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11611200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11621201 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1202 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11631203
11641204 const S = struct {
11651205 a: u32,
......@@ -1179,6 +1219,7 @@ test "typed init through error unions and optionals" {
11791219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11801220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11811221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11821223
11831224 const S = struct {
11841225 a: u32,
......@@ -1239,6 +1280,7 @@ test "packed struct aggregate init" {
12391280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12401281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12411282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12421284
12431285 const S = struct {
12441286 fn foo(a: i2, b: i6) u8 {
......@@ -1258,6 +1300,7 @@ test "packed struct field access via pointer" {
12581300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12591301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12601302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1303 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12611304
12621305 const S = struct {
12631306 fn doTheTest() !void {
......@@ -1313,6 +1356,7 @@ test "under-aligned struct field" {
13131356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13141357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13151358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1359 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13161360
13171361 const U = extern union {
13181362 fd: i32,
......@@ -1333,6 +1377,7 @@ test "under-aligned struct field" {
13331377test "fieldParentPtr of a zero-bit field" {
13341378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13351379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1380 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13361381
13371382 const S = struct {
13381383 fn testStruct(comptime A: type) !void {
......@@ -1380,6 +1425,7 @@ test "fieldParentPtr of a zero-bit field" {
13801425
13811426test "struct field has a pointer to an aligned version of itself" {
13821427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1428 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13831429
13841430 const E = struct {
13851431 next: *align(1) @This(),
......@@ -1391,6 +1437,8 @@ test "struct field has a pointer to an aligned version of itself" {
13911437}
13921438
13931439test "struct has only one reference" {
1440 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1441
13941442 const S = struct {
13951443 fn optionalStructParam(_: ?struct { x: u8 }) void {}
13961444 fn errorUnionStructParam(_: error{}!struct { x: u8 }) void {}
......@@ -1439,6 +1487,7 @@ test "struct has only one reference" {
14391487test "no dependency loop on pointer to optional struct" {
14401488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14411489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1490 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14421491
14431492 const S = struct {
14441493 const A = struct { b: B };
......@@ -1459,6 +1508,7 @@ test "discarded struct initialization works as expected" {
14591508
14601509test "function pointer in struct returns the struct" {
14611510 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1511 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14621512
14631513 const A = struct {
14641514 const A = @This();
......@@ -1474,6 +1524,7 @@ test "function pointer in struct returns the struct" {
14741524
14751525test "no dependency loop on optional field wrapped in generic function" {
14761526 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1527 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14771528
14781529 const S = struct {
14791530 fn Atomic(comptime T: type) type {
......@@ -1493,6 +1544,7 @@ test "no dependency loop on optional field wrapped in generic function" {
14931544test "optional field init with tuple" {
14941545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14951546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14961548
14971549 const S = struct {
14981550 a: ?struct { b: u32 },
......@@ -1506,6 +1558,7 @@ test "optional field init with tuple" {
15061558
15071559test "if inside struct init inside if" {
15081560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1561 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15091562
15101563 const MyStruct = struct { x: u32 };
15111564 const b: u32 = 5;
test/behavior/struct_contains_null_ptr_itself.zig+1
......@@ -5,6 +5,7 @@ const builtin = @import("builtin");
55test "struct contains null pointer which contains original struct" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 var x: ?*NodeLineComment = null;
1011 try expect(x == null);
test/behavior/struct_contains_slice_of_itself.zig+2
......@@ -13,6 +13,7 @@ const NodeAligned = struct {
1313
1414test "struct contains slice of itself" {
1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
1718 var other_nodes = [_]Node{
1819 Node{
......@@ -53,6 +54,7 @@ test "struct contains slice of itself" {
5354test "struct contains aligned slice of itself" {
5455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5658
5759 var other_nodes = [_]NodeAligned{
5860 NodeAligned{
test/behavior/switch.zig+18
......@@ -117,6 +117,7 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {
117117
118118test "switching on booleans" {
119119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
120121
121122 try testSwitchOnBools();
122123 comptime try testSwitchOnBools();
......@@ -214,6 +215,7 @@ fn poll() void {
214215
215216test "switch on global mutable var isn't constant-folded" {
216217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
217219
218220 while (state < 2) {
219221 poll();
......@@ -230,6 +232,7 @@ test "switch prong with variable" {
230232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
233236
234237 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });
235238 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });
......@@ -254,6 +257,7 @@ test "switch on enum using pointer capture" {
254257 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
255258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
256259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
257261
258262 try testSwitchEnumPtrCapture();
259263 comptime try testSwitchEnumPtrCapture();
......@@ -314,6 +318,7 @@ test "switch on union with some prongs capturing" {
314318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
315319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
316320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
317322
318323 const X = union(enum) {
319324 a,
......@@ -344,12 +349,15 @@ fn returnsFalse() bool {
344349 }
345350}
346351test "switch on const enum with var" {
352 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
353
347354 try expect(!returnsFalse());
348355}
349356
350357test "anon enum literal used in switch on union enum" {
351358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
352359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
353361
354362 const Foo = union(enum) {
355363 a: i32,
......@@ -388,6 +396,7 @@ fn switchWithUnreachable(x: i32) i32 {
388396
389397test "capture value of switch with all unreachable prongs" {
390398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
391400
392401 const x = return_a_number() catch |err| switch (err) {
393402 else => unreachable,
......@@ -401,6 +410,7 @@ fn return_a_number() anyerror!i32 {
401410
402411test "switch on integer with else capturing expr" {
403412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
404414
405415 const S = struct {
406416 fn doTheTest() !void {
......@@ -420,6 +430,7 @@ test "else prong of switch on error set excludes other cases" {
420430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421431 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
422432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
433 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
423434
424435 const S = struct {
425436 fn doTheTest() !void {
......@@ -454,6 +465,7 @@ test "switch prongs with error set cases make a new error set type for capture v
454465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456467 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
468 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
457469
458470 const S = struct {
459471 fn doTheTest() !void {
......@@ -488,6 +500,7 @@ test "switch prongs with error set cases make a new error set type for capture v
488500
489501test "return result loc and then switch with range implicit casted to error union" {
490502 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
491504
492505 const S = struct {
493506 fn doTheTest() !void {
......@@ -528,6 +541,7 @@ test "switch prongs with cases with identical payload types" {
528541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529542 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
530543 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
544 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
531545
532546 const Union = union(enum) {
533547 A: usize,
......@@ -571,6 +585,7 @@ test "switch prongs with cases with identical payload types" {
571585test "switch on pointer type" {
572586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
573587 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
588 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
574589
575590 const S = struct {
576591 const X = struct {
......@@ -618,6 +633,7 @@ test "switch capture copies its payload" {
618633 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
619634 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
620635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
636 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
621637
622638 const S = struct {
623639 fn doTheTest() !void {
......@@ -692,6 +708,8 @@ test "switch item sizeof" {
692708}
693709
694710test "comptime inline switch" {
711 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
712
695713 const U = union(enum) { a: type, b: type };
696714 const value = comptime blk: {
697715 var u: U = .{ .a = u32 };
test/behavior/switch_prong_err_enum.zig+1
......@@ -24,6 +24,7 @@ test "switch prong returns error enum" {
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2728
2829 switch (doThing(17) catch unreachable) {
2930 FormValue.Address => |payload| {
test/behavior/switch_prong_implicit_cast.zig+1
......@@ -18,6 +18,7 @@ test "switch prong implicit cast" {
1818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2122
2223 const result = switch (foo(2) catch unreachable) {
2324 FormValue.One => false,
test/behavior/this.zig+3
......@@ -21,12 +21,15 @@ fn add(x: i32, y: i32) i32 {
2121}
2222
2323test "this refer to module call private fn" {
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
25
2426 try expect(module.add(1, 2) == 3);
2527}
2628
2729test "this refer to container" {
2830 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3033
3134 var pt: Point(i32) = undefined;
3235 pt.x = 12;
test/behavior/threadlocal.zig+3
......@@ -11,6 +11,7 @@ test "thread local variable" {
1111 else => return error.SkipZigTest,
1212 }; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 const S = struct {
1617 threadlocal var t: i32 = 1234;
......@@ -28,6 +29,7 @@ test "pointer to thread local array" {
2829 else => return error.SkipZigTest,
2930 }; // TODO
3031 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3133
3234 const s = "Hello world";
3335 std.mem.copy(u8, buffer[0..], s);
......@@ -45,6 +47,7 @@ test "reference a global threadlocal variable" {
4547 else => return error.SkipZigTest,
4648 }; // TODO
4749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4851
4952 _ = nrfx_uart_rx(&g_uart0);
5053}
test/behavior/translate_c_macros.zig+16
......@@ -9,6 +9,7 @@ const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));
99
1010test "casting to void with a macro" {
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 h.IGNORE_ME_1(42);
1415 h.IGNORE_ME_2(42);
......@@ -26,6 +27,7 @@ test "initializer list expression" {
2627 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2829 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2931
3032 try expectEqual(h.Color{
3133 .r = 200,
......@@ -38,6 +40,7 @@ test "initializer list expression" {
3840test "sizeof in macros" {
3941 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4042 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4144
4245 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));
4346 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));
......@@ -45,6 +48,7 @@ test "sizeof in macros" {
4548
4649test "reference to a struct type" {
4750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4852
4953 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);
5054}
......@@ -54,6 +58,7 @@ test "cast negative integer to pointer" {
5458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5559 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5660 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5762
5863 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
5964}
......@@ -64,6 +69,7 @@ test "casting to union with a macro" {
6469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6671 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6773
6874 const l: c_long = 42;
6975 const d: f64 = 2.0;
......@@ -80,6 +86,7 @@ test "casting or calling a value with a paren-surrounded macro" {
8086 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8390
8491 const l: c_long = 42;
8592 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);
......@@ -99,6 +106,7 @@ test "nested comma operator" {
99106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
101108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102110
103111 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);
104112 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);
......@@ -109,6 +117,7 @@ test "cast functions" {
109117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
110118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
112121
113122 const S = struct {
114123 fn foo() void {}
......@@ -122,6 +131,7 @@ test "large integer macro" {
122131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
125135
126136 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);
127137}
......@@ -131,6 +141,7 @@ test "string literal macro with embedded tab character" {
131141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
132142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
133143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
134145
135146 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);
136147}
......@@ -140,6 +151,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {
140151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
143155
144156 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);
145157 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);
......@@ -151,6 +163,7 @@ test "Macro that uses division operator. Issue #13162" {
151163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
153165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
154167
155168 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));
156169 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" {
184197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
185198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
186199 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
187201
188202 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));
189203 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" {
214228}
215229
216230test "@typeInfo on @cImport result" {
231 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
232
217233 try expect(@typeInfo(h).Struct.decls.len > 1);
218234}
test/behavior/truncate.zig+1
......@@ -65,6 +65,7 @@ test "truncate on vectors" {
6565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6869
6970 const S = struct {
7071 fn doTheTest() !void {
test/behavior/try.zig+5
......@@ -4,6 +4,7 @@ const expect = std.testing.expect;
44
55test "try on error union" {
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
78
89 try tryOnErrorUnionImpl();
910 comptime try tryOnErrorUnionImpl();
......@@ -23,6 +24,8 @@ fn returnsTen() anyerror!i32 {
2324}
2425
2526test "try without vars" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
2629 const result1 = if (failIfTrue(true)) 1 else |_| @as(i32, 2);
2730 try expect(result1 == 2);
2831
......@@ -39,6 +42,8 @@ fn failIfTrue(ok: bool) anyerror!void {
3942}
4043
4144test "try then not executed with assignment" {
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
46
4247 if (failIfTrue(true)) {
4348 unreachable;
4449 } else |err| {
test/behavior/tuple.zig+16
......@@ -9,6 +9,7 @@ test "tuple concatenation" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 const S = struct {
1415 fn doTheTest() !void {
......@@ -52,6 +53,7 @@ test "more tuple concatenation" {
5253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5557
5658 const T = struct {
5759 fn consume_tuple(tuple: anytype, len: usize) !void {
......@@ -212,6 +214,7 @@ test "fieldParentPtr of tuple" {
212214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
213215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
215218
216219 var x: u32 = 0;
217220 const tuple = .{ x, x };
......@@ -222,6 +225,7 @@ test "fieldParentPtr of anon struct" {
222225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
223226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
224227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
225229
226230 var x: u32 = 0;
227231 const anon_st = .{ .foo = x, .bar = x };
......@@ -242,6 +246,7 @@ test "offsetOf anon struct" {
242246
243247test "initializing tuple with mixed comptime-runtime fields" {
244248 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
245250
246251 var x: u32 = 15;
247252 const T = @TypeOf(.{ @as(i32, -1234), @as(u32, 5678), x });
......@@ -251,6 +256,7 @@ test "initializing tuple with mixed comptime-runtime fields" {
251256
252257test "initializing anon struct with mixed comptime-runtime fields" {
253258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
254260
255261 var x: u32 = 15;
256262 const T = @TypeOf(.{ .foo = @as(i32, -1234), .bar = x });
......@@ -262,6 +268,7 @@ test "tuple in tuple passed to generic function" {
262268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
263269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
264270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
265272
266273 const S = struct {
267274 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
......@@ -281,6 +288,7 @@ test "coerce tuple to tuple" {
281288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
282289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
283290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
284292
285293 const T = std.meta.Tuple(&.{u8});
286294 const S = struct {
......@@ -295,6 +303,7 @@ test "tuple type with void field" {
295303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
296304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
297305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
298307
299308 const T = std.meta.Tuple(&[_]type{void});
300309 const x = T{{}};
......@@ -302,6 +311,8 @@ test "tuple type with void field" {
302311}
303312
304313test "zero sized struct in tuple handled correctly" {
314 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
315
305316 const State = struct {
306317 const Self = @This();
307318 data: @Type(.{
......@@ -331,6 +342,7 @@ test "zero sized struct in tuple handled correctly" {
331342test "tuple type with void field and a runtime field" {
332343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
333344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
334346
335347 const T = std.meta.Tuple(&[_]type{ usize, void });
336348 var t: T = .{ 5, {} };
......@@ -341,6 +353,7 @@ test "branching inside tuple literal" {
341353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
344357
345358 const S = struct {
346359 fn foo(a: anytype) !void {
......@@ -356,6 +369,7 @@ test "tuple initialized with a runtime known value" {
356369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
357370 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
358371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
372 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
359373
360374 const E = union(enum) { e: []const u8 };
361375 const W = union(enum) { w: E };
......@@ -370,6 +384,7 @@ test "tuple of struct concatenation and coercion to array" {
370384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
371385 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
372386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
373388
374389 const StructWithDefault = struct { value: f32 = 42 };
375390 const SomeStruct = struct { array: [4]StructWithDefault };
......@@ -384,6 +399,7 @@ test "nested runtime conditionals in tuple initializer" {
384399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
385400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
386401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
402 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387403
388404 var data: u8 = 0;
389405 const x = .{
test/behavior/tuple_declarations.zig+2
......@@ -7,6 +7,7 @@ const expectEqualStrings = testing.expectEqualStrings;
77test "tuple declaration type info" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1011
1112 {
1213 const T = struct { comptime u32 align(2) = 1, []const u8 };
......@@ -56,6 +57,7 @@ test "tuple declaration type info" {
5657test "Tuple declaration usage" {
5758 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5961
6062 const T = struct { u32, []const u8 };
6163 var t: T = .{ 1, "foo" };
test/behavior/type.zig+5
......@@ -203,6 +203,7 @@ test "Type.Opaque" {
203203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
206207
207208 const Opaque = @Type(.{
208209 .Opaque = .{
......@@ -261,6 +262,7 @@ test "Type.Struct" {
261262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
262263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
263264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
264266
265267 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
266268 const infoA = @typeInfo(A).Struct;
......@@ -348,6 +350,7 @@ test "Type.Struct" {
348350test "Type.Enum" {
349351 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
350352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
351354
352355 const Foo = @Type(.{
353356 .Enum = .{
......@@ -384,6 +387,7 @@ test "Type.Union" {
384387 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
385388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
386389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
387391
388392 const Untagged = @Type(.{
389393 .Union = .{
......@@ -487,6 +491,7 @@ test "Type.Fn" {
487491 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
488492 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
494 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
490495
491496 const some_opaque = opaque {};
492497 const some_ptr = *some_opaque;
test/behavior/type_info.zig+10
......@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {
160160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
161161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
163164
164165 try testErrorSet();
165166 comptime try testErrorSet();
......@@ -191,6 +192,7 @@ test "type info: error set single value" {
191192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194196
195197 const TestSet = error.One;
196198
......@@ -204,6 +206,7 @@ test "type info: error set merged" {
204206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
205207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206208 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
207210
208211 const TestSet = error{ One, Two } || error{Three};
209212
......@@ -219,6 +222,7 @@ test "type info: enum info" {
219222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
220223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
222226
223227 try testEnum();
224228 comptime try testEnum();
......@@ -281,6 +285,7 @@ fn testUnion() !void {
281285
282286test "type info: struct info" {
283287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
284289
285290 try testStruct();
286291 comptime try testStruct();
......@@ -349,6 +354,8 @@ fn testOpaque() !void {
349354}
350355
351356test "type info: function type info" {
357 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
358
352359 try testFunction();
353360 comptime try testFunction();
354361}
......@@ -506,6 +513,7 @@ test "type info for async frames" {
506513
507514test "Declarations are returned in declaration order" {
508515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
516 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
509517
510518 const S = struct {
511519 const a = 1;
......@@ -528,6 +536,7 @@ test "Struct.is_tuple for anon list literal" {
528536
529537test "Struct.is_tuple for anon struct literal" {
530538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
531540
532541 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
533542 try expect(!info.Struct.is_tuple);
......@@ -564,6 +573,7 @@ test "value from struct @typeInfo default_value can be loaded at comptime" {
564573test "@typeInfo decls and usingnamespace" {
565574 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
566575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
576 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
567577
568578 const A = struct {
569579 const x = 5;
test/behavior/typename.zig+8
......@@ -15,6 +15,7 @@ test "anon fn param" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1819
1920 // https://github.com/ziglang/zig/issues/9339
2021 try expectEqualStringsIgnoreDigits(
......@@ -40,6 +41,7 @@ test "anon field init" {
4041 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4345
4446 const Foo = .{
4547 .T1 = struct {},
......@@ -65,6 +67,7 @@ test "basic" {
6567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6668 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6769 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6871
6972 try expectEqualStrings("i64", @typeName(i64));
7073 try expectEqualStrings("*usize", @typeName(*usize));
......@@ -88,6 +91,7 @@ test "top level decl" {
8891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8992 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9093 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9195
9296 try expectEqualStrings(
9397 "behavior.typename.A_Struct",
......@@ -137,6 +141,7 @@ test "fn param" {
137141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
138142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
139143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
140145
141146 // https://github.com/ziglang/zig/issues/675
142147 try expectEqualStrings(
......@@ -207,6 +212,7 @@ test "local variable" {
207212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
208213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
209214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
210216
211217 const Foo = struct { a: u32 };
212218 const Bar = union { a: u32 };
......@@ -225,6 +231,7 @@ test "comptime parameters not converted to anytype in function type" {
225231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
226232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
227233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228235
229236 const T = fn (fn (type) void, void) void;
230237 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));
......@@ -234,6 +241,7 @@ test "anon name strategy used in sub expression" {
234241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
235242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
236243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
244 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
237245
238246 const S = struct {
239247 fn getTheName() []const u8 {
test/behavior/undefined.zig+3
......@@ -47,6 +47,7 @@ test "assign undefined to struct" {
4747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4848 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4949 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5051
5152 comptime {
5253 var foo: Foo = undefined;
......@@ -64,6 +65,7 @@ test "assign undefined to struct with method" {
6465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6769
6870 comptime {
6971 var foo: Foo = undefined;
......@@ -79,6 +81,7 @@ test "assign undefined to struct with method" {
7981
8082test "type name of undefined" {
8183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
8285
8386 const x = undefined;
8487 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));
test/behavior/underscore.zig+1
......@@ -8,6 +8,7 @@ test "ignore lval with underscore" {
88
99test "ignore lval with underscore (while loop)" {
1010 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1112
1213 while (optionalReturnError()) |_| {
1314 while (optionalReturnError()) |_| {
test/behavior/union.zig+61
......@@ -14,6 +14,7 @@ test "basic unions with floats" {
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1718
1819 var foo = FooWithFloats{ .int = 1 };
1920 try expect(foo.int == 1);
......@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {
2930 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3234
3335 var foo: FooWithFloats = undefined;
3436
......@@ -40,6 +42,7 @@ test "basic unions" {
4042 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4346
4447 var foo = Foo{ .int = 1 };
4548 try expect(foo.int == 1);
......@@ -58,6 +61,7 @@ test "init union with runtime value" {
5861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5962 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6063 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6165
6266 var foo: Foo = undefined;
6367
......@@ -96,6 +100,7 @@ const FooExtern = extern union {
96100test "basic extern unions" {
97101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
99104
100105 var foo = FooExtern{ .int = 1 };
101106 try expect(foo.int == 1);
......@@ -167,6 +172,7 @@ test "constant tagged union with payload" {
167172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
168173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
169174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
170176
171177 var empty = TaggedUnionWithPayload{ .Empty = {} };
172178 var full = TaggedUnionWithPayload{ .Full = 13 };
......@@ -216,6 +222,7 @@ test "union with specified enum tag" {
216222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
217223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
218224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219226
220227 try doTest();
221228 comptime try doTest();
......@@ -225,6 +232,7 @@ test "packed union generates correctly aligned type" {
225232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
226233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
227234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228236
229237 const U = packed union {
230238 f1: *const fn () error{TestUnexpectedResult}!void,
......@@ -264,6 +272,7 @@ test "comparison between union and enum literal" {
264272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
265273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
266274 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267276
268277 try testComparison();
269278 comptime try testComparison();
......@@ -279,6 +288,7 @@ test "cast union to tag type of union" {
279288 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
280289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
281290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
282292
283293 try testCastUnionToTag();
284294 comptime try testCastUnionToTag();
......@@ -299,6 +309,7 @@ test "cast tag type of union to union" {
299309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
300310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
301311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
302313
303314 var x: Value2 = Letter2.B;
304315 try expect(@as(Letter2, x) == Letter2.B);
......@@ -314,6 +325,7 @@ test "implicit cast union to its tag type" {
314325 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
315326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316327 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
328 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
317329
318330 var x: Value2 = Letter2.B;
319331 try expect(x == Letter2.B);
......@@ -334,6 +346,7 @@ test "constant packed union" {
334346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
335347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
336348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
349 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
337350
338351 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
339352}
......@@ -353,6 +366,7 @@ test "simple union(enum(u32))" {
353366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
355368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
356370
357371 var x = MultipleChoice.C;
358372 try expect(x == MultipleChoice.C);
......@@ -378,6 +392,7 @@ test "tagged union initialization with runtime void" {
378392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
379393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
380394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
381396
382397 try expect(testTaggedUnionInit({}));
383398}
......@@ -398,6 +413,7 @@ test "tagged union with no payloads" {
398413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
399414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
400415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
416 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
401417
402418 const a = UnionEnumNoPayloads{ .B = {} };
403419 switch (a) {
......@@ -408,6 +424,7 @@ test "tagged union with no payloads" {
408424
409425test "union with only 1 field casted to its enum type" {
410426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411428
412429 const Literal = union(enum) {
413430 Number: f64,
......@@ -444,6 +461,7 @@ test "global union with single field is correctly initialized" {
444461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
445462 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
446463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
464 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
447465
448466 glbl = Foo1{
449467 .f = @typeInfo(Foo1).Union.fields[0].type{ .x = 123 },
......@@ -462,6 +480,7 @@ test "initialize global array of union" {
462480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
463481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
464482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
465484
466485 glbl_array[1] = FooUnion{ .U1 = 2 };
467486 glbl_array[0] = FooUnion{ .U0 = 1 };
......@@ -473,6 +492,7 @@ test "update the tag value for zero-sized unions" {
473492 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
474493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
475494 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
495 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
476496
477497 const S = union(enum) {
478498 U0: void,
......@@ -489,6 +509,7 @@ test "union initializer generates padding only if needed" {
489509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
490510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
491511 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
492513
493514 const U = union(enum) {
494515 A: u24,
......@@ -501,6 +522,7 @@ test "union initializer generates padding only if needed" {
501522test "runtime tag name with single field" {
502523 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
503524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
504526
505527 const U = union(enum) {
506528 A: i32,
......@@ -514,6 +536,7 @@ test "method call on an empty union" {
514536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
515537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
516538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
517540
518541 const S = struct {
519542 const MyUnion = union(MyUnionTag) {
......@@ -576,6 +599,7 @@ test "tagged union as return value" {
576599 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
577600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
578601 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
579603
580604 switch (returnAnInt(13)) {
581605 TaggedFoo.One => |value| try expect(value == 13),
......@@ -591,6 +615,7 @@ test "tagged union with all void fields but a meaningful tag" {
591615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
592616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
593617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
594619
595620 const S = struct {
596621 const B = union(enum) {
......@@ -620,6 +645,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
620645 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
621646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
622647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
648 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
623649
624650 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);
625651 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
......@@ -657,6 +683,7 @@ test "switch on union with only 1 field" {
657683 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
658684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
659685 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
686 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
660687
661688 var r: PartialInst = undefined;
662689 r = PartialInst.Compiled;
......@@ -685,6 +712,7 @@ const PartialInstWithPayload = union(enum) {
685712
686713test "union with only 1 field casted to its enum type which has enum value specified" {
687714 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
688716
689717 const Literal = union(enum) {
690718 Number: f64,
......@@ -711,6 +739,7 @@ test "@enumToInt works on unions" {
711739 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
712740 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
713741 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
742 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
714743
715744 const Bar = union(enum) {
716745 A: bool,
......@@ -770,6 +799,7 @@ test "return union init with void payload" {
770799 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
771800 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
772801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
773803
774804 const S = struct {
775805 fn entry() !void {
......@@ -796,6 +826,7 @@ test "@unionInit stored to a const" {
796826 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
797827 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
798828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
829 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
799830
800831 const S = struct {
801832 const U = union(enum) {
......@@ -824,6 +855,7 @@ test "@unionInit can modify a union type" {
824855 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
825856 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
826857 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
858 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
827859
828860 const UnionInitEnum = union(enum) {
829861 Boolean: bool,
......@@ -847,6 +879,7 @@ test "@unionInit can modify a pointer value" {
847879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
848880 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
849881 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
882 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
850883
851884 const UnionInitEnum = union(enum) {
852885 Boolean: bool,
......@@ -867,6 +900,7 @@ test "union no tag with struct member" {
867900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
868901 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
869902 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
903 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
870904
871905 const Struct = struct {};
872906 const Union = union {
......@@ -902,6 +936,7 @@ test "anonymous union literal syntax" {
902936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
903937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
904938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
905940
906941 const S = struct {
907942 const Number = union {
......@@ -928,6 +963,7 @@ test "function call result coerces from tagged union to the tag" {
928963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
929964 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
930965 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
966 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
931967
932968 const S = struct {
933969 const Arch = union(enum) {
......@@ -963,6 +999,7 @@ test "cast from anonymous struct to union" {
963999 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9641000 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9651001 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1002 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9661003
9671004 const S = struct {
9681005 const U = union(enum) {
......@@ -996,6 +1033,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
9961033 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9971034 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9981035 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1036 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9991037
10001038 const S = struct {
10011039 const U = union(enum) {
......@@ -1027,6 +1065,7 @@ test "switching on non exhaustive union" {
10271065 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10281066 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10291067 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1068 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10301069
10311070 const S = struct {
10321071 const E = enum(u8) {
......@@ -1054,6 +1093,7 @@ test "containers with single-field enums" {
10541093 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10551094 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10561095 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1096 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10571097
10581098 const S = struct {
10591099 const A = union(enum) { f1 };
......@@ -1083,6 +1123,7 @@ test "@unionInit on union with tag but no fields" {
10831123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10841124 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
10851125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10861127
10871128 const S = struct {
10881129 const Type = enum(u8) { no_op = 105 };
......@@ -1132,6 +1173,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
11321173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11331174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11341175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1176 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11351177
11361178 const T = struct {
11371179 const U = union(enum) {
......@@ -1159,6 +1201,7 @@ test "union with no result loc initiated with a runtime value" {
11591201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11601202 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11611203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11621205
11631206 const U = union {
11641207 a: u32,
......@@ -1176,6 +1219,7 @@ test "union with a large struct field" {
11761219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11771220 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11781221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1222 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11791223
11801224 const S = struct {
11811225 a: [8]usize,
......@@ -1209,6 +1253,7 @@ test "union tag is set when initiated as a temporary value at runtime" {
12091253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12101254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12111255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1256 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12121257
12131258 const U = union(enum) {
12141259 a,
......@@ -1227,6 +1272,7 @@ test "extern union most-aligned field is smaller" {
12271272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12281273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12291274 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1275 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12301276
12311277 const U = extern union {
12321278 in6: extern struct {
......@@ -1246,6 +1292,7 @@ test "return an extern union from C calling convention" {
12461292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12471293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12481294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1295 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12491296
12501297 const namespace = struct {
12511298 const S = extern struct {
......@@ -1276,6 +1323,7 @@ test "noreturn field in union" {
12761323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12771324 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12781325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1326 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12791327
12801328 const U = union(enum) {
12811329 a: u32,
......@@ -1327,6 +1375,7 @@ test "union and enum field order doesn't match" {
13271375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13281376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13291377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1378 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13301379
13311380 const MyTag = enum(u32) {
13321381 b = 1337,
......@@ -1353,6 +1402,7 @@ test "@unionInit uses tag value instead of field index" {
13531402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13541403 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13551404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1405 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13561406
13571407 const E = enum(u8) {
13581408 b = 255,
......@@ -1379,6 +1429,7 @@ test "union field ptr - zero sized payload" {
13791429 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13801430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13811431 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1432 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13821433
13831434 const U = union {
13841435 foo: void,
......@@ -1393,6 +1444,7 @@ test "union field ptr - zero sized field" {
13931444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13941445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13951446 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1447 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13961448
13971449 const U = union {
13981450 foo: void,
......@@ -1408,6 +1460,7 @@ test "packed union in packed struct" {
14081460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14091461 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14101462 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1463 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14111464
14121465 const S = packed struct {
14131466 nested: packed union {
......@@ -1425,6 +1478,8 @@ test "packed union in packed struct" {
14251478}
14261479
14271480test "Namespace-like union" {
1481 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1482
14281483 const DepType = enum {
14291484 git,
14301485 http,
......@@ -1458,6 +1513,7 @@ test "union int tag type is properly managed" {
14581513test "no dependency loop when function pointer in union returns the union" {
14591514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14601515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1516 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14611517
14621518 const U = union(enum) {
14631519 const U = @This();
......@@ -1478,6 +1534,7 @@ test "no dependency loop when function pointer in union returns the union" {
14781534test "union reassignment can use previous value" {
14791535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14801536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1537 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14811538
14821539 const U = union {
14831540 a: u32,
......@@ -1493,6 +1550,7 @@ test "packed union with zero-bit field" {
14931550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14941551 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14951552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1553 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
14961554
14971555 const S = packed struct {
14981556 nested: packed union {
......@@ -1512,6 +1570,7 @@ test "reinterpreting enum value inside packed union" {
15121570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15131571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15141572 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1573 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15151574
15161575 const U = packed union {
15171576 tag: enum { a, b },
......@@ -1529,6 +1588,7 @@ test "reinterpreting enum value inside packed union" {
15291588
15301589test "access the tag of a global tagged union" {
15311590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1591 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15321592
15331593 const U = union(enum) {
15341594 a,
......@@ -1540,6 +1600,7 @@ test "access the tag of a global tagged union" {
15401600
15411601test "coerce enum literal to union in result loc" {
15421602 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1603 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15431604
15441605 const U = union(enum) {
15451606 a,
test/behavior/union_with_members.zig+1
......@@ -21,6 +21,7 @@ test "enum with members" {
2121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2425
2526 const a = ET{ .SINT = -42 };
2627 const b = ET{ .UINT = 42 };
test/behavior/usingnamespace.zig+1
......@@ -55,6 +55,7 @@ usingnamespace @import("usingnamespace/a.zig");
5555test "two files usingnamespace import each other" {
5656 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5859
5960 try expect(@This().ok());
6061}
test/behavior/var_args.zig+8
......@@ -14,6 +14,8 @@ fn add(args: anytype) i32 {
1414}
1515
1616test "add arbitrary args" {
17 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
18
1719 try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
1820 try expect(add(.{@as(i32, 1234)}) == 1234);
1921 try expect(add(.{}) == 0);
......@@ -30,6 +32,7 @@ test "send void arg to var args" {
3032test "pass args directly" {
3133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3336
3437 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
3538 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);
......@@ -43,6 +46,7 @@ fn addSomeStuff(args: anytype) i32 {
4346test "runtime parameter before var args" {
4447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4548 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4650
4751 try expect((try extraFn(10, .{})) == 0);
4852 try expect((try extraFn(10, .{false})) == 1);
......@@ -99,6 +103,7 @@ test "simple variadic function" {
99103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100104 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
101105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
102107 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
103108 // https://github.com/ziglang/zig/issues/14096
104109 return error.SkipZigTest;
......@@ -148,6 +153,7 @@ test "variadic functions" {
148153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
149154 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
150155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
151157 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
152158 // https://github.com/ziglang/zig/issues/14096
153159 return error.SkipZigTest;
......@@ -191,6 +197,7 @@ test "copy VaList" {
191197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
192198 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
193199 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
194201 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
195202 // https://github.com/ziglang/zig/issues/14096
196203 return error.SkipZigTest;
......@@ -223,6 +230,7 @@ test "unused VaList arg" {
223230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
224231 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
225232 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
226234 if (builtin.cpu.arch == .aarch64 and builtin.os.tag != .macos) {
227235 // https://github.com/ziglang/zig/issues/14096
228236 return error.SkipZigTest;
test/behavior/vector.zig+43
......@@ -11,6 +11,7 @@ test "implicit cast vector to array - bool" {
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1415
1516 const S = struct {
1617 fn doTheTest() !void {
......@@ -29,6 +30,7 @@ test "vector wrap operators" {
2930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3234
3335 const S = struct {
3436 fn doTheTest() !void {
......@@ -51,6 +53,7 @@ test "vector bin compares with mem.eql" {
5153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5457
5558 const S = struct {
5659 fn doTheTest() !void {
......@@ -74,6 +77,7 @@ test "vector int operators" {
7477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7679 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7781
7882 const S = struct {
7983 fn doTheTest() !void {
......@@ -95,6 +99,7 @@ test "vector float operators" {
9599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
96100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
98103
99104 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
100105 const S = struct {
......@@ -118,6 +123,7 @@ test "vector bit operators" {
118123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
119124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
121127
122128 const S = struct {
123129 fn doTheTest() !void {
......@@ -136,6 +142,7 @@ test "implicit cast vector to array" {
136142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
137143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
138144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
139146
140147 const S = struct {
141148 fn doTheTest() !void {
......@@ -153,6 +160,7 @@ test "array to vector" {
153160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
156164
157165 const S = struct {
158166 fn doTheTest() !void {
......@@ -173,6 +181,7 @@ test "array to vector with element type coercion" {
173181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
175183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
176185
177186 const S = struct {
178187 fn doTheTest() !void {
......@@ -192,6 +201,7 @@ test "peer type resolution with coercible element types" {
192201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
194203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
195205
196206 const S = struct {
197207 fn doTheTest() !void {
......@@ -211,6 +221,7 @@ test "tuple to vector" {
211221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
212222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
213223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
214225
215226 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
216227 // Regressed with LLVM 14:
......@@ -240,6 +251,7 @@ test "vector casts of sizes not divisible by 8" {
240251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
254 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
243255
244256 const S = struct {
245257 fn doTheTest() !void {
......@@ -274,6 +286,7 @@ test "vector @splat" {
274286 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
275287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
276288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
277290
278291 if (builtin.zig_backend == .stage2_llvm and
279292 builtin.os.tag == .macos)
......@@ -320,6 +333,7 @@ test "load vector elements via comptime index" {
320333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
321334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
322335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
323337
324338 const S = struct {
325339 fn doTheTest() !void {
......@@ -341,6 +355,7 @@ test "store vector elements via comptime index" {
341355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
342356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343357 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
344359
345360 const S = struct {
346361 fn doTheTest() !void {
......@@ -368,6 +383,7 @@ test "load vector elements via runtime index" {
368383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
369384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
370385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
371387
372388 const S = struct {
373389 fn doTheTest() !void {
......@@ -389,6 +405,7 @@ test "store vector elements via runtime index" {
389405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
390406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
391407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
392409
393410 const S = struct {
394411 fn doTheTest() !void {
......@@ -411,6 +428,7 @@ test "initialize vector which is a struct field" {
411428 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
412429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
413430 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
431 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
414432
415433 const Vec4Obj = struct {
416434 data: @Vector(4, f32),
......@@ -434,6 +452,7 @@ test "vector comparison operators" {
434452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
435453 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
436454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
437456
438457 const S = struct {
439458 fn doTheTest() !void {
......@@ -474,6 +493,7 @@ test "vector division operators" {
474493 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
475494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
476495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
477497
478498 const S = struct {
479499 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
......@@ -556,6 +576,7 @@ test "vector bitwise not operator" {
556576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
557577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
558578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
559580
560581 const S = struct {
561582 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {
......@@ -587,6 +608,7 @@ test "vector shift operators" {
587608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
588609 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
589610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
611 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
590612
591613 const S = struct {
592614 fn doTheTestShift(x: anytype, y: anytype) !void {
......@@ -680,6 +702,7 @@ test "vector reduce operation" {
680702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
681703 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
682704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
683706
684707 const S = struct {
685708 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
......@@ -837,6 +860,7 @@ test "mask parameter of @shuffle is comptime scope" {
837860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
838861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
839862 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
863 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
840864
841865 const __v4hi = @Vector(4, i16);
842866 var v4_a = __v4hi{ 0, 0, 0, 0 };
......@@ -856,6 +880,7 @@ test "saturating add" {
856880 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
857881 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
858882 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
883 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
859884
860885 const S = struct {
861886 fn doTheTest() !void {
......@@ -887,6 +912,7 @@ test "saturating subtraction" {
887912 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
888913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
889914 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
915 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
890916
891917 const S = struct {
892918 fn doTheTest() !void {
......@@ -909,6 +935,7 @@ test "saturating multiplication" {
909935 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
910936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911937 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
938 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
912939
913940 // TODO: once #9660 has been solved, remove this line
914941 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;
......@@ -935,6 +962,7 @@ test "saturating shift-left" {
935962 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
936963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
937964 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
938966
939967 const S = struct {
940968 fn doTheTest() !void {
......@@ -957,6 +985,7 @@ test "multiplication-assignment operator with an array operand" {
957985 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
958986 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
959987 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
988 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
960989
961990 const S = struct {
962991 fn doTheTest() !void {
......@@ -977,6 +1006,7 @@ test "@addWithOverflow" {
9771006 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9781007 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9791008 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1009 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9801010
9811011 const S = struct {
9821012 fn doTheTest() !void {
......@@ -1020,6 +1050,7 @@ test "@subWithOverflow" {
10201050 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10211051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10221052 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1053 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10231054
10241055 const S = struct {
10251056 fn doTheTest() !void {
......@@ -1049,6 +1080,7 @@ test "@mulWithOverflow" {
10491080 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10501081 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10511082 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1083 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10521084
10531085 const S = struct {
10541086 fn doTheTest() !void {
......@@ -1069,6 +1101,7 @@ test "@shlWithOverflow" {
10691101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10701102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10711103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1104 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10721105
10731106 const S = struct {
10741107 fn doTheTest() !void {
......@@ -1095,6 +1128,7 @@ test "loading the second vector from a slice of vectors" {
10951128 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10961129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10971130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1131 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10981132 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10991133
11001134 @setRuntimeSafety(false);
......@@ -1113,6 +1147,7 @@ test "array of vectors is copied" {
11131147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11141148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11151149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1150 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11161151
11171152 const Vec3 = @Vector(3, i32);
11181153 var points = [_]Vec3{
......@@ -1136,6 +1171,7 @@ test "byte vector initialized in inline function" {
11361171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11371172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11381173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11391175
11401176 if (comptime builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .x86_64 and
11411177 builtin.cpu.features.isEnabled(@enumToInt(std.Target.x86.Feature.avx512f)))
......@@ -1182,6 +1218,7 @@ test "zero multiplicand" {
11821218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11831219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11841220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1221 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11851222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11861223
11871224 const zeros = @Vector(2, u32){ 0.0, 0.0 };
......@@ -1206,6 +1243,7 @@ test "@intCast to u0" {
12061243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12071244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12081245 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1246 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12091247
12101248 var zeros = @Vector(2, u32){ 0, 0 };
12111249 const casted = @intCast(@Vector(2, u0), zeros);
......@@ -1229,6 +1267,7 @@ test "array operands to shuffle are coerced to vectors" {
12291267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12301268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12311269 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1270 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12321271
12331272 const mask = [5]i32{ -1, 0, 1, 2, 3 };
12341273
......@@ -1241,6 +1280,7 @@ test "load packed vector element" {
12411280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12421281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12431282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1283 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12441284 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12451285 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12461286
......@@ -1253,6 +1293,7 @@ test "store packed vector element" {
12531293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12541294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12551295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1296 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12561297 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12571298 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12581299
......@@ -1268,6 +1309,7 @@ test "store to vector in slice" {
12681309 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12691310 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12701311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12711313
12721314 var v = [_]@Vector(3, f32){
12731315 .{ 1, 1, 1 },
......@@ -1283,6 +1325,7 @@ test "addition of vectors represented as strings" {
12831325 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12841326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12851327 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1328 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12861329
12871330 const V = @Vector(3, u8);
12881331 const foo: V = "foo".*;
test/behavior/void.zig+2
......@@ -20,6 +20,7 @@ test "compare void with void compile time known" {
2020
2121test "iterate over a void slice" {
2222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2324
2425 var j: usize = 0;
2526 for (times(10), 0..) |_, i| {
......@@ -36,6 +37,7 @@ test "void optional" {
3637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3738 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3941
4042 var x: ?void = {};
4143 try expect(x != null);
test/behavior/while.zig+20
......@@ -5,6 +5,7 @@ const assert = std.debug.assert;
55
66test "while loop" {
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
89
910 var i: i32 = 0;
1011 while (i < 4) {
......@@ -38,6 +39,8 @@ fn staticWhileLoop2() i32 {
3839}
3940
4041test "while with continue expression" {
42 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
43
4144 var sum: i32 = 0;
4245 {
4346 var i: i32 = 0;
......@@ -50,6 +53,8 @@ test "while with continue expression" {
5053}
5154
5255test "while with else" {
56 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
57
5358 var sum: i32 = 0;
5459 var i: i32 = 0;
5560 var got_else: i32 = 0;
......@@ -77,6 +82,8 @@ fn getNumberOrNull() ?i32 {
7782}
7883
7984test "continue outer while loop" {
85 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
86
8087 testContinueOuter();
8188 comptime testContinueOuter();
8289}
......@@ -123,6 +130,7 @@ test "while copies its payload" {
123130
124131test "continue and break" {
125132 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
127135 try runContinueAndBreakTest();
128136 try expect(continue_and_break_counter == 8);
......@@ -144,6 +152,7 @@ fn runContinueAndBreakTest() !void {
144152test "while with optional as condition" {
145153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
146154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147156
148157 numbers_left = 10;
149158 var sum: i32 = 0;
......@@ -156,6 +165,7 @@ test "while with optional as condition" {
156165test "while with optional as condition with else" {
157166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
158167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
159169
160170 numbers_left = 10;
161171 var sum: i32 = 0;
......@@ -172,6 +182,7 @@ test "while with optional as condition with else" {
172182
173183test "while with error union condition" {
174184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
175186
176187 numbers_left = 10;
177188 var sum: i32 = 0;
......@@ -215,6 +226,7 @@ test "while on optional with else result follow break prong" {
215226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
216227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
218230
219231 const result = while (returnOptional(10)) |value| {
220232 break value;
......@@ -242,6 +254,8 @@ fn returnTrue() bool {
242254}
243255
244256test "return with implicit cast from while loop" {
257 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
258
245259 returnWithImplicitCastFromWhileLoopTest() catch unreachable;
246260}
247261fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
......@@ -252,6 +266,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
252266
253267test "while on error union with else result follow else prong" {
254268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
255270
256271 const result = while (returnError()) |value| {
257272 break value;
......@@ -261,6 +276,7 @@ test "while on error union with else result follow else prong" {
261276
262277test "while on error union with else result follow break prong" {
263278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
264280
265281 const result = while (returnSuccess(10)) |value| {
266282 break value;
......@@ -306,6 +322,7 @@ test "while error 2 break statements and an else" {
306322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
307323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
308324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
325 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
309326
310327 const S = struct {
311328 fn entry(opt_t: anyerror!bool, f: bool) !void {
......@@ -331,6 +348,8 @@ test "continue inline while loop" {
331348}
332349
333350test "else continue outer while" {
351 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
352
334353 var i: usize = 0;
335354 while (true) {
336355 i += 1;
......@@ -343,6 +362,7 @@ test "else continue outer while" {
343362test "try terminating an infinite loop" {
344363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
346366
347367 // Test coverage for https://github.com/ziglang/zig/issues/13546
348368 const Foo = struct {
test/behavior/widening.zig+7
......@@ -9,6 +9,7 @@ test "integer widening" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1213
1314 var a: u8 = 250;
1415 var b: u16 = a;
......@@ -23,6 +24,8 @@ fn zero() u0 {
2324 return 0;
2425}
2526test "integer widening u0 to u8" {
27 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
28
2629 const a: u8 = zero();
2730 try expect(a == 0);
2831}
......@@ -30,6 +33,7 @@ test "integer widening u0 to u8" {
3033test "implicit unsigned integer to signed integer" {
3134 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3337
3438 var a: u8 = 250;
3539 var b: i16 = a;
......@@ -42,6 +46,7 @@ test "float widening" {
4246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4448 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4550
4651 var a: f16 = 12.34;
4752 var b: f32 = a;
......@@ -62,6 +67,7 @@ test "float widening f16 to f128" {
6267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6368 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6571
6672 var x: f16 = 12.34;
6773 var y: f128 = x;
......@@ -72,6 +78,7 @@ test "cast small unsigned to larger signed" {
7278 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
7582
7683 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));
7784 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));