authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2026-10-17 14:44:33+03:30
committergravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2026-10-23 09:18:03+03:30
logb60a4af44cca7d3e935acd0b861e3b650714ebc1
tree4367ad45c5d4a99d413aa1f33c5a43e4cb076fcb
parentf51d2cf02ab5593f8e0e7923b34d8a68048bc0d8

llvm: fix blocking issues to get tests running


130 files changed, 1951 insertions(+), 1187 deletions(-)

lib/compiler/aro/aro/Attribute/Wip.zig+1-1
...@@ -1303,7 +1303,7 @@ fn applyCallingConvention(wip: *Wip) !void {...@@ -1303,7 +1303,7 @@ fn applyCallingConvention(wip: *Wip) !void {
1303 .default => unreachable,1303 .default => unreachable,
1304 .cdecl => !(comp.target.cpu.arch.isArm() and comp.target.os.tag != .windows) and1304 .cdecl => !(comp.target.cpu.arch.isArm() and comp.target.os.tag != .windows) and
1305 !comp.target.cpu.arch.isPowerPC64() and1305 !comp.target.cpu.arch.isPowerPC64() and
1306 !comp.target.cpu.arch.isSpirV(),1306 !comp.target.cpu.arch.isSpirv(),
1307 .aarch64_sve_pcs, .aarch64_vector_pcs => comp.target.cpu.arch.isAARCH64(),1307 .aarch64_sve_pcs, .aarch64_vector_pcs => comp.target.cpu.arch.isAARCH64(),
1308 .arm_aapcs_vfp, .arm_aapcs => comp.target.cpu.arch.isArm(),1308 .arm_aapcs_vfp, .arm_aapcs => comp.target.cpu.arch.isArm(),
1309 .riscv_vector_cc, .riscv_vls_cc => comp.target.cpu.arch.isRISCV(),1309 .riscv_vector_cc, .riscv_vls_cc => comp.target.cpu.arch.isRISCV(),
lib/compiler/aro/aro/Target.zig+1-1
...@@ -113,7 +113,7 @@ pub const SubArch = enum {...@@ -113,7 +113,7 @@ pub const SubArch = enum {
113 return @backingInt(std.Target.mips.Feature.mips32r6);113 return @backingInt(std.Target.mips.Feature.mips32r6);
114 } else if (arch.isMIPS64()) {114 } else if (arch.isMIPS64()) {
115 return @backingInt(std.Target.mips.Feature.mips64r6);115 return @backingInt(std.Target.mips.Feature.mips64r6);
116 } else if (arch.isSpirV()) {116 } else if (arch.isSpirv()) {
117 const spirv = std.Target.spirv.Feature;117 const spirv = std.Target.spirv.Feature;
118 return @backingInt(switch (sub) {118 return @backingInt(switch (sub) {
119 .spirv_v10 => spirv.v1_0,119 .spirv_v10 => spirv.v1_0,
lib/compiler/test_runner.zig+1-1
...@@ -36,7 +36,7 @@ const need_simple = switch (builtin.zig_backend) {...@@ -36,7 +36,7 @@ const need_simple = switch (builtin.zig_backend) {
36pub fn main(init: std.process.Init.Minimal) void {36pub fn main(init: std.process.Init.Minimal) void {
37 @disableInstrumentation();37 @disableInstrumentation();
3838
39 if (builtin.cpu.arch.isSpirV()) {39 if (builtin.cpu.arch.isSpirv()) {
40 // SPIR-V needs an special test-runner40 // SPIR-V needs an special test-runner
41 return;41 return;
42 }42 }
lib/std/Target.zig+1-1
...@@ -2381,7 +2381,7 @@ pub fn supportsAddressSpace(...@@ -2381,7 +2381,7 @@ pub fn supportsAddressSpace(
2381 const arch = target.cpu.arch;2381 const arch = target.cpu.arch;
23822382
2383 const is_nvptx = arch.isNvptx();2383 const is_nvptx = arch.isNvptx();
2384 const is_spirv = arch.isSpirV();2384 const is_spirv = arch.isSpirv();
2385 const is_gpu = is_nvptx or is_spirv or arch == .amdgcn;2385 const is_gpu = is_nvptx or is_spirv or arch == .amdgcn;
23862386
2387 return switch (address_space) {2387 return switch (address_space) {
lib/std/debug.zig+1
...@@ -500,6 +500,7 @@ const use_trap_panic = switch (builtin.zig_backend) {...@@ -500,6 +500,7 @@ const use_trap_panic = switch (builtin.zig_backend) {
500 .stage2_spirv,500 .stage2_spirv,
501 .stage2_x86,501 .stage2_x86,
502 => true,502 => true,
503 .stage2_llvm => builtin.cpu.arch.isSpirv(),
503 else => false,504 else => false,
504};505};
505506
lib/std/lang.zig+5
...@@ -1363,6 +1363,11 @@ pub const panic: type = p: {...@@ -1363,6 +1363,11 @@ pub const panic: type = p: {
1363 .stage2_powerpc,1363 .stage2_powerpc,
1364 .stage2_riscv64,1364 .stage2_riscv64,
1365 => std.debug.simple_panic,1365 => std.debug.simple_panic,
1366 .stage2_spirv => std.debug.no_panic,
1367 .stage2_llvm => {
1368 if (builtin.cpu.arch.isSpirv()) break :p std.debug.no_panic;
1369 break :p std.debug.FullPanic(std.debug.defaultPanic);
1370 },
1366 else => std.debug.FullPanic(std.debug.defaultPanic),1371 else => std.debug.FullPanic(std.debug.defaultPanic),
1367 };1372 };
1368};1373};
lib/std/mem.zig+1-1
...@@ -4889,7 +4889,7 @@ pub fn doNotOptimizeAway(val: anytype) void {...@@ -4889,7 +4889,7 @@ pub fn doNotOptimizeAway(val: anytype) void {
4889 // tied to IDs that can be passed to valid instructions. Some4889 // tied to IDs that can be passed to valid instructions. Some
4890 // SPIR-V targets do not define c_long, so we just allow any sized4890 // SPIR-V targets do not define c_long, so we just allow any sized
4891 // integer on these targets4891 // integer on these targets
4892 const val_fits_in_gp_register = builtin.target.cpu.arch.isSpirV() or fits: {4892 const val_fits_in_gp_register = builtin.target.cpu.arch.isSpirv() or fits: {
4893 const max_gp_register_bits = @bitSizeOf(c_long);4893 const max_gp_register_bits = @bitSizeOf(c_long);
4894 break :fits int.bits <= max_gp_register_bits;4894 break :fits int.bits <= max_gp_register_bits;
4895 };4895 };
lib/std/testing.zig+1
...@@ -36,6 +36,7 @@ pub const backend_can_print = switch (builtin.zig_backend) {...@@ -36,6 +36,7 @@ pub const backend_can_print = switch (builtin.zig_backend) {
36 .stage2_riscv64,36 .stage2_riscv64,
37 .stage2_spirv,37 .stage2_spirv,
38 => false,38 => false,
39 .stage2_llvm => !builtin.cpu.arch.isSpirv(),
39 else => true,40 else => true,
40};41};
4142
lib/std/zig/llvm/Builder.zig+70-7
...@@ -212,13 +212,27 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -212,13 +212,27 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
212 .powerpc => subArchName(target, .powerpc, .{212 .powerpc => subArchName(target, .powerpc, .{
213 .{ .spe, "spe" },213 .{ .spe, "spe" },
214 }),214 }),
215 .spirv32, .spirv64 => subArchName(target, .spirv, .{215 .spirv32 => switch (target.os.tag) {
216 .{ .v1_6, "1.6" },216 .vulkan, .opengl => subArchName(target, .spirv, .{
217 .{ .v1_5, "1.5" },217 .{ .v1_6, "1.6" },
218 .{ .v1_4, "1.4" },218 .{ .v1_5, "1.5" },
219 .{ .v1_3, "1.3" },219 }),
220 .{ .v1_2, "1.2" },220 else => subArchName(target, .spirv, .{
221 .{ .v1_1, "1.1" },221 .{ .v1_6, "v1.6" },
222 .{ .v1_5, "v1.5" },
223 .{ .v1_4, "v1.4" },
224 .{ .v1_3, "v1.3" },
225 .{ .v1_2, "v1.2" },
226 .{ .v1_1, "v1.1" },
227 }),
228 },
229 .spirv64 => subArchName(target, .spirv, .{
230 .{ .v1_6, "v1.6" },
231 .{ .v1_5, "v1.5" },
232 .{ .v1_4, "v1.4" },
233 .{ .v1_3, "v1.3" },
234 .{ .v1_2, "v1.2" },
235 .{ .v1_1, "v1.1" },
222 }),236 }),
223 else => null,237 else => null,
224 };238 };
...@@ -10234,6 +10248,55 @@ pub fn opaqueType(self: *Builder, name: String) Allocator.Error!Type {...@@ -10234,6 +10248,55 @@ pub fn opaqueType(self: *Builder, name: String) Allocator.Error!Type {
10234 return self.opaqueTypeAssumeCapacity(name);10248 return self.opaqueTypeAssumeCapacity(name);
10235}10249}
1023610250
10251pub fn targetType(
10252 self: *Builder,
10253 name: String,
10254 types: []const Type,
10255 ints: []const u32,
10256) Allocator.Error!Type {
10257 try self.ensureUnusedTypeCapacity(1, Type.Target, types.len + ints.len);
10258 const Key = struct { name: String, types: []const Type, ints: []const u32 };
10259 const Adapter = struct {
10260 builder: *const Builder,
10261 pub fn hash(_: @This(), key: Key) u32 {
10262 var hasher: std.hash.Wyhash = .init(comptime std.hash.int(@backingInt(Type.Tag.target)));
10263 hasher.update(std.mem.asBytes(&key.name));
10264 hasher.update(std.mem.sliceAsBytes(key.types));
10265 hasher.update(std.mem.sliceAsBytes(key.ints));
10266 return @truncate(hasher.final());
10267 }
10268 pub fn eql(ctx: @This(), lhs_key: Key, _: void, rhs_index: usize) bool {
10269 const rhs_data = ctx.builder.type_items.items[rhs_index];
10270 if (rhs_data.tag != .target) return false;
10271 var extra = ctx.builder.typeExtraDataTrail(Type.Target, rhs_data.data);
10272 if (lhs_key.name != extra.data.name) return false;
10273 const rhs_types = extra.trail.next(extra.data.types_len, Type, ctx.builder);
10274 const rhs_ints = extra.trail.next(extra.data.ints_len, u32, ctx.builder);
10275 return std.mem.eql(Type, lhs_key.types, rhs_types) and
10276 std.mem.eql(u32, lhs_key.ints, rhs_ints);
10277 }
10278 };
10279 const gop = self.type_map.getOrPutAssumeCapacityAdapted(
10280 Key{ .name = name, .types = types, .ints = ints },
10281 Adapter{ .builder = self },
10282 );
10283 if (!gop.found_existing) {
10284 gop.key_ptr.* = {};
10285 gop.value_ptr.* = {};
10286 self.type_items.appendAssumeCapacity(.{
10287 .tag = .target,
10288 .data = self.addTypeExtraAssumeCapacity(Type.Target{
10289 .name = name,
10290 .types_len = @intCast(types.len),
10291 .ints_len = @intCast(ints.len),
10292 }),
10293 });
10294 self.type_extra.appendSliceAssumeCapacity(@ptrCast(types));
10295 self.type_extra.appendSliceAssumeCapacity(ints);
10296 }
10297 return @fromBackingInt(@intCast(gop.index));
10298}
10299
10237pub fn namedTypeSetBody(10300pub fn namedTypeSetBody(
10238 self: *Builder,10301 self: *Builder,
10239 named_type: Type,10302 named_type: Type,
src/Sema.zig+6-6
...@@ -6977,7 +6977,7 @@ fn analyzeCall(...@@ -6977,7 +6977,7 @@ fn analyzeCall(
6977 const is_inline_call = block.isComptime() or inline_requested;6977 const is_inline_call = block.isComptime() or inline_requested;
69786978
6979 if (!is_inline_call) {6979 if (!is_inline_call) {
6980 if (func_val == null and !func_is_extern and !block.is_typeof and zcu.getTarget().cpu.arch.isSpirV()) {6980 if (func_val == null and !func_is_extern and !block.is_typeof and zcu.getTarget().cpu.arch.isSpirv()) {
6981 return sema.fail(block, func_src, "SPIR-V does not support calling function pointers", .{});6981 return sema.fail(block, func_src, "SPIR-V does not support calling function pointers", .{});
6982 }6982 }
6983 if (sema.func_is_naked) return sema.failWithOwnedErrorMsg(block, msg: {6983 if (sema.func_is_naked) return sema.failWithOwnedErrorMsg(block, msg: {
...@@ -15531,7 +15531,7 @@ fn zirAsm(...@@ -15531,7 +15531,7 @@ fn zirAsm(
15531 }15531 }
1553215532
15533 const constraint = sema.code.nullTerminatedString(input.data.constraint);15533 const constraint = sema.code.nullTerminatedString(input.data.constraint);
15534 if (zcu.getTarget().cpu.arch.isSpirV() and std.mem.eql(u8, constraint, "c")) {15534 if (zcu.getTarget().cpu.arch.isSpirv() and std.mem.eql(u8, constraint, "c")) {
15535 const val = sema.resolveValue(arg.*) orelse {15535 const val = sema.resolveValue(arg.*) orelse {
15536 return sema.fail(block, input_src, "assembly input with 'c' constraint must be compile-time known", .{});15536 return sema.fail(block, input_src, "assembly input with 'c' constraint must be compile-time known", .{});
15537 };15537 };
...@@ -20921,7 +20921,7 @@ fn zirReifySpirvType(...@@ -20921,7 +20921,7 @@ fn zirReifySpirvType(
20921 } },20921 } },
20922 };20922 };
2092320923
20924 if (!target.cpu.arch.isSpirV()) {20924 if (!target.cpu.arch.isSpirv()) {
20925 return sema.fail(20925 return sema.fail(
20926 block,20926 block,
20927 src,20927 src,
...@@ -30286,7 +30286,7 @@ fn checkSpirvSliceAllowed(...@@ -30286,7 +30286,7 @@ fn checkSpirvSliceAllowed(
30286 const zcu = sema.pt.zcu;30286 const zcu = sema.pt.zcu;
30287 const target = zcu.getTarget();30287 const target = zcu.getTarget();
3028830288
30289 if (!target.cpu.arch.isSpirV()) return;30289 if (!target.cpu.arch.isSpirv()) return;
30290 if (block.isComptime()) return;30290 if (block.isComptime()) return;
3029130291
30292 if (!target_util.addrSpaceIsLogical(target, address_space)) return;30292 if (!target_util.addrSpaceIsLogical(target, address_space)) return;
...@@ -35069,7 +35069,7 @@ pub fn resolveNavPtrModifiers(...@@ -35069,7 +35069,7 @@ pub fn resolveNavPtrModifiers(
35069 };35069 };
35070 const addrspace_body = zir_decl.addrspace_body orelse {35070 const addrspace_body = zir_decl.addrspace_body orelse {
35071 if (zir_decl.linkage == .@"extern" and35071 if (zir_decl.linkage == .@"extern" and
35072 target.cpu.arch.isSpirV() and35072 target.cpu.arch.isSpirv() and
35073 nav_ty.zigTypeTag(zcu) != .@"fn")35073 nav_ty.zigTypeTag(zcu) != .@"fn")
35074 {35074 {
35075 return sema.fail(35075 return sema.fail(
...@@ -35090,7 +35090,7 @@ pub fn resolveNavPtrModifiers(...@@ -35090,7 +35090,7 @@ pub fn resolveNavPtrModifiers(
35090 break :as try sema.analyzeAsAddressSpace(block, addrspace_src, addrspace_ref, addrspace_ctx);35090 break :as try sema.analyzeAsAddressSpace(block, addrspace_src, addrspace_ref, addrspace_ctx);
35091 };35091 };
3509235092
35093 if (target.cpu.arch.isSpirV()) {35093 if (target.cpu.arch.isSpirv()) {
35094 if (zir_decl.kind == .@"var" and zir_decl.linkage != .@"extern" and !zir_decl.is_threadlocal) {35094 if (zir_decl.kind == .@"var" and zir_decl.linkage != .@"extern" and !zir_decl.is_threadlocal) {
35095 return sema.failWithOwnedErrorMsg(block, msg: {35095 return sema.failWithOwnedErrorMsg(block, msg: {
35096 const decl_src = block.nodeOffset(.zero);35096 const decl_src = block.nodeOffset(.zero);
src/Type.zig+1-1
...@@ -3135,7 +3135,7 @@ pub fn validateExtern(ty: Type, position: ExternPosition, zcu: *const Zcu) bool...@@ -3135,7 +3135,7 @@ pub fn validateExtern(ty: Type, position: ExternPosition, zcu: *const Zcu) bool
3135 => false,3135 => false,
31363136
3137 .vector => {3137 .vector => {
3138 if (zcu.getTarget().cpu.arch.isSpirV()) return true;3138 if (zcu.getTarget().cpu.arch.isSpirv()) return true;
3139 return position == .param_ty or position == .ret_ty;3139 return position == .param_ty or position == .ret_ty;
3140 },3140 },
31413141
src/Zcu.zig+1-1
...@@ -4101,7 +4101,7 @@ pub fn errorSetBits(zcu: *const Zcu) u16 {...@@ -4101,7 +4101,7 @@ pub fn errorSetBits(zcu: *const Zcu) u16 {
4101 const target = zcu.getTarget();4101 const target = zcu.getTarget();
41024102
4103 if (zcu.error_limit == 0) return 0;4103 if (zcu.error_limit == 0) return 0;
4104 if (target.cpu.arch.isSpirV()) {4104 if (target.cpu.arch.isSpirv()) {
4105 // As expected by https://github.com/Snektron/zig-spirv-test-executor4105 // As expected by https://github.com/Snektron/zig-spirv-test-executor
4106 if (zcu.comp.config.is_test) return 32;4106 if (zcu.comp.config.is_test) return 32;
4107 }4107 }
src/codegen/llvm.zig+132-6
...@@ -995,6 +995,13 @@ pub const Object = struct {...@@ -995,6 +995,13 @@ pub const Object = struct {
995 }995 }
996996
997 try fg.wip.finish();997 try fg.wip.finish();
998
999 // We don't use `builtin.test_functions` for running the SPIR-V tests so here is
1000 // a workaround to not optimize away test functions from the final module.
1001 if (target.cpu.arch.isSpirv() and zcu.test_functions.contains(func.owner_nav)) {
1002 try o.used.append(gpa, llvm_function.ptrConst(&o.builder).global.toConst());
1003 }
1004
998 try o.flushTypePool(pt);1005 try o.flushTypePool(pt);
999 }1006 }
10001007
...@@ -1003,6 +1010,7 @@ pub const Object = struct {...@@ -1003,6 +1010,7 @@ pub const Object = struct {
1003 const ip = &zcu.intern_pool;1010 const ip = &zcu.intern_pool;
1004 const comp = zcu.comp;1011 const comp = zcu.comp;
1005 const gpa = comp.gpa;1012 const gpa = comp.gpa;
1013 const arch = comp.root_mod.resolved_target.result.cpu.arch;
10061014
1007 const nav = ip.getNav(nav_id);1015 const nav = ip.getNav(nav_id);
1008 const resolved = nav.resolved.?;1016 const resolved = nav.resolved.?;
...@@ -1012,6 +1020,19 @@ pub const Object = struct {...@@ -1012,6 +1020,19 @@ pub const Object = struct {
1012 else => null,1020 else => null,
1013 };1021 };
1014 const nav_ty: Type = .fromInterned(resolved.type);1022 const nav_ty: Type = .fromInterned(resolved.type);
1023
1024 // Workaround for SPIR-V not supporting references to global constants.
1025 // Our choices here are only between bad (defaulting constant globals
1026 // address space to .private) and ugly (this). I went with ugly since
1027 // it's scoped and doesn't break anything for other targets.
1028 if (arch.isSpirv() and resolved.@"const" and opt_extern == null and nav_ty.zigTypeTag(zcu) != .@"fn") {
1029 if (o.nav_map.get(nav_id)) |llvm_global| {
1030 const llvm_ref = try o.lowerNavRef(nav_id);
1031 try llvm_global.replace(llvm_ref.unwrap().global, &o.builder);
1032 }
1033 return;
1034 }
1035
1015 const llvm_ty: Builder.Type = if (opt_extern != null) ty: {1036 const llvm_ty: Builder.Type = if (opt_extern != null) ty: {
1016 // We *must* lower this declaration no matter what. If it has a type we can't actually1037 // We *must* lower this declaration no matter what. If it has a type we can't actually
1017 // represent (because it doesn't have runtime bits), we instead lower as the zero-size1038 // represent (because it doesn't have runtime bits), we instead lower as the zero-size
...@@ -1462,6 +1483,7 @@ pub const Object = struct {...@@ -1462,6 +1483,7 @@ pub const Object = struct {
1462 .undefined,1483 .undefined,
1463 .null,1484 .null,
1464 .enum_literal,1485 .enum_literal,
1486 .spirv,
1465 => return o.builder.debugSignedType(name, 0),1487 => return o.builder.debugSignedType(name, 0),
14661488
1467 .float => return o.builder.debugFloatType(name, ty.floatBits(target)),1489 .float => return o.builder.debugFloatType(name, ty.floatBits(target)),
...@@ -1823,7 +1845,13 @@ pub const Object = struct {...@@ -1823,7 +1845,13 @@ pub const Object = struct {
1823 while (it.next()) |field_index| {1845 while (it.next()) |field_index| {
1824 const field_ty: Type = .fromInterned(struct_type.field_types.get(ip)[field_index]);1846 const field_ty: Type = .fromInterned(struct_type.field_types.get(ip)[field_index]);
1825 if (!field_ty.hasRuntimeBits(zcu)) continue;1847 if (!field_ty.hasRuntimeBits(zcu)) continue;
1826 const field_size = field_ty.abiSize(zcu);1848 const field_size = field_size: {
1849 if (field_ty.isSpirvRuntimeArray(zcu)) {
1850 assert(field_index == it.fields_len - 1);
1851 break :field_size 0;
1852 }
1853 break :field_size field_ty.abiSize(zcu);
1854 };
1827 const field_align = switch (ty.explicitFieldAlignment(field_index, zcu)) {1855 const field_align = switch (ty.explicitFieldAlignment(field_index, zcu)) {
1828 .none => field_ty.abiAlignment(zcu),1856 .none => field_ty.abiAlignment(zcu),
1829 else => |a| a,1857 else => |a| a,
...@@ -2098,7 +2126,6 @@ pub const Object = struct {...@@ -2098,7 +2126,6 @@ pub const Object = struct {
2098 },2126 },
2099 .frame => @panic("TODO implement lowerDebugType for Frame types"),2127 .frame => @panic("TODO implement lowerDebugType for Frame types"),
2100 .@"anyframe" => @panic("TODO implement lowerDebugType for AnyFrame types"),2128 .@"anyframe" => @panic("TODO implement lowerDebugType for AnyFrame types"),
2101 .spirv => unreachable,
2102 }2129 }
2103 }2130 }
21042131
...@@ -2856,7 +2883,8 @@ pub const Object = struct {...@@ -2856,7 +2883,8 @@ pub const Object = struct {
28562883
2857 if (o.type_map.get(t.toIntern())) |value| return value;2884 if (o.type_map.get(t.toIntern())) |value| return value;
28582885
2859 assert(struct_type.size > 0);2886 // @SpirvType() can create opaque types which are zero-sized but cannot be ignored here.
2887 assert(struct_type.size > 0 or target.cpu.arch.isSpirv());
28602888
2861 var llvm_field_types: std.ArrayList(Builder.Type) = .empty;2889 var llvm_field_types: std.ArrayList(Builder.Type) = .empty;
2862 defer llvm_field_types.deinit(o.gpa);2890 defer llvm_field_types.deinit(o.gpa);
...@@ -2891,7 +2919,11 @@ pub const Object = struct {...@@ -2891,7 +2919,11 @@ pub const Object = struct {
28912919
2892 try llvm_field_types.append(o.gpa, try o.lowerType(field_ty, repr));2920 try llvm_field_types.append(o.gpa, try o.lowerType(field_ty, repr));
28932921
2894 offset += field_ty.abiSize(zcu);2922 if (field_ty.isSpirvRuntimeArray(zcu)) {
2923 assert(field_index == it.fields_len - 1);
2924 } else {
2925 offset += field_ty.abiSize(zcu);
2926 }
2895 }2927 }
2896 {2928 {
2897 const prev_offset = offset;2929 const prev_offset = offset;
...@@ -3033,7 +3065,8 @@ pub const Object = struct {...@@ -3033,7 +3065,8 @@ pub const Object = struct {
3033 );3065 );
3034 return ty;3066 return ty;
3035 },3067 },
3036 .opaque_type, .spirv_type => unreachable, // no runtime bits3068 .opaque_type => unreachable,
3069 .spirv_type => try o.lowerSpirvType(t),
3037 .enum_type => try o.intType(t.backingIntType(zcu).intInfo(zcu).bits, repr),3070 .enum_type => try o.intType(t.backingIntType(zcu).intInfo(zcu).bits, repr),
3038 .func_type => |func_type| {3071 .func_type => |func_type| {
3039 assert(t.fnHasRuntimeBits(zcu));3072 assert(t.fnHasRuntimeBits(zcu));
...@@ -3064,6 +3097,74 @@ pub const Object = struct {...@@ -3064,6 +3097,74 @@ pub const Object = struct {
3064 };3097 };
3065 }3098 }
30663099
3100 fn lowerSpirvType(o: *Object, t: Type) Allocator.Error!Builder.Type {
3101 const zcu = o.zcu;
3102 const ip = &zcu.intern_pool;
3103 const os_tag = zcu.comp.root_mod.resolved_target.result.os.tag;
3104
3105 const spirv_ty = ip.loadSpirvType(t.toIntern());
3106 switch (spirv_ty.flags.tag) {
3107 .sampler => return o.builder.targetType(try o.builder.string("spirv.Sampler"), &.{}, &.{}),
3108 .image, .sampled_image => {
3109 const image_ty = if (spirv_ty.flags.tag == .image) spirv_ty else ip.loadSpirvType(spirv_ty.ty);
3110 const sampled_ty = sampled_ty: {
3111 if (image_ty.ty == .void_type) break :sampled_ty .void;
3112 break :sampled_ty try o.lowerType(.fromInterned(image_ty.ty), .in_memory);
3113 };
3114 const image_flags = image_ty.flags;
3115 const ints = [_]u32{
3116 switch (image_flags.dim) {
3117 .@"1d" => 0,
3118 .@"2d" => 1,
3119 .@"3d" => 2,
3120 .cube => 3,
3121 },
3122 switch (image_flags.depth) {
3123 .not_depth => 0,
3124 .depth => 1,
3125 .unknown => 2,
3126 },
3127 @intFromBool(image_flags.is_arrayed),
3128 @intFromBool(image_flags.is_multisampled),
3129 switch (image_flags.usage) {
3130 .unknown => 0,
3131 .sampled => 1,
3132 .storage => 2,
3133 },
3134 switch (image_flags.format) {
3135 .unknown => 0,
3136 .rgba32f => 1,
3137 .rgba16f => 2,
3138 .r32f => 3,
3139 .rgba8unorm => 4,
3140 .rgba8snorm => 5,
3141 .rgba32i => 21,
3142 .rgba16i => 22,
3143 .rgba8i => 23,
3144 .r32i => 24,
3145 .rgba32u => 30,
3146 .rgba16u => 31,
3147 .rgba8u => 32,
3148 .r32u => 33,
3149 },
3150 switch (image_flags.access) {
3151 .unknown => 0,
3152 .read_only => 0,
3153 .write_only => 1,
3154 .read_write => 2,
3155 },
3156 };
3157 const name = if (spirv_ty.flags.tag == .image) "spirv.Image" else "spirv.SampledImage";
3158 const ints_len: usize = if (os_tag == .opencl) 7 else 6;
3159 return o.builder.targetType(try o.builder.string(name), &.{sampled_ty}, ints[0..ints_len]);
3160 },
3161 .runtime_array => {
3162 const elem_ty = try o.lowerType(.fromInterned(spirv_ty.ty), .in_memory);
3163 return o.builder.arrayType(0, elem_ty);
3164 },
3165 }
3166 }
3167
3067 pub const FuncInfo = struct {3168 pub const FuncInfo = struct {
3068 cc: std.lang.CallingConvention,3169 cc: std.lang.CallingConvention,
3069 noalias_bits: u32 = 0,3170 noalias_bits: u32 = 0,
...@@ -3891,6 +3992,7 @@ pub const Object = struct {...@@ -3891,6 +3992,7 @@ pub const Object = struct {
3891 const zcu = o.zcu;3992 const zcu = o.zcu;
3892 const ip = &zcu.intern_pool;3993 const ip = &zcu.intern_pool;
3893 const gpa = zcu.comp.gpa;3994 const gpa = zcu.comp.gpa;
3995 const target = &zcu.comp.root_mod.resolved_target.result;
38943996
3895 const nav = ip.getNav(nav_id);3997 const nav = ip.getNav(nav_id);
3896 const nav_ty: Type = .fromInterned(nav.resolved.?.type);3998 const nav_ty: Type = .fromInterned(nav.resolved.?.type);
...@@ -3902,6 +4004,17 @@ pub const Object = struct {...@@ -3902,6 +4004,17 @@ pub const Object = struct {
3902 return o.lowerPtrToVoid(nav_align.toLlvm(), nav.resolved.?.@"addrspace");4004 return o.lowerPtrToVoid(nav_align.toLlvm(), nav.resolved.?.@"addrspace");
3903 }4005 }
39044006
4007 // Workaround for SPIR-V not supporting references to global constants.
4008 if (target.cpu.arch.isSpirv() and nav.resolved.?.@"const" and nav.getExtern(ip) == null and
4009 nav_ty.zigTypeTag(zcu) != .@"fn" and nav.resolved.?.value != .none)
4010 {
4011 const nav_align = switch (nav.resolved.?.@"align") {
4012 .none => nav_ty.abiAlignment(zcu),
4013 else => |a| a,
4014 };
4015 return o.lowerUavRef(nav.resolved.?.value, nav_align.toLlvm(), nav.resolved.?.@"addrspace");
4016 }
4017
3905 const gop = try o.nav_map.getOrPut(gpa, nav_id);4018 const gop = try o.nav_map.getOrPut(gpa, nav_id);
3906 if (!gop.found_existing) {4019 if (!gop.found_existing) {
3907 errdefer assert(o.nav_map.remove(nav_id));4020 errdefer assert(o.nav_map.remove(nav_id));
...@@ -3918,7 +4031,7 @@ pub const Object = struct {...@@ -3918,7 +4031,7 @@ pub const Object = struct {
3918 // We need to make sure the global's address space is up to date, because that affects the4031 // We need to make sure the global's address space is up to date, because that affects the
3919 // type of a pointer to this global. But everything else about the global will be populated4032 // type of a pointer to this global. But everything else about the global will be populated
3920 // by `updateNav` or `updateFunc`.4033 // by `updateNav` or `updateFunc`.
3921 llvm_global.ptr(&o.builder).addr_space = toLlvmAddressSpace(nav.resolved.?.@"addrspace", zcu.getTarget());4034 llvm_global.ptr(&o.builder).addr_space = toLlvmAddressSpace(nav.resolved.?.@"addrspace", target);
3922 return llvm_global.toConst();4035 return llvm_global.toConst();
3923 }4036 }
39244037
...@@ -4446,6 +4559,19 @@ pub fn toLlvmAddressSpace(address_space: std.lang.AddressSpace, target: *const s...@@ -4446,6 +4559,19 @@ pub fn toLlvmAddressSpace(address_space: std.lang.AddressSpace, target: *const s
4446 .local => Builder.AddrSpace.nvptx.local,4559 .local => Builder.AddrSpace.nvptx.local,
4447 else => unreachable,4560 else => unreachable,
4448 },4561 },
4562 .spirv32, .spirv64 => switch (address_space) {
4563 .generic, .local => Builder.AddrSpace.spirv.function,
4564 .global => Builder.AddrSpace.spirv.cross_workgroup,
4565 .constant => Builder.AddrSpace.spirv.uniform_constant,
4566 .shared => Builder.AddrSpace.spirv.workgroup,
4567 .private => Builder.AddrSpace.spirv.private,
4568 .input => Builder.AddrSpace.spirv.input,
4569 .output => Builder.AddrSpace.spirv.output,
4570 .storage_buffer => Builder.AddrSpace.spirv.storage_buffer,
4571 .uniform => Builder.AddrSpace.spirv.uniform,
4572 .push_constant => Builder.AddrSpace.spirv.push_constant,
4573 else => unreachable,
4574 },
4449 .x86, .x86_64 => switch (address_space) {4575 .x86, .x86_64 => switch (address_space) {
4450 .generic => .default,4576 .generic => .default,
4451 .gs => Builder.AddrSpace.x86.gs,4577 .gs => Builder.AddrSpace.x86.gs,
src/codegen/llvm/FuncGen.zig+4
...@@ -1780,6 +1780,10 @@ fn airSwitchBr(self: *FuncGen, inst: Air.Inst.Index, is_dispatch_loop: bool) Tod...@@ -1780,6 +1780,10 @@ fn airSwitchBr(self: *FuncGen, inst: Air.Inst.Index, is_dispatch_loop: bool) Tod
1780 // * https://github.com/llvm/llvm-project/blob/56905dab7da50bccfcceaeb496b206ff476127e1/llvm/test/MC/WebAssembly/blockaddress.ll1780 // * https://github.com/llvm/llvm-project/blob/56905dab7da50bccfcceaeb496b206ff476127e1/llvm/test/MC/WebAssembly/blockaddress.ll
1781 if (zcu.comp.getTarget().cpu.arch.isWasm()) break :jmp_table null;1781 if (zcu.comp.getTarget().cpu.arch.isWasm()) break :jmp_table null;
17821782
1783 // Workaround for:
1784 // * https://github.com/llvm/llvm-project/blob/0cd28174a1f64e5a8df194422ebf46e88cff33ad/llvm/lib/Target/SPIRV/SPIRVStructurizer.cpp#L279
1785 if (zcu.comp.getTarget().cpu.arch.isSpirv()) break :jmp_table null;
1786
1783 // On a 64-bit target, 1024 pointers in our jump table is about 8K of pointers. This seems just1787 // On a 64-bit target, 1024 pointers in our jump table is about 8K of pointers. This seems just
1784 // about acceptable - it won't fill L1d cache on most CPUs.1788 // about acceptable - it won't fill L1d cache on most CPUs.
1785 const max_table_len = 1024;1789 const max_table_len = 1024;
src/codegen/spirv/Assembler.zig+9-13
...@@ -784,21 +784,17 @@ fn parseNumber(ass: *Assembler) !void {...@@ -784,21 +784,17 @@ fn parseNumber(ass: *Assembler) !void {
784 const result = try ass.resolveRef(ass.inst.operands.items[0].ref_id);784 const result = try ass.resolveRef(ass.inst.operands.items[0].ref_id);
785 const result_id = result.resultId();785 const result_id = result.resultId();
786786
787 const words = cg.module.instructions.items;787 var it = cg.module.iterate();
788 var offset: usize = 0;788 while (it.next()) |instruction| {
789 while (offset < words.len) {789 const words = instruction.words;
790 const header: spec.InstructionHeader = @bitCast(words[offset]);790 switch (instruction.opcode) {
791 const word_count = header.word_count;791 .OpTypeInt => if (words.len >= 4 and @as(Id, @fromBackingInt(@intCast(words[1]))) == result_id) {
792 defer offset += word_count;792 const width: u16 = @intCast(words[2]);
793 if (word_count == 0) break;793 const signedness: std.lang.Signedness = if (words[3] == 0) .unsigned else .signed;
794 switch (header.opcode) {
795 .OpTypeInt => if (word_count >= 4 and @as(Id, @fromBackingInt(@intCast(words[offset + 1]))) == result_id) {
796 const width: u16 = @intCast(words[offset + 2]);
797 const signedness: std.lang.Signedness = if (words[offset + 3] == 0) .unsigned else .signed;
798 return ass.parseContextDependentInt(signedness, width);794 return ass.parseContextDependentInt(signedness, width);
799 },795 },
800 .OpTypeFloat => if (word_count >= 3 and @as(Id, @fromBackingInt(@intCast(words[offset + 1]))) == result_id) {796 .OpTypeFloat => if (words.len >= 3 and @as(Id, @fromBackingInt(@intCast(words[1]))) == result_id) {
801 const bits = words[offset + 2];797 const bits = words[2];
802 return switch (bits) {798 return switch (bits) {
803 16 => ass.parseContextDependentFloat(16),799 16 => ass.parseContextDependentFloat(16),
804 32 => ass.parseContextDependentFloat(32),800 32 => ass.parseContextDependentFloat(32),
src/codegen/spirv/CodeGen.zig+2-149
...@@ -13,7 +13,6 @@ next_result_id: Word = 1,...@@ -13,7 +13,6 @@ next_result_id: Word = 1,
13navs: std.array_hash_map.Auto(InternPool.Nav.Index, Id) = .empty,13navs: std.array_hash_map.Auto(InternPool.Nav.Index, Id) = .empty,
14externs: std.array_hash_map.Auto(InternPool.Nav.Index, Mir.Extern) = .empty,14externs: std.array_hash_map.Auto(InternPool.Nav.Index, Mir.Extern) = .empty,
15entry_points: std.ArrayList(Mir.EntryPoint) = .empty,15entry_points: std.ArrayList(Mir.EntryPoint) = .empty,
16error_buffer: ?Id = null,
17struct_types: std.array_hash_map.Custom(StructType, Id, StructType.HashContext, true) = .empty,16struct_types: std.array_hash_map.Custom(StructType, Id, StructType.HashContext, true) = .empty,
18/// SPIR-V ids of OpVariables whose pointee is a Block struct17/// SPIR-V ids of OpVariables whose pointee is a Block struct
19block_var_ids: std.AutoHashMapUnmanaged(Id, void) = .empty,18block_var_ids: std.AutoHashMapUnmanaged(Id, void) = .empty,
...@@ -202,9 +201,7 @@ pub fn generate(...@@ -202,9 +201,7 @@ pub fn generate(
202 defer cg.deinit();201 defer cg.deinit();
203202
204 const return_ty_id = try cg.resolveFnReturnType(.fromInterned(fn_info.return_type));203 const return_ty_id = try cg.resolveFnReturnType(.fromInterned(fn_info.return_type));
205 const is_test = zcu.test_functions.contains(nav_index);
206 const nav_id = try cg.resolveNav(nav_index);204 const nav_id = try cg.resolveNav(nav_index);
207 const function_id = if (is_test) cg.allocId() else nav_id;
208205
209 try cg.args.ensureUnusedCapacity(gpa, fn_info.param_types.len);206 try cg.args.ensureUnusedCapacity(gpa, fn_info.param_types.len);
210 for (fn_info.param_types.get(ip)) |param_ty_index| {207 for (fn_info.param_types.get(ip)) |param_ty_index| {
...@@ -224,7 +221,7 @@ pub fn generate(...@@ -224,7 +221,7 @@ pub fn generate(
224 const fn_ty_id = try cg.functionType(return_ty_id, cg.args.items(.ty));221 const fn_ty_id = try cg.functionType(return_ty_id, cg.args.items(.ty));
225 try cg.module.emit(gpa, .OpFunction, .{222 try cg.module.emit(gpa, .OpFunction, .{
226 .id_result_type = return_ty_id,223 .id_result_type = return_ty_id,
227 .id_result = function_id,224 .id_result = nav_id,
228 .function_control = .{},225 .function_control = .{},
229 .function_type = fn_ty_id,226 .function_type = fn_ty_id,
230 });227 });
...@@ -236,8 +233,7 @@ pub fn generate(...@@ -236,8 +233,7 @@ pub fn generate(
236 }233 }
237 try cg.module.append(gpa, cg.prologue);234 try cg.module.append(gpa, cg.prologue);
238 try cg.module.append(gpa, cg.body);235 try cg.module.append(gpa, cg.body);
239 if (is_test) try cg.generateTestEntryPoint(nav.fqn.toSlice(ip), nav_id, function_id);236 try cg.debugName(nav_id, nav.fqn.toSlice(ip));
240 try cg.debugName(function_id, nav.fqn.toSlice(ip));
241237
242 return cg.toOwnedMir();238 return cg.toOwnedMir();
243}239}
...@@ -3781,149 +3777,6 @@ fn buildWideMul(...@@ -3781,149 +3777,6 @@ fn buildWideMul(
3781}3777}
37823778
3783/// The SPIR-V backend is not yet advanced enough to support the std testing infrastructure.3779/// The SPIR-V backend is not yet advanced enough to support the std testing infrastructure.
3784/// In order to be able to run tests, we "temporarily" lower test kernels into separate entry-
3785/// points. The test executor will then be able to invoke these to run the tests.
3786/// Note that tests are lowered according to std.lang.TestFn, which is `fn () anyerror!void`.
3787/// (anyerror!void has the same layout as anyerror).
3788/// Each test declaration generates a function like.
3789/// %anyerror = OpTypeInt 0 16
3790/// %p_invocation_globals_struct_ty = ...
3791/// %p_anyerror = OpTypePointer CrossWorkgroup %anyerror
3792/// %K = OpTypeFunction %void %p_invocation_globals_struct_ty %p_anyerror
3793///
3794/// %test = OpFunction %void %K
3795/// %p_invocation_globals = OpFunctionParameter p_invocation_globals_struct_ty
3796/// %p_err = OpFunctionParameter %p_anyerror
3797/// %lbl = OpLabel
3798/// %result = OpFunctionCall %anyerror %func %p_invocation_globals
3799/// OpStore %p_err %result
3800/// OpFunctionEnd
3801/// TODO is to also write out the error as a function call parameter, and to somehow fetch
3802/// the name of an error in the text executor.
3803fn generateTestEntryPoint(
3804 cg: *CodeGen,
3805 name: []const u8,
3806 kernel_id: Id,
3807 test_id: Id,
3808) !void {
3809 const gpa = cg.gpa;
3810 const zcu = cg.zcu;
3811 const target = cg.zcu.getTarget();
3812
3813 const anyerror_ty_id = try cg.resolveType(.anyerror, .direct);
3814 const ptr_anyerror_ty = try cg.pt.ptrType(.{
3815 .child = .anyerror_type,
3816 .flags = .{ .address_space = .storage_buffer },
3817 });
3818 const ptr_anyerror_ty_id = try cg.resolveType(ptr_anyerror_ty, .direct);
3819
3820 var section: Section = .empty;
3821 defer section.deinit(gpa);
3822
3823 const p_error_id = cg.allocId();
3824 switch (target.os.tag) {
3825 .opencl, .amdhsa => {
3826 const void_ty_id = try cg.resolveType(.void, .direct);
3827 const kernel_proto_ty_id = try cg.functionType(void_ty_id, &.{ptr_anyerror_ty_id});
3828
3829 try section.emit(gpa, .OpFunction, .{
3830 .id_result_type = try cg.resolveType(.void, .direct),
3831 .id_result = kernel_id,
3832 .function_control = .{},
3833 .function_type = kernel_proto_ty_id,
3834 });
3835
3836 try section.emit(gpa, .OpFunctionParameter, .{
3837 .id_result_type = ptr_anyerror_ty_id,
3838 .id_result = p_error_id,
3839 });
3840
3841 try section.emit(gpa, .OpLabel, .{
3842 .id_result = cg.allocId(),
3843 });
3844 },
3845 .vulkan, .opengl => {
3846 if (cg.error_buffer == null) {
3847 const buffer_struct_ty_id = cg.allocId();
3848 try cg.module.emit(gpa, .OpTypeStruct, .{
3849 .id_result = buffer_struct_ty_id,
3850 .id_ref = &.{anyerror_ty_id},
3851 });
3852 try cg.memberDebugName(buffer_struct_ty_id, 0, "error_out");
3853 try cg.decorate(buffer_struct_ty_id, .block);
3854 try cg.decorateMember(buffer_struct_ty_id, 0, .{ .offset = .{ .byte_offset = 0 } });
3855
3856 const ptr_buffer_struct_ty_id = cg.allocId();
3857 try cg.module.emit(gpa, .OpTypePointer, .{
3858 .id_result = ptr_buffer_struct_ty_id,
3859 .storage_class = cg.storageClass(.storage_buffer),
3860 .type = buffer_struct_ty_id,
3861 });
3862
3863 const error_buffer_id = cg.allocId();
3864 cg.error_buffer = error_buffer_id;
3865 try cg.module.emit(gpa, .OpVariable, .{
3866 .id_result_type = ptr_buffer_struct_ty_id,
3867 .id_result = error_buffer_id,
3868 .storage_class = cg.storageClass(.storage_buffer),
3869 });
3870 try cg.decorate(error_buffer_id, .{ .descriptor_set = .{ .descriptor_set = 0 } });
3871 try cg.decorate(error_buffer_id, .{ .binding = .{ .binding_point = 0 } });
3872 }
3873
3874 const void_ty_id = try cg.resolveType(.void, .direct);
3875 const kernel_proto_ty_id = try cg.functionType(void_ty_id, &.{});
3876 try section.emit(gpa, .OpFunction, .{
3877 .id_result_type = try cg.resolveType(.void, .direct),
3878 .id_result = kernel_id,
3879 .function_control = .{},
3880 .function_type = kernel_proto_ty_id,
3881 });
3882 try section.emit(gpa, .OpLabel, .{
3883 .id_result = cg.allocId(),
3884 });
3885
3886 const buffer_id = cg.error_buffer.?;
3887 const zero_id = try cg.constInt(.u32, 0);
3888 try section.emit(gpa, .OpInBoundsAccessChain, .{
3889 .id_result_type = ptr_anyerror_ty_id,
3890 .id_result = p_error_id,
3891 .base = buffer_id,
3892 .indexes = &.{zero_id},
3893 });
3894 },
3895 else => unreachable,
3896 }
3897
3898 const error_id = cg.allocId();
3899 try section.emit(gpa, .OpFunctionCall, .{
3900 .id_result_type = anyerror_ty_id,
3901 .id_result = error_id,
3902 .function = test_id,
3903 });
3904 // Note: Convert to direct not required.
3905 try section.emit(gpa, .OpStore, .{
3906 .pointer = p_error_id,
3907 .object = error_id,
3908 .memory_access = .{
3909 .aligned = .{ .literal_integer = @intCast(Type.abiAlignment(.anyerror, zcu).toByteUnits().?) },
3910 },
3911 });
3912 try section.emit(gpa, .OpReturn, {});
3913 try section.emit(gpa, .OpFunctionEnd, {});
3914 try cg.module.append(gpa, section);
3915
3916 // Just generate a quick other name because the intel runtime crashes when the entry-
3917 // point name is the same as a different OpName.
3918 const test_name = try std.fmt.allocPrint(gpa, "test {s}", .{name});
3919 errdefer gpa.free(test_name);
3920 try cg.entry_points.append(gpa, .{
3921 .id = kernel_id,
3922 .name = test_name,
3923 .cc = .{ .spirv_kernel = .{ .x = 1, .y = 1, .z = 1 } },
3924 });
3925}
3926
3927fn intFromBool(cg: *CodeGen, value: Temporary, result_ty: Type) !Temporary {3780fn intFromBool(cg: *CodeGen, value: Temporary, result_ty: Type) !Temporary {
3928 const zero_id = try cg.constInt(result_ty, 0);3781 const zero_id = try cg.constInt(result_ty, 0);
3929 const one_id = try cg.constInt(result_ty, 1);3782 const one_id = try cg.constInt(result_ty, 1);
src/codegen/spirv/Section.zig+32
...@@ -14,6 +14,38 @@ ids: std.bit_set.Dynamic,...@@ -14,6 +14,38 @@ ids: std.bit_set.Dynamic,
1414
15pub const empty: Section = .{ .instructions = .empty, .ids = .{} };15pub const empty: Section = .{ .instructions = .empty, .ids = .{} };
1616
17pub const InstructionIterator = struct {
18 words: []const Word,
19 offset: usize = 0,
20
21 pub const Instruction = struct {
22 opcode: Opcode,
23 words: []const Word,
24 start: usize,
25 end: usize,
26 result_id: Id,
27 };
28
29 pub fn next(it: *InstructionIterator) ?Instruction {
30 if (it.offset >= it.words.len) return null;
31 const start = it.offset;
32 const header: InstructionHeader = @bitCast(it.words[start]);
33 const words = it.words[start..][0..header.word_count];
34 it.offset += words.len;
35 return .{
36 .opcode = header.opcode,
37 .words = words,
38 .start = start,
39 .end = it.offset,
40 .result_id = if (header.opcode.resultIndex()) |i| @fromBackingInt(words[i]) else .none,
41 };
42 }
43};
44
45pub fn iterate(section: *const Section) InstructionIterator {
46 return .{ .words = section.instructions.items };
47}
48
17pub const Error = error{49pub const Error = error{
18 OutOfMemory,50 OutOfMemory,
19 UnknownOpcode,51 UnknownOpcode,
src/link/Spirv.zig+2-1
...@@ -218,11 +218,12 @@ pub fn flush(...@@ -218,11 +218,12 @@ pub fn flush(
218 .linker = linker,218 .linker = linker,
219 .arena = arena,219 .arena = arena,
220 .id_bound = 1,220 .id_bound = 1,
221 .nonsemantic_info = false,
221 .navs = .empty,222 .navs = .empty,
222 .symbols = .empty,223 .symbols = .empty,
223 .interned = .empty,224 .interned = .empty,
224 .variables = .empty,225 .variables = .empty,
225 .function_references = .empty,226 .fn_refs = .empty,
226 .entry_points = .empty,227 .entry_points = .empty,
227 .deps = .empty,228 .deps = .empty,
228 .scratch = .empty,229 .scratch = .empty,
src/link/Spirv/Flush.zig+47-53
...@@ -18,11 +18,12 @@ const Flush = @This();...@@ -18,11 +18,12 @@ const Flush = @This();
18linker: *Linker,18linker: *Linker,
19arena: Allocator,19arena: Allocator,
20id_bound: Word,20id_bound: Word,
21nonsemantic_info: bool,
21navs: std.array_hash_map.Auto(InternPool.Nav.Index, Id),22navs: std.array_hash_map.Auto(InternPool.Nav.Index, Id),
22symbols: std.array_hash_map.String(Symbol),23symbols: std.array_hash_map.String(Symbol),
23interned: std.array_hash_map.String(Id),24interned: std.array_hash_map.String(Id),
24variables: std.array_hash_map.Auto(Id, spec.StorageClass),25variables: std.array_hash_map.Auto(Id, spec.StorageClass),
25function_references: std.array_hash_map.Auto(Id, []const Id),26fn_refs: std.array_hash_map.Auto(Id, []const Id),
26entry_points: std.ArrayList(Mir.EntryPoint),27entry_points: std.ArrayList(Mir.EntryPoint),
27deps: std.ArrayList(Id),28deps: std.ArrayList(Id),
28scratch: Section,29scratch: Section,
...@@ -35,7 +36,6 @@ decorations: Section,...@@ -35,7 +36,6 @@ decorations: Section,
35globals: Section,36globals: Section,
36declarations: Section,37declarations: Section,
37functions: Section,38functions: Section,
38nonsemantic_info: bool = false,
3939
40const Symbol = struct {40const Symbol = struct {
41 id: Id,41 id: Id,
...@@ -195,7 +195,6 @@ pub fn emitModule(flush: *Flush, out: *Section) link.Error!void {...@@ -195,7 +195,6 @@ pub fn emitModule(flush: *Flush, out: *Section) link.Error!void {
195 }) |feature| {195 }) |feature| {
196 if (target.cpu.has(.spirv, feature)) version.minor += 1;196 if (target.cpu.has(.spirv, feature)) version.minor += 1;
197 }197 }
198
199 const zig_packed_version = (zig_version.major << 12) | (zig_version.minor << 7) | zig_version.patch;198 const zig_packed_version = (zig_version.major << 12) | (zig_version.minor << 7) | zig_version.patch;
200 const header: spec.Header = .{199 const header: spec.Header = .{
201 .magic = spec.magic_number,200 .magic = spec.magic_number,
...@@ -204,6 +203,7 @@ pub fn emitModule(flush: *Flush, out: *Section) link.Error!void {...@@ -204,6 +203,7 @@ pub fn emitModule(flush: *Flush, out: *Section) link.Error!void {
204 .id_bound = flush.id_bound,203 .id_bound = flush.id_bound,
205 .schema = 0,204 .schema = 0,
206 };205 };
206
207 try out.writeWords(gpa, @ptrCast(@alignCast(&header)));207 try out.writeWords(gpa, @ptrCast(@alignCast(&header)));
208 try flush.emitCapabilities(out);208 try flush.emitCapabilities(out);
209 try out.writeWords(gpa, flush.extended_instruction_sets.instructions.items);209 try out.writeWords(gpa, flush.extended_instruction_sets.instructions.items);
...@@ -227,7 +227,6 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -227,7 +227,6 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
227 const arena = flush.arena;227 const arena = flush.arena;
228 const diags = &comp.link_diags;228 const diags = &comp.link_diags;
229 const target = &comp.root_mod.resolved_target.result;229 const target = &comp.root_mod.resolved_target.result;
230
231 const ids = try gpa.alloc(Id, mir.id_bound);230 const ids = try gpa.alloc(Id, mir.id_bound);
232 defer gpa.free(ids);231 defer gpa.free(ids);
233 ids[0] = .none;232 ids[0] = .none;
...@@ -258,19 +257,16 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -258,19 +257,16 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
258 try imports.put(gpa, @backingInt(ext.id), @intCast(gop.index));257 try imports.put(gpa, @backingInt(ext.id), @intCast(gop.index));
259 }258 }
260259
261 const words = mir.module.instructions.items;260 var it = mir.module.iterate();
262 var offset: usize = 0;261 while (it.next()) |inst| {
263 while (offset < words.len) {262 const opcode = inst.opcode;
264 const start = offset;263 const words = inst.words;
265 const header: spec.InstructionHeader = @bitCast(words[start]);264
266 const inst = words[start..][0..header.word_count];265 if (opcode == .OpDecorate) {
267 offset += inst.len;266 const target_id = words[1];
268267 const decoration: spec.Decoration = @fromBackingInt(words[2]);
269 if (header.opcode == .OpDecorate) {
270 const target_id = inst[1];
271 const decoration: spec.Decoration = @fromBackingInt(inst[2]);
272 if (decoration == .linkage_attributes) {268 if (decoration == .linkage_attributes) {
273 const parameters = inst[3..];269 const parameters = words[3..];
274 const name_words = parameters[0 .. parameters.len - 1];270 const name_words = parameters[0 .. parameters.len - 1];
275 const name = std.mem.sliceTo(std.mem.sliceAsBytes(name_words), 0);271 const name = std.mem.sliceTo(std.mem.sliceAsBytes(name_words), 0);
276 const linkage: spec.LinkageType = @fromBackingInt(parameters[parameters.len - 1]);272 const linkage: spec.LinkageType = @fromBackingInt(parameters[parameters.len - 1]);
...@@ -299,19 +295,19 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -299,19 +295,19 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
299 }295 }
300 }296 }
301297
302 const class = header.opcode.class();298 const class = opcode.class();
303 const target_id: Word = switch (header.opcode) {299 const target_id: Word = switch (opcode) {
304 .OpName, .OpMemberName => inst[1],300 .OpName, .OpMemberName => words[1],
305 .OpDecorationGroup, .OpGroupDecorate, .OpGroupMemberDecorate => {301 .OpDecorationGroup, .OpGroupDecorate, .OpGroupMemberDecorate => {
306 return diags.failParse(path.?, "decoration groups are not supported", .{});302 return diags.failParse(path.?, "decoration groups are not supported", .{});
307 },303 },
308 else => if (class == .annotation) inst[1] else continue,304 else => if (class == .annotation) words[1] else continue,
309 };305 };
310 try annotations.append(gpa, .{306 try annotations.append(gpa, .{
311 .target_id = target_id,307 .target_id = target_id,
312 .class = class,308 .class = class,
313 .start = start,309 .start = inst.start,
314 .end = offset,310 .end = inst.end,
315 });311 });
316 }312 }
317313
...@@ -336,19 +332,19 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -336,19 +332,19 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
336 }332 }
337 }333 }
338334
339 offset = 0;335 it = mir.module.iterate();
340 while (offset < words.len) {336 while (it.next()) |inst| {
341 const start = offset;337 const start = inst.start;
342 const header: spec.InstructionHeader = @bitCast(words[start]);338 var end = inst.end;
343 const inst = words[start..][0..header.word_count];339 const opcode = inst.opcode;
344 offset += inst.len;340 const words = inst.words;
345 input.mark += 1;341 input.mark += 1;
346 flush.deps.clearRetainingCapacity();342 flush.deps.clearRetainingCapacity();
347343
348 const result_index = header.opcode.resultIndex() orelse switch (header.opcode) {344 const result_index = opcode.resultIndex() orelse switch (opcode) {
349 .OpCapability => {345 .OpCapability => {
350 const capability = std.enums.fromInt(spec.Capability, inst[1]) orelse {346 const capability = std.enums.fromInt(spec.Capability, words[1]) orelse {
351 return diags.failParse(path.?, "unknown capability '{d}'", .{inst[1]});347 return diags.failParse(path.?, "unknown capability '{d}'", .{words[1]});
352 };348 };
353349
354 // TODO: this isn't a full validation. we probably have to automate this350 // TODO: this isn't a full validation. we probably have to automate this
...@@ -368,7 +364,7 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -368,7 +364,7 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
368 continue;364 continue;
369 },365 },
370 .OpExtension => {366 .OpExtension => {
371 const name = std.mem.sliceTo(std.mem.sliceAsBytes(inst[1..]), 0);367 const name = std.mem.sliceTo(std.mem.sliceAsBytes(words[1..]), 0);
372 if (std.mem.eql(u8, name, "SPV_KHR_non_semantic_info")) {368 if (std.mem.eql(u8, name, "SPV_KHR_non_semantic_info")) {
373 flush.nonsemantic_info = true;369 flush.nonsemantic_info = true;
374 continue;370 continue;
...@@ -388,34 +384,31 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -388,34 +384,31 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
388 continue;384 continue;
389 },385 },
390 .OpEntryPoint => {386 .OpEntryPoint => {
391 try input.copy(flush, &flush.object_entry_points, start, offset, null);387 try input.copy(flush, &flush.object_entry_points, start, end, null);
392 continue;388 continue;
393 },389 },
394 .OpExecutionMode, .OpExecutionModeId => {390 .OpExecutionMode, .OpExecutionModeId => {
395 try input.copy(flush, &flush.object_execution_modes, start, offset, null);391 try input.copy(flush, &flush.object_execution_modes, start, end, null);
396 continue;392 continue;
397 },393 },
398 .OpTypeForwardPointer => {394 .OpTypeForwardPointer => {
399 forward_pointers.set(inst[1]);395 forward_pointers.set(words[1]);
400 try input.copy(flush, &flush.globals, start, offset, null);396 try input.copy(flush, &flush.globals, start, end, null);
401 continue;397 continue;
402 },398 },
403 else => continue,399 else => continue,
404 };400 };
405401
406 const result_id = inst[result_index];402 const result_id = words[result_index];
407 result_ids.clearRetainingCapacity();403 result_ids.clearRetainingCapacity();
408 try result_ids.append(gpa, result_id);404 try result_ids.append(gpa, result_id);
409405
410 var has_body = false;406 var has_body = false;
411 if (header.opcode == .OpFunction) {407 if (opcode == .OpFunction) {
412 while (true) {408 while (it.next()) |body| {
413 const body: spec.InstructionHeader = @bitCast(words[offset]);409 end = body.end;
414 if (body.opcode == .OpLabel) has_body = true;410 if (body.opcode == .OpLabel) has_body = true;
415 if (body.opcode.resultIndex()) |index| {411 if (body.result_id != .none) try result_ids.append(gpa, @backingInt(body.result_id));
416 try result_ids.append(gpa, words[offset + index]);
417 }
418 offset += body.word_count;
419 if (body.opcode == .OpFunctionEnd) break;412 if (body.opcode == .OpFunctionEnd) break;
420 }413 }
421 }414 }
...@@ -424,18 +417,18 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -424,18 +417,18 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
424417
425 if (imports.get(result_id)) |symbol_index| {418 if (imports.get(result_id)) |symbol_index| {
426 flush.scratch.reset();419 flush.scratch.reset();
427 try input.copy(flush, &flush.scratch, start, offset, null);420 try input.copy(flush, &flush.scratch, start, end, null);
428 const declaration = try arena.dupe(Word, flush.scratch.instructions.items);421 const declaration = try arena.dupe(Word, flush.scratch.instructions.items);
429 flush.symbols.values()[symbol_index].declaration = declaration;422 flush.symbols.values()[symbol_index].declaration = declaration;
430 continue;423 continue;
431 }424 }
432425
433 switch (header.opcode) {426 switch (opcode) {
434 .OpFunction => if (!has_body) return diags.failParse(path.?, "function declaration without linkage", .{}),427 .OpFunction => if (!has_body) return diags.failParse(path.?, "function declaration without linkage", .{}),
435 .OpVariable => try flush.variables.put(arena, ids[result_id], @fromBackingInt(inst[3])),428 .OpVariable => try flush.variables.put(arena, ids[result_id], @fromBackingInt(words[3])),
436 else => if (!forward_pointers.isSet(result_id)) {429 else => if (!forward_pointers.isSet(result_id)) {
437 flush.scratch.reset();430 flush.scratch.reset();
438 try input.copy(flush, &flush.scratch, start, offset, start + result_index);431 try input.copy(flush, &flush.scratch, start, end, start + result_index);
439 for (grouped_indices[starts[result_id]..starts[result_id + 1]]) |index| {432 for (grouped_indices[starts[result_id]..starts[result_id + 1]]) |index| {
440 const annotation = annotations.items[index];433 const annotation = annotations.items[index];
441 if (annotation.class != .annotation) continue;434 if (annotation.class != .annotation) continue;
...@@ -466,16 +459,16 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {...@@ -466,16 +459,16 @@ fn load(flush: *Flush, mir: *const Mir, path: ?Path) link.Error!void {
466 }459 }
467 }460 }
468461
469 const section = switch (header.opcode) {462 const section = switch (opcode) {
470 .OpFunction => &flush.functions,463 .OpFunction => &flush.functions,
471 .OpExtInstImport => &flush.extended_instruction_sets,464 .OpExtInstImport => &flush.extended_instruction_sets,
472 .OpString => &flush.debug_strings,465 .OpString => &flush.debug_strings,
473 else => &flush.globals,466 else => &flush.globals,
474 };467 };
475 try input.copy(flush, section, start, offset, null);468 try input.copy(flush, section, start, end, null);
476 if (header.opcode == .OpFunction) {469 if (opcode == .OpFunction) {
477 const references = try arena.dupe(Id, flush.deps.items);470 const references = try arena.dupe(Id, flush.deps.items);
478 try flush.function_references.put(arena, ids[result_id], references);471 try flush.fn_refs.put(arena, ids[result_id], references);
479 }472 }
480 }473 }
481474
...@@ -532,6 +525,7 @@ fn emitCapabilities(flush: *Flush, out: *Section) link.Error!void {...@@ -532,6 +525,7 @@ fn emitCapabilities(flush: *Flush, out: *Section) link.Error!void {
532 if (!target.cpu.has(.spirv, feature)) continue;525 if (!target.cpu.has(.spirv, feature)) continue;
533 try out.emit(gpa, .OpExtension, .{ .name = name });526 try out.emit(gpa, .OpExtension, .{ .name = name });
534 }527 }
528
535 if (flush.nonsemantic_info) {529 if (flush.nonsemantic_info) {
536 try out.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_non_semantic_info" });530 try out.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_non_semantic_info" });
537 }531 }
...@@ -594,7 +588,7 @@ fn emitEntryPoints(flush: *Flush, out: *Section) link.Error!void {...@@ -594,7 +588,7 @@ fn emitEntryPoints(flush: *Flush, out: *Section) link.Error!void {
594 if (storage_class == .function) continue;588 if (storage_class == .function) continue;
595 if (!v1_4 and storage_class != .input and storage_class != .output) continue;589 if (!v1_4 and storage_class != .input and storage_class != .output) continue;
596 try interface.append(arena, id);590 try interface.append(arena, id);
597 } else if (flush.function_references.get(id)) |references| {591 } else if (flush.fn_refs.get(id)) |references| {
598 try pending.appendSlice(arena, references);592 try pending.appendSlice(arena, references);
599 }593 }
600 }594 }
src/main.zig+1-1
...@@ -3582,7 +3582,7 @@ fn buildOutputType(...@@ -3582,7 +3582,7 @@ fn buildOutputType(
3582 @import("codegen/llvm/bindings.zig").ParseCommandLineOptions(argv.len, &argv);3582 @import("codegen/llvm/bindings.zig").ParseCommandLineOptions(argv.len, &argv);
3583 }3583 }
35843584
3585 if (build_options.have_llvm and create_module.resolved_options.use_llvm and target.cpu.arch.isSpirV()) {3585 if (build_options.have_llvm and create_module.resolved_options.use_llvm and target.cpu.arch.isSpirv()) {
3586 // LLVM has no way to set this non-globally other3586 // LLVM has no way to set this non-globally other
3587 // than SPIRVTranslate() but it cannot emits assembly.3587 // than SPIRVTranslate() but it cannot emits assembly.
3588 var extensions: std.ArrayList(u8) = .empty;3588 var extensions: std.ArrayList(u8) = .empty;
src/target.zig+1-1
...@@ -310,7 +310,7 @@ pub fn hasNewLinker(ofmt: std.Target.ObjectFormat) bool {...@@ -310,7 +310,7 @@ pub fn hasNewLinker(ofmt: std.Target.ObjectFormat) bool {
310/// than or equal to the number of behavior tests as the respective LLVM backend.310/// than or equal to the number of behavior tests as the respective LLVM backend.
311pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool {311pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool {
312 if (comptime builtin.cpu.arch.endian() == .big) return false; // https://github.com/ziglang/zig/issues/25961312 if (comptime builtin.cpu.arch.endian() == .big) return false; // https://github.com/ziglang/zig/issues/25961
313 if (target.cpu.arch.isSpirV()) return true;313 if (target.cpu.arch.isSpirv()) return true;
314 if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) {314 if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) {
315 if (target.os.tag == .illumos) {315 if (target.os.tag == .illumos) {
316 // https://github.com/ziglang/zig/issues/25699316 // https://github.com/ziglang/zig/issues/25699
test/behavior.zig+5-5
...@@ -115,21 +115,21 @@ test {...@@ -115,21 +115,21 @@ test {
115 _ = @import("behavior/wasm.zig");115 _ = @import("behavior/wasm.zig");
116 }116 }
117117
118 if (builtin.zig_backend == .stage2_spirv) {118 if (builtin.cpu.arch.isSpirv()) {
119 _ = @import("behavior/spirv.zig");119 _ = @import("behavior/spirv.zig");
120 }120 }
121121
122 if (builtin.zig_backend != .stage2_spirv and builtin.os.tag != .wasi) {122 if (!builtin.cpu.arch.isSpirv() and builtin.os.tag != .wasi) {
123 _ = @import("behavior/asm.zig");123 _ = @import("behavior/asm.zig");
124 }124 }
125125
126 if (builtin.zig_backend != .stage2_arm and126 if (builtin.zig_backend != .stage2_arm and
127 builtin.zig_backend != .stage2_spirv)127 !builtin.cpu.arch.isSpirv())
128 {128 {
129 _ = @import("behavior/export_keyword.zig");129 _ = @import("behavior/export_keyword.zig");
130 }130 }
131131
132 if (builtin.zig_backend != .stage2_spirv and !builtin.cpu.arch.isWasm()) {132 if (!builtin.cpu.arch.isSpirv() and !builtin.cpu.arch.isWasm()) {
133 // Due to lack of import/export of global support133 // Due to lack of import/export of global support
134 // (https://github.com/ziglang/zig/issues/4866), these tests correctly134 // (https://github.com/ziglang/zig/issues/4866), these tests correctly
135 // cause linker errors, since a data symbol cannot be exported when135 // cause linker errors, since a data symbol cannot be exported when
...@@ -143,7 +143,7 @@ test {...@@ -143,7 +143,7 @@ test {
143// This bug only repros in the root file143// This bug only repros in the root file
144test "dereference @embedFile() of a file full of zero bytes" {144test "dereference @embedFile() of a file full of zero bytes" {
145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
147147
148 const contents = @embedFile("behavior/zero.bin").*;148 const contents = @embedFile("behavior/zero.bin").*;
149 try @import("std").testing.expect(contents.len == 456);149 try @import("std").testing.expect(contents.len == 456);
test/behavior/abs.zig+13-8
...@@ -4,6 +4,7 @@ const assert = std.debug.assert;...@@ -4,6 +4,7 @@ const assert = std.debug.assert;
4const expect = std.testing.expect;4const expect = std.testing.expect;
55
6test "@abs integers" {6test "@abs integers" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -49,6 +50,7 @@ fn testAbsIntegers() !void {...@@ -49,6 +50,7 @@ fn testAbsIntegers() !void {
49}50}
5051
51test "@abs signed C ABI integers" {52test "@abs signed C ABI integers" {
53 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -60,7 +62,7 @@ test "@abs signed C ABI integers" {...@@ -60,7 +62,7 @@ test "@abs signed C ABI integers" {
60 try testOne(c_short, c_ushort);62 try testOne(c_short, c_ushort);
61 try testOne(c_int, c_uint);63 try testOne(c_int, c_uint);
62 try testOne(c_long, c_ulong);64 try testOne(c_long, c_ulong);
63 if (!builtin.cpu.arch.isSpirV()) try testOne(c_longlong, c_ulonglong);65 if (!builtin.cpu.arch.isSpirv()) try testOne(c_longlong, c_ulonglong);
64 }66 }
65 fn testOne(comptime Signed: type, comptime Unsigned: type) !void {67 fn testOne(comptime Signed: type, comptime Unsigned: type) !void {
66 var negative_one: Signed = undefined;68 var negative_one: Signed = undefined;
...@@ -76,6 +78,7 @@ test "@abs signed C ABI integers" {...@@ -76,6 +78,7 @@ test "@abs signed C ABI integers" {
76}78}
7779
78test "@abs unsigned integers" {80test "@abs unsigned integers" {
81 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
79 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8184
...@@ -115,6 +118,7 @@ fn testAbsUnsignedIntegers() !void {...@@ -115,6 +118,7 @@ fn testAbsUnsignedIntegers() !void {
115}118}
116119
117test "@abs unsigned C ABI integers" {120test "@abs unsigned C ABI integers" {
121 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -125,7 +129,7 @@ test "@abs unsigned C ABI integers" {...@@ -125,7 +129,7 @@ test "@abs unsigned C ABI integers" {
125 try testOne(c_ushort);129 try testOne(c_ushort);
126 try testOne(c_uint);130 try testOne(c_uint);
127 try testOne(c_ulong);131 try testOne(c_ulong);
128 if (!builtin.cpu.arch.isSpirV()) try testOne(c_ulonglong);132 if (!builtin.cpu.arch.isSpirv()) try testOne(c_ulonglong);
129 }133 }
130 fn testOne(comptime Unsigned: type) !void {134 fn testOne(comptime Unsigned: type) !void {
131 var one: Unsigned = undefined;135 var one: Unsigned = undefined;
...@@ -141,6 +145,7 @@ test "@abs unsigned C ABI integers" {...@@ -141,6 +145,7 @@ test "@abs unsigned C ABI integers" {
141}145}
142146
143test "@abs big int <= 128 bits" {147test "@abs big int <= 128 bits" {
148 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO151 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -203,7 +208,7 @@ fn testAbsUnsignedBigInt() !void {...@@ -203,7 +208,7 @@ fn testAbsUnsignedBigInt() !void {
203test "@abs floats" {208test "@abs floats" {
204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe211 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
207212
208 try comptime testAbsFloats(f16);213 try comptime testAbsFloats(f16);
209 if (builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f16);214 if (builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f16);
...@@ -212,9 +217,9 @@ test "@abs floats" {...@@ -212,9 +217,9 @@ test "@abs floats" {
212 try comptime testAbsFloats(f64);217 try comptime testAbsFloats(f64);
213 try testAbsFloats(f64);218 try testAbsFloats(f64);
214 try comptime testAbsFloats(f80);219 try comptime testAbsFloats(f80);
215 if (builtin.zig_backend != .stage2_spirv and builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f80);220 if (!builtin.cpu.arch.isSpirv() and builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f80);
216 try comptime testAbsFloats(f128);221 try comptime testAbsFloats(f128);
217 if (builtin.zig_backend != .stage2_spirv and builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f128);222 if (!builtin.cpu.arch.isSpirv() and builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f128);
218}223}
219224
220fn testAbsFloats(comptime T: type) !void {225fn testAbsFloats(comptime T: type) !void {
...@@ -259,7 +264,7 @@ test "@abs int vectors" {...@@ -259,7 +264,7 @@ test "@abs int vectors" {
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;266 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
262 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;267 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
263268
264 try comptime testAbsIntVectors(1);269 try comptime testAbsIntVectors(1);
265 try testAbsIntVectors(1);270 try testAbsIntVectors(1);
...@@ -325,7 +330,7 @@ test "@abs unsigned int vectors" {...@@ -325,7 +330,7 @@ test "@abs unsigned int vectors" {
325 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
326 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;332 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
328 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;333 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
329334
330 try comptime testAbsUnsignedIntVectors(1);335 try comptime testAbsUnsignedIntVectors(1);
331 try testAbsUnsignedIntVectors(1);336 try testAbsUnsignedIntVectors(1);
...@@ -382,7 +387,7 @@ test "@abs float vectors" {...@@ -382,7 +387,7 @@ test "@abs float vectors" {
382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;387 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
385 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;390 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
386 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;391 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
387392
388 @setEvalBranchQuota(2000);393 @setEvalBranchQuota(2000);
test/behavior/addrspace_and_linksection.zig+3-3
...@@ -12,7 +12,7 @@ const var_linksection = linksections.?[1];...@@ -12,7 +12,7 @@ const var_linksection = linksections.?[1];
12const fn_linksection = linksections.?[2];12const fn_linksection = linksections.?[2];
1313
14test "addrspace on container-level const" {14test "addrspace on container-level const" {
15 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;15 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1616
17 const S = struct {17 const S = struct {
18 const a: u32 addrspace(.generic) = 123;18 const a: u32 addrspace(.generic) = 123;
...@@ -49,7 +49,7 @@ test "addrspace and linksection on container-level const" {...@@ -49,7 +49,7 @@ test "addrspace and linksection on container-level const" {
49}49}
5050
51test "addrspace on container-level var" {51test "addrspace on container-level var" {
52 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;52 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5353
54 const S = struct {54 const S = struct {
55 var a: u32 addrspace(.generic) = 123;55 var a: u32 addrspace(.generic) = 123;
...@@ -83,7 +83,7 @@ test "addrspace and linksection on container-level var" {...@@ -83,7 +83,7 @@ test "addrspace and linksection on container-level var" {
83}83}
8484
85test "addrspace on fn" {85test "addrspace on fn" {
86 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;86 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8787
88 const S = struct {88 const S = struct {
89 fn f() addrspace(.generic) u32 {89 fn f() addrspace(.generic) u32 {
test/behavior/align.zig+27-23
...@@ -7,7 +7,7 @@ const assert = std.debug.assert;...@@ -7,7 +7,7 @@ const assert = std.debug.assert;
7var foo: u8 align(4) = 100;7var foo: u8 align(4) = 100;
88
9test "global variable alignment" {9test "global variable alignment" {
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1111
12 comptime assert(@typeInfo(@TypeOf(&foo)).pointer.attrs.@"align" == 4);12 comptime assert(@typeInfo(@TypeOf(&foo)).pointer.attrs.@"align" == 4);
13 comptime assert(@TypeOf(&foo) == *align(4) u8);13 comptime assert(@TypeOf(&foo) == *align(4) u8);
...@@ -18,7 +18,7 @@ test "global variable alignment" {...@@ -18,7 +18,7 @@ test "global variable alignment" {
18}18}
1919
20test "large abi alignment of global" {20test "large abi alignment of global" {
21 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;21 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2222
23 const S = struct {23 const S = struct {
24 var global: @This() = undefined;24 var global: @This() = undefined;
...@@ -30,7 +30,7 @@ test "large abi alignment of global" {...@@ -30,7 +30,7 @@ test "large abi alignment of global" {
3030
31test "large alignment of local constant" {31test "large alignment of local constant" {
32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky33 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // flaky
34 if (builtin.zig_backend == .stage2_c and builtin.target.abi == .msvc) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_c and builtin.target.abi == .msvc) return error.SkipZigTest;
3535
36 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) {36 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) {
...@@ -44,7 +44,7 @@ test "large alignment of local constant" {...@@ -44,7 +44,7 @@ test "large alignment of local constant" {
4444
45test "slicing array of length 1 can not assume runtime index is always zero" {45test "slicing array of length 1 can not assume runtime index is always zero" {
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky47 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // flaky
4848
49 var runtime_index: usize = 1;49 var runtime_index: usize = 1;
50 _ = &runtime_index;50 _ = &runtime_index;
...@@ -55,7 +55,7 @@ test "slicing array of length 1 can not assume runtime index is always zero" {...@@ -55,7 +55,7 @@ test "slicing array of length 1 can not assume runtime index is always zero" {
55}55}
5656
57test "implicitly-aligned pointer is coercible to equivalent explicitly-aligned pointer" {57test "implicitly-aligned pointer is coercible to equivalent explicitly-aligned pointer" {
58 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;58 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5959
60 const A = *u32;60 const A = *u32;
61 const B = *align(@alignOf(u32)) u32;61 const B = *align(@alignOf(u32)) u32;
...@@ -89,6 +89,8 @@ test "implicitly-aligned pointer is coercible to equivalent explicitly-aligned p...@@ -89,6 +89,8 @@ test "implicitly-aligned pointer is coercible to equivalent explicitly-aligned p
89}89}
9090
91test "implicitly decreasing pointer alignment" {91test "implicitly decreasing pointer alignment" {
92 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
93
92 const a: u32 align(4) = 3;94 const a: u32 align(4) = 3;
93 const b: u32 align(8) = 4;95 const b: u32 align(8) = 4;
94 try expect(addUnaligned(&a, &b) == 7);96 try expect(addUnaligned(&a, &b) == 7);
...@@ -240,7 +242,7 @@ test "alignment and size of structs with 128-bit fields" {...@@ -240,7 +242,7 @@ test "alignment and size of structs with 128-bit fields" {
240242
241test "implicitly decreasing slice alignment" {243test "implicitly decreasing slice alignment" {
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;245 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
244 const a: u32 align(4) = 3;246 const a: u32 align(4) = 3;
245 const b: u32 align(8) = 4;247 const b: u32 align(8) = 4;
246 try expect(addUnalignedSlice(@as(*const [1]u32, &a)[0..], @as(*const [1]u32, &b)[0..]) == 7);248 try expect(addUnalignedSlice(@as(*const [1]u32, &a)[0..], @as(*const [1]u32, &b)[0..]) == 7);
...@@ -251,7 +253,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {...@@ -251,7 +253,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
251253
252test "specifying alignment allows pointer cast" {254test "specifying alignment allows pointer cast" {
253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
254 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;256 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
255257
256 try testBytesAlign(0x33);258 try testBytesAlign(0x33);
257}259}
...@@ -264,7 +266,7 @@ fn testBytesAlign(b: u8) !void {...@@ -264,7 +266,7 @@ fn testBytesAlign(b: u8) !void {
264test "@alignCast slices" {266test "@alignCast slices" {
265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;267 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;269 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
268270
269 var array align(4) = [_]u32{ 1, 1 };271 var array align(4) = [_]u32{ 1, 1 };
270 const slice = array[0..];272 const slice = array[0..];
...@@ -279,6 +281,7 @@ fn sliceExpects4(slice: []align(4) u32) void {...@@ -279,6 +281,7 @@ fn sliceExpects4(slice: []align(4) u32) void {
279}281}
280282
281test "return error union with 128-bit integer" {283test "return error union with 128-bit integer" {
284 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
282 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO285 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;286 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -292,7 +295,7 @@ test "page aligned array on stack" {...@@ -292,7 +295,7 @@ test "page aligned array on stack" {
292 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO295 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;298 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
296 // Large alignment value to make it hard to accidentally pass.299 // Large alignment value to make it hard to accidentally pass.
297 var array align(0x1000) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };300 var array align(0x1000) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
298 var number1: u8 align(16) = 42;301 var number1: u8 align(16) = 42;
...@@ -310,7 +313,7 @@ test "page aligned array on stack" {...@@ -310,7 +313,7 @@ test "page aligned array on stack" {
310test "function alignment" {313test "function alignment" {
311 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO315 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;316 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
314317
315 // function alignment is a compile error on wasm318 // function alignment is a compile error on wasm
316 if (native_arch.isWasm()) return error.SkipZigTest;319 if (native_arch.isWasm()) return error.SkipZigTest;
...@@ -339,7 +342,7 @@ test "function alignment" {...@@ -339,7 +342,7 @@ test "function alignment" {
339test "implicitly decreasing fn alignment" {342test "implicitly decreasing fn alignment" {
340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;345 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
343346
344 // function alignment is a compile error on wasm347 // function alignment is a compile error on wasm
345 if (native_arch.isWasm()) return error.SkipZigTest;348 if (native_arch.isWasm()) return error.SkipZigTest;
...@@ -362,7 +365,7 @@ fn alignedBig() align(16) i32 {...@@ -362,7 +365,7 @@ fn alignedBig() align(16) i32 {
362test "@alignCast functions" {365test "@alignCast functions" {
363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;368 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
366369
367 // function alignment is a compile error on wasm370 // function alignment is a compile error on wasm
368 if (native_arch.isWasm()) return error.SkipZigTest;371 if (native_arch.isWasm()) return error.SkipZigTest;
...@@ -381,7 +384,7 @@ fn simple4() align(4) i32 {...@@ -381,7 +384,7 @@ fn simple4() align(4) i32 {
381384
382test "runtime-known array index has best alignment possible" {385test "runtime-known array index has best alignment possible" {
383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
384 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;387 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
385388
386 // take full advantage of over-alignment389 // take full advantage of over-alignment
387 var array align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };390 var array align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
...@@ -430,7 +433,7 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {...@@ -430,7 +433,7 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {
430}433}
431434
432test "alignment of function with c calling convention" {435test "alignment of function with c calling convention" {
433 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;436 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
434437
435 const a = @alignOf(@TypeOf(nothing));438 const a = @alignOf(@TypeOf(nothing));
436439
...@@ -449,6 +452,7 @@ const DefaultAligned = struct {...@@ -449,6 +452,7 @@ const DefaultAligned = struct {
449};452};
450453
451test "read 128-bit field from default aligned struct in stack memory" {454test "read 128-bit field from default aligned struct in stack memory" {
455 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
452 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO456 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
453 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;457 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO458 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -467,7 +471,7 @@ var default_aligned_global = DefaultAligned{...@@ -467,7 +471,7 @@ var default_aligned_global = DefaultAligned{
467};471};
468472
469test "read 128-bit field from default aligned struct in global memory" {473test "read 128-bit field from default aligned struct in global memory" {
470 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;474 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
471 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO475 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
472 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -478,7 +482,7 @@ test "read 128-bit field from default aligned struct in global memory" {...@@ -478,7 +482,7 @@ test "read 128-bit field from default aligned struct in global memory" {
478test "struct field explicit alignment" {482test "struct field explicit alignment" {
479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
481 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky485 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // flaky
482 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
483487
484 const S = struct {488 const S = struct {
...@@ -498,7 +502,7 @@ test "struct field explicit alignment" {...@@ -498,7 +502,7 @@ test "struct field explicit alignment" {
498test "align(N) on functions" {502test "align(N) on functions" {
499 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;505 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
502506
503 if (builtin.zig_backend == .stage2_c) {507 if (builtin.zig_backend == .stage2_c) {
504 // https://github.com/ziglang/zig/issues/16845508 // https://github.com/ziglang/zig/issues/16845
...@@ -536,7 +540,7 @@ test "comptime alloc alignment" {...@@ -536,7 +540,7 @@ test "comptime alloc alignment" {
536540
537test "@alignCast null" {541test "@alignCast null" {
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;543 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
540544
541 var ptr: ?*anyopaque = null;545 var ptr: ?*anyopaque = null;
542 _ = &ptr;546 _ = &ptr;
...@@ -552,7 +556,7 @@ test "alignment of slice element" {...@@ -552,7 +556,7 @@ test "alignment of slice element" {
552test "sub-aligned pointer field access" {556test "sub-aligned pointer field access" {
553 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;557 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;558 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
555 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;559 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
556560
557 // Originally reported at https://github.com/ziglang/zig/issues/14904561 // Originally reported at https://github.com/ziglang/zig/issues/14904
558562
...@@ -570,7 +574,7 @@ test "sub-aligned pointer field access" {...@@ -570,7 +574,7 @@ test "sub-aligned pointer field access" {
570}574}
571575
572test "alignment of zero-bit types is respected" {576test "alignment of zero-bit types is respected" {
573 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;577 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
574 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
575579
576 const S = struct { arr: [0]usize = .{} };580 const S = struct { arr: [0]usize = .{} };
...@@ -602,7 +606,7 @@ test "zero-bit fields in extern struct pad fields appropriately" {...@@ -602,7 +606,7 @@ test "zero-bit fields in extern struct pad fields appropriately" {
602 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO606 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
603 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
605 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;609 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
606610
607 const S = extern struct {611 const S = extern struct {
608 x: u8,612 x: u8,
...@@ -626,7 +630,7 @@ test "zero-bit fields in extern struct pad fields appropriately" {...@@ -626,7 +630,7 @@ test "zero-bit fields in extern struct pad fields appropriately" {
626}630}
627631
628test "function pointer @intFromPtr/@ptrFromInt roundtrip" {632test "function pointer @intFromPtr/@ptrFromInt roundtrip" {
629 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;633 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
630634
631 // This only succeeds on Thumb if we handle the Thumb bit correctly; if not, the `@ptrFromInt`635 // This only succeeds on Thumb if we handle the Thumb bit correctly; if not, the `@ptrFromInt`
632 // will incorrectly trip an alignment safety check.636 // will incorrectly trip an alignment safety check.
...@@ -646,7 +650,7 @@ test "function pointer align mask" {...@@ -646,7 +650,7 @@ test "function pointer align mask" {
646}650}
647651
648test "align expression is implicitly comptime" {652test "align expression is implicitly comptime" {
649 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;653 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
650654
651 const S = struct {655 const S = struct {
652 fn alignment() usize {656 fn alignment() usize {
test/behavior/alignof.zig+2-1
...@@ -19,6 +19,7 @@ test "@alignOf(T) before referencing T" {...@@ -19,6 +19,7 @@ test "@alignOf(T) before referencing T" {
19}19}
2020
21test "comparison of @alignOf(T) against zero" {21test "comparison of @alignOf(T) against zero" {
22 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
22 const T = struct { x: u32 };23 const T = struct { x: u32 };
23 try expect(!(@alignOf(T) == 0));24 try expect(!(@alignOf(T) == 0));
24 try expect(@alignOf(T) != 0);25 try expect(@alignOf(T) != 0);
...@@ -29,7 +30,7 @@ test "comparison of @alignOf(T) against zero" {...@@ -29,7 +30,7 @@ test "comparison of @alignOf(T) against zero" {
29}30}
3031
31test "correct alignment for elements and slices of aligned array" {32test "correct alignment for elements and slices of aligned array" {
32 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;33 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3334
34 var buf: [1024]u8 align(64) = undefined;35 var buf: [1024]u8 align(64) = undefined;
35 var start: usize = 1;36 var start: usize = 1;
test/behavior/array.zig+52-36
...@@ -7,7 +7,7 @@ const expect = testing.expect;...@@ -7,7 +7,7 @@ const expect = testing.expect;
7const expectEqual = testing.expectEqual;7const expectEqual = testing.expectEqual;
88
9test "array to slice" {9test "array to slice" {
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1111
12 const a: u32 align(4) = 3;12 const a: u32 align(4) = 3;
13 const b: u32 align(8) = 4;13 const b: u32 align(8) = 4;
...@@ -21,7 +21,7 @@ test "array to slice" {...@@ -21,7 +21,7 @@ test "array to slice" {
21}21}
2222
23test "arrays" {23test "arrays" {
24 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;24 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2727
...@@ -51,7 +51,7 @@ fn getArrayLen(a: []const u32) usize {...@@ -51,7 +51,7 @@ fn getArrayLen(a: []const u32) usize {
51test "runtime array concat with comptime slice" {51test "runtime array concat with comptime slice" {
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;54 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
55 var a: [1]u8 = .{1};55 var a: [1]u8 = .{1};
56 const b = (comptime @as([]const u8, &.{0})) ++ &a;56 const b = (comptime @as([]const u8, &.{0})) ++ &a;
57 const c = &a ++ (comptime @as([]const u8, &.{0}));57 const c = &a ++ (comptime @as([]const u8, &.{0}));
...@@ -61,7 +61,7 @@ test "runtime array concat with comptime slice" {...@@ -61,7 +61,7 @@ test "runtime array concat with comptime slice" {
6161
62test "array concat with undefined" {62test "array concat with undefined" {
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;64 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6565
66 const S = struct {66 const S = struct {
67 fn doTheTest() !void {67 fn doTheTest() !void {
...@@ -83,7 +83,7 @@ test "array concat with undefined" {...@@ -83,7 +83,7 @@ test "array concat with undefined" {
83}83}
8484
85test "array concat with tuple" {85test "array concat with tuple" {
86 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;86 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8989
...@@ -99,7 +99,7 @@ test "array concat with tuple" {...@@ -99,7 +99,7 @@ test "array concat with tuple" {
99}99}
100100
101test "array concat with undefined tuple" {101test "array concat with undefined tuple" {
102 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;102 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
103103
104 {104 {
105 const array: [2]u64 = .{ 1, 2 };105 const array: [2]u64 = .{ 1, 2 };
...@@ -117,7 +117,7 @@ test "array concat with undefined tuple" {...@@ -117,7 +117,7 @@ test "array concat with undefined tuple" {
117}117}
118118
119test "array init with concat" {119test "array init with concat" {
120 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;120 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
121121
122 const a = 'a';122 const a = 'a';
123 var i: [4]u8 = [2]u8{ a, 'b' } ++ [2]u8{ 'c', 'd' };123 var i: [4]u8 = [2]u8{ a, 'b' } ++ [2]u8{ 'c', 'd' };
...@@ -152,6 +152,7 @@ const ArrayDotLenConstExpr = struct {...@@ -152,6 +152,7 @@ const ArrayDotLenConstExpr = struct {
152const some_array = [_]u8{ 0, 1, 2, 3 };152const some_array = [_]u8{ 0, 1, 2, 3 };
153153
154test "array literal with specified size" {154test "array literal with specified size" {
155 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157158
...@@ -162,6 +163,7 @@ test "array literal with specified size" {...@@ -162,6 +163,7 @@ test "array literal with specified size" {
162}163}
163164
164test "array len field" {165test "array len field" {
166 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166168
167 var arr = [4]u8{ 0, 0, 0, 0 };169 var arr = [4]u8{ 0, 0, 0, 0 };
...@@ -174,7 +176,7 @@ test "array len field" {...@@ -174,7 +176,7 @@ test "array len field" {
174}176}
175177
176test "array with sentinels" {178test "array with sentinels" {
177 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;179 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179181
180 const S = struct {182 const S = struct {
...@@ -211,7 +213,7 @@ test "void arrays" {...@@ -211,7 +213,7 @@ test "void arrays" {
211}213}
212214
213test "nested arrays of strings" {215test "nested arrays of strings" {
214 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;216 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217219
...@@ -226,6 +228,7 @@ test "nested arrays of strings" {...@@ -226,6 +228,7 @@ test "nested arrays of strings" {
226}228}
227229
228test "nested arrays of integers" {230test "nested arrays of integers" {
231 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
230233
231 const array_of_numbers = [_][2]u8{234 const array_of_numbers = [_][2]u8{
...@@ -240,6 +243,7 @@ test "nested arrays of integers" {...@@ -240,6 +243,7 @@ test "nested arrays of integers" {
240}243}
241244
242test "implicit comptime in array type size" {245test "implicit comptime in array type size" {
246 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
244248
245 var arr: [plusOne(10)]bool = undefined;249 var arr: [plusOne(10)]bool = undefined;
...@@ -253,7 +257,7 @@ fn plusOne(x: u32) u32 {...@@ -253,7 +257,7 @@ fn plusOne(x: u32) u32 {
253257
254test "single-item pointer to array indexing and slicing" {258test "single-item pointer to array indexing and slicing" {
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;260 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
257261
258 try testSingleItemPtrArrayIndexSlice();262 try testSingleItemPtrArrayIndexSlice();
259 try comptime testSingleItemPtrArrayIndexSlice();263 try comptime testSingleItemPtrArrayIndexSlice();
...@@ -279,7 +283,7 @@ fn doSomeMangling(array: *[4]u8) void {...@@ -279,7 +283,7 @@ fn doSomeMangling(array: *[4]u8) void {
279283
280test "implicit cast zero sized array ptr to slice" {284test "implicit cast zero sized array ptr to slice" {
281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
282 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;286 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
283287
284 {288 {
285 var b = "".*;289 var b = "".*;
...@@ -294,6 +298,7 @@ test "implicit cast zero sized array ptr to slice" {...@@ -294,6 +298,7 @@ test "implicit cast zero sized array ptr to slice" {
294}298}
295299
296test "anonymous list literal syntax" {300test "anonymous list literal syntax" {
301 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
297 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
299304
...@@ -315,7 +320,7 @@ var s_array: [8]Sub = undefined;...@@ -315,7 +320,7 @@ var s_array: [8]Sub = undefined;
315const Sub = struct { b: u8 };320const Sub = struct { b: u8 };
316const Str = struct { a: []Sub };321const Str = struct { a: []Sub };
317test "set global var array via slice embedded in struct" {322test "set global var array via slice embedded in struct" {
318 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;323 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
320325
321 var s = Str{ .a = s_array[0..] };326 var s = Str{ .a = s_array[0..] };
...@@ -330,7 +335,7 @@ test "set global var array via slice embedded in struct" {...@@ -330,7 +335,7 @@ test "set global var array via slice embedded in struct" {
330}335}
331336
332test "implicit cast single-item pointer" {337test "implicit cast single-item pointer" {
333 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;338 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO339 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335340
336 try testImplicitCastSingleItemPtr();341 try testImplicitCastSingleItemPtr();
...@@ -359,7 +364,7 @@ test "comptime evaluating function that takes array by value" {...@@ -359,7 +364,7 @@ test "comptime evaluating function that takes array by value" {
359}364}
360365
361test "runtime initialize array elem and then implicit cast to slice" {366test "runtime initialize array elem and then implicit cast to slice" {
362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;367 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
364369
365 var two: i32 = 2;370 var two: i32 = 2;
...@@ -369,7 +374,7 @@ test "runtime initialize array elem and then implicit cast to slice" {...@@ -369,7 +374,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
369}374}
370375
371test "array literal as argument to function" {376test "array literal as argument to function" {
372 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;377 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO378 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
374379
375 const S = struct {380 const S = struct {
...@@ -396,7 +401,7 @@ test "array literal as argument to function" {...@@ -396,7 +401,7 @@ test "array literal as argument to function" {
396}401}
397402
398test "double nested array to const slice cast in array literal" {403test "double nested array to const slice cast in array literal" {
399 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;404 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
402407
...@@ -457,6 +462,7 @@ test "double nested array to const slice cast in array literal" {...@@ -457,6 +462,7 @@ test "double nested array to const slice cast in array literal" {
457}462}
458463
459test "anonymous literal in array" {464test "anonymous literal in array" {
465 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO466 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO467 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
462468
...@@ -482,6 +488,7 @@ test "anonymous literal in array" {...@@ -482,6 +488,7 @@ test "anonymous literal in array" {
482}488}
483489
484test "access the null element of a null terminated array" {490test "access the null element of a null terminated array" {
491 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
485 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
486493
487 const S = struct {494 const S = struct {
...@@ -499,6 +506,7 @@ test "access the null element of a null terminated array" {...@@ -499,6 +506,7 @@ test "access the null element of a null terminated array" {
499}506}
500507
501test "type deduction for array subscript expression" {508test "type deduction for array subscript expression" {
509 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
502 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
504512
...@@ -517,7 +525,7 @@ test "type deduction for array subscript expression" {...@@ -517,7 +525,7 @@ test "type deduction for array subscript expression" {
517}525}
518526
519test "sentinel element count towards the ABI size calculation" {527test "sentinel element count towards the ABI size calculation" {
520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;528 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
521 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO530 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
523531
...@@ -542,7 +550,7 @@ test "sentinel element count towards the ABI size calculation" {...@@ -542,7 +550,7 @@ test "sentinel element count towards the ABI size calculation" {
542550
543test "type coercion of anon struct literal to array" {551test "type coercion of anon struct literal to array" {
544 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;552 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
545 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;553 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
546 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
547 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
548556
...@@ -582,7 +590,7 @@ test "array with comptime-only element type" {...@@ -582,7 +590,7 @@ test "array with comptime-only element type" {
582}590}
583591
584test "tuple to array handles sentinel" {592test "tuple to array handles sentinel" {
585 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;593 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
586 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
588596
...@@ -612,7 +620,7 @@ test "array-like to array handles sentinel" {...@@ -612,7 +620,7 @@ test "array-like to array handles sentinel" {
612}620}
613621
614test "array init of container level array variable" {622test "array init of container level array variable" {
615 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;623 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618626
...@@ -635,7 +643,7 @@ test "array init of container level array variable" {...@@ -635,7 +643,7 @@ test "array init of container level array variable" {
635}643}
636644
637test "runtime initialized sentinel-terminated array literal" {645test "runtime initialized sentinel-terminated array literal" {
638 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;646 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
639647
640 var c: u16 = 300;648 var c: u16 = 300;
641 _ = &c;649 _ = &c;
...@@ -646,6 +654,7 @@ test "runtime initialized sentinel-terminated array literal" {...@@ -646,6 +654,7 @@ test "runtime initialized sentinel-terminated array literal" {
646}654}
647655
648test "array of array agregate init" {656test "array of array agregate init" {
657 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
649 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO658 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
650 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO659 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
651660
...@@ -656,7 +665,7 @@ test "array of array agregate init" {...@@ -656,7 +665,7 @@ test "array of array agregate init" {
656}665}
657666
658test "pointer to array has ptr field" {667test "pointer to array has ptr field" {
659 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;668 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
660669
661 const S = struct {670 const S = struct {
662 fn doTheTest(p: *const [5]u32) !void {671 fn doTheTest(p: *const [5]u32) !void {
...@@ -692,6 +701,7 @@ test "discarded array init preserves result location" {...@@ -692,6 +701,7 @@ test "discarded array init preserves result location" {
692}701}
693702
694test "array init with no result location has result type" {703test "array init with no result location has result type" {
704 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
695 const x = .{ .foo = [2]u16{705 const x = .{ .foo = [2]u16{
696 @intCast(10),706 @intCast(10),
697 @intCast(20),707 @intCast(20),
...@@ -705,7 +715,7 @@ test "array init with no result location has result type" {...@@ -705,7 +715,7 @@ test "array init with no result location has result type" {
705test "slicing array of zero-sized values" {715test "slicing array of zero-sized values" {
706 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
707 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
708 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;718 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
709719
710 var arr: [32]u0 = undefined;720 var arr: [32]u0 = undefined;
711 for (arr[0..]) |*zero|721 for (arr[0..]) |*zero|
...@@ -715,6 +725,7 @@ test "slicing array of zero-sized values" {...@@ -715,6 +725,7 @@ test "slicing array of zero-sized values" {
715}725}
716726
717test "array init with no result pointer sets field result types" {727test "array init with no result pointer sets field result types" {
728 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
718 const S = struct {729 const S = struct {
719 // A function parameter has a result type, but no result pointer.730 // A function parameter has a result type, but no result pointer.
720 fn f(arr: [1]u32) u32 {731 fn f(arr: [1]u32) u32 {
...@@ -729,7 +740,7 @@ test "array init with no result pointer sets field result types" {...@@ -729,7 +740,7 @@ test "array init with no result pointer sets field result types" {
729}740}
730741
731test "runtime side-effects in comptime-known array init" {742test "runtime side-effects in comptime-known array init" {
732 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;743 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
733744
734 var side_effects: u4 = 0;745 var side_effects: u4 = 0;
735 const init = [4]u4{746 const init = [4]u4{
...@@ -755,7 +766,7 @@ test "runtime side-effects in comptime-known array init" {...@@ -755,7 +766,7 @@ test "runtime side-effects in comptime-known array init" {
755}766}
756767
757test "slice initialized through reference to anonymous array init provides result types" {768test "slice initialized through reference to anonymous array init provides result types" {
758 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;769 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
759770
760 var my_u32: u32 = 123;771 var my_u32: u32 = 123;
761 var my_u64: u64 = 456;772 var my_u64: u64 = 456;
...@@ -770,7 +781,7 @@ test "slice initialized through reference to anonymous array init provides resul...@@ -770,7 +781,7 @@ test "slice initialized through reference to anonymous array init provides resul
770}781}
771782
772test "sentinel-terminated slice initialized through reference to anonymous array init provides result types" {783test "sentinel-terminated slice initialized through reference to anonymous array init provides result types" {
773 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;784 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
774785
775 var my_u32: u32 = 123;786 var my_u32: u32 = 123;
776 var my_u64: u64 = 456;787 var my_u64: u64 = 456;
...@@ -785,7 +796,7 @@ test "sentinel-terminated slice initialized through reference to anonymous array...@@ -785,7 +796,7 @@ test "sentinel-terminated slice initialized through reference to anonymous array
785}796}
786797
787test "many-item pointer initialized through reference to anonymous array init provides result types" {798test "many-item pointer initialized through reference to anonymous array init provides result types" {
788 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;799 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
789 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;800 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
790801
791 var my_u32: u32 = 123;802 var my_u32: u32 = 123;
...@@ -804,7 +815,7 @@ test "many-item pointer initialized through reference to anonymous array init pr...@@ -804,7 +815,7 @@ test "many-item pointer initialized through reference to anonymous array init pr
804}815}
805816
806test "many-item sentinel-terminated pointer initialized through reference to anonymous array init provides result types" {817test "many-item sentinel-terminated pointer initialized through reference to anonymous array init provides result types" {
807 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;818 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
808 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;819 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
809820
810 var my_u32: u32 = 123;821 var my_u32: u32 = 123;
...@@ -824,7 +835,7 @@ test "many-item sentinel-terminated pointer initialized through reference to ano...@@ -824,7 +835,7 @@ test "many-item sentinel-terminated pointer initialized through reference to ano
824}835}
825836
826test "pointer to array initialized through reference to anonymous array init provides result types" {837test "pointer to array initialized through reference to anonymous array init provides result types" {
827 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;838 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
828839
829 var my_u32: u32 = 123;840 var my_u32: u32 = 123;
830 var my_u64: u64 = 456;841 var my_u64: u64 = 456;
...@@ -839,7 +850,7 @@ test "pointer to array initialized through reference to anonymous array init pro...@@ -839,7 +850,7 @@ test "pointer to array initialized through reference to anonymous array init pro
839}850}
840851
841test "pointer to sentinel-terminated array initialized through reference to anonymous array init provides result types" {852test "pointer to sentinel-terminated array initialized through reference to anonymous array init provides result types" {
842 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;853 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
843854
844 var my_u32: u32 = 123;855 var my_u32: u32 = 123;
845 var my_u64: u64 = 456;856 var my_u64: u64 = 456;
...@@ -854,6 +865,7 @@ test "pointer to sentinel-terminated array initialized through reference to anon...@@ -854,6 +865,7 @@ test "pointer to sentinel-terminated array initialized through reference to anon
854}865}
855866
856test "tuple initialized through reference to anonymous array init provides result types" {867test "tuple initialized through reference to anonymous array init provides result types" {
868 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
857 const Tuple = struct { u64, *const u32 };869 const Tuple = struct { u64, *const u32 };
858 const foo: *const Tuple = &.{870 const foo: *const Tuple = &.{
859 @intCast(12345),871 @intCast(12345),
...@@ -864,6 +876,7 @@ test "tuple initialized through reference to anonymous array init provides resul...@@ -864,6 +876,7 @@ test "tuple initialized through reference to anonymous array init provides resul
864}876}
865877
866test "copied array element doesn't alias source" {878test "copied array element doesn't alias source" {
879 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
867 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO880 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
868 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO881 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
869882
...@@ -878,7 +891,7 @@ test "copied array element doesn't alias source" {...@@ -878,7 +891,7 @@ test "copied array element doesn't alias source" {
878891
879test "array initialized with string literal" {892test "array initialized with string literal" {
880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO893 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
881 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;894 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
882895
883 const S = struct {896 const S = struct {
884 a: u32,897 a: u32,
...@@ -898,7 +911,7 @@ test "array initialized with string literal" {...@@ -898,7 +911,7 @@ test "array initialized with string literal" {
898}911}
899912
900test "array initialized with array with sentinel" {913test "array initialized with array with sentinel" {
901 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;914 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
902 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO915 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
903916
904 const S = struct {917 const S = struct {
...@@ -919,6 +932,7 @@ test "array initialized with array with sentinel" {...@@ -919,6 +932,7 @@ test "array initialized with array with sentinel" {
919}932}
920933
921test "store array of array of structs at comptime" {934test "store array of array of structs at comptime" {
935 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
922 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
923 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO937 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
924938
...@@ -944,7 +958,7 @@ test "store array of array of structs at comptime" {...@@ -944,7 +958,7 @@ test "store array of array of structs at comptime" {
944958
945test "accessing multidimensional global array at comptime" {959test "accessing multidimensional global array at comptime" {
946 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO960 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
947 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;961 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
948962
949 const S = struct {963 const S = struct {
950 const array = [_][]const []const u8{964 const array = [_][]const []const u8{
...@@ -958,6 +972,7 @@ test "accessing multidimensional global array at comptime" {...@@ -958,6 +972,7 @@ test "accessing multidimensional global array at comptime" {
958}972}
959973
960test "union that needs padding bytes inside an array" {974test "union that needs padding bytes inside an array" {
975 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
961 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;976 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
962 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;977 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
963 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO978 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -981,7 +996,7 @@ test "union that needs padding bytes inside an array" {...@@ -981,7 +996,7 @@ test "union that needs padding bytes inside an array" {
981}996}
982997
983test "runtime index of array of zero-bit values" {998test "runtime index of array of zero-bit values" {
984 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;999 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9851000
986 var runtime: struct { array: [1]void, index: usize } = undefined;1001 var runtime: struct { array: [1]void, index: usize } = undefined;
987 runtime = .{ .array = .{{}}, .index = 0 };1002 runtime = .{ .array = .{{}}, .index = 0 };
...@@ -1035,7 +1050,7 @@ test "initialize pointer to anyopaque with reference to empty array initializer"...@@ -1035,7 +1050,7 @@ test "initialize pointer to anyopaque with reference to empty array initializer"
1035}1050}
10361051
1037test "sentinel of runtime-known array initialization is populated" {1052test "sentinel of runtime-known array initialization is populated" {
1038 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1053 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10391054
1040 var rt: u32 = undefined;1055 var rt: u32 = undefined;
1041 rt = 42;1056 rt = 42;
...@@ -1048,6 +1063,7 @@ test "sentinel of runtime-known array initialization is populated" {...@@ -1048,6 +1063,7 @@ test "sentinel of runtime-known array initialization is populated" {
1048}1063}
10491064
1050test "resist alias of explicit copy of array passed as arg" {1065test "resist alias of explicit copy of array passed as arg" {
1066 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1051 const S = struct {1067 const S = struct {
1052 const Thing = [1]u32;1068 const Thing = [1]u32;
10531069
...@@ -1069,7 +1085,7 @@ test "resist alias of explicit copy of array passed as arg" {...@@ -1069,7 +1085,7 @@ test "resist alias of explicit copy of array passed as arg" {
1069}1085}
10701086
1071test "access element through reference" {1087test "access element through reference" {
1072 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1088 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10731089
1074 const S = struct {1090 const S = struct {
1075 fn doTheTest(x: u8) !void {1091 fn doTheTest(x: u8) !void {
test/behavior/asm.zig+3-3
...@@ -18,7 +18,7 @@ comptime {...@@ -18,7 +18,7 @@ comptime {
18 \\.type this_is_my_alias, @function;18 \\.type this_is_my_alias, @function;
19 \\.set this_is_my_alias, derp;19 \\.set this_is_my_alias, derp;
20 );20 );
21 } else if (builtin.zig_backend == .stage2_spirv) {21 } else if (builtin.cpu.arch.isSpirv()) {
22 asm (22 asm (
23 \\%a = OpString "hello there"23 \\%a = OpString "hello there"
24 );24 );
...@@ -43,7 +43,7 @@ test "output constraint modifiers" {...@@ -43,7 +43,7 @@ test "output constraint modifiers" {
43 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;46 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
47 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4848
49 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly49 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
...@@ -65,7 +65,7 @@ test "alternative constraints" {...@@ -65,7 +65,7 @@ test "alternative constraints" {
65 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;68 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7070
71 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly71 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support inline assembly
test/behavior/atomics.zig+11-11
...@@ -14,7 +14,7 @@ test "cmpxchg" {...@@ -14,7 +14,7 @@ test "cmpxchg" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;17 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1818
19 try testCmpxchg();19 try testCmpxchg();
20 try comptime testCmpxchg();20 try comptime testCmpxchg();
...@@ -41,7 +41,7 @@ test "atomicrmw and atomicload" {...@@ -41,7 +41,7 @@ test "atomicrmw and atomicload" {
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;44 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;45 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4646
47 var data: u8 = 200;47 var data: u8 = 200;
...@@ -70,7 +70,7 @@ test "cmpxchg with ptr" {...@@ -70,7 +70,7 @@ test "cmpxchg with ptr" {
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;73 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7575
76 var data1: i32 = 1234;76 var data1: i32 = 1234;
...@@ -96,7 +96,7 @@ test "cmpxchg with ignored result" {...@@ -96,7 +96,7 @@ test "cmpxchg with ignored result" {
96 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;96 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;99 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
100100
101 var x: i32 = 1234;101 var x: i32 = 1234;
102102
...@@ -141,7 +141,7 @@ test "cmpxchg on a global variable" {...@@ -141,7 +141,7 @@ test "cmpxchg on a global variable" {
141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;144 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
145145
146 _ = @cmpxchgStrong(u32, &a_global_variable, 1234, 42, .acquire, .monotonic);146 _ = @cmpxchgStrong(u32, &a_global_variable, 1234, 42, .acquire, .monotonic);
147 try expect(a_global_variable == 42);147 try expect(a_global_variable == 42);
...@@ -151,7 +151,7 @@ test "atomic load and rmw with enum" {...@@ -151,7 +151,7 @@ test "atomic load and rmw with enum" {
151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;154 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
155 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
156156
157 const Value = enum(u8) { a, b, c };157 const Value = enum(u8) { a, b, c };
...@@ -169,7 +169,7 @@ test "atomic store" {...@@ -169,7 +169,7 @@ test "atomic store" {
169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
172 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;172 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
173173
174 try comptime testAtomicStore();174 try comptime testAtomicStore();
175 try testAtomicStore();175 try testAtomicStore();
...@@ -188,7 +188,7 @@ test "atomicrmw with floats" {...@@ -188,7 +188,7 @@ test "atomicrmw with floats" {
188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;191 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
193193
194 try testAtomicRmwFloat();194 try testAtomicRmwFloat();
...@@ -214,7 +214,7 @@ test "atomicrmw with ints" {...@@ -214,7 +214,7 @@ test "atomicrmw with ints" {
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;217 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;218 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
219219
220 try testAtomicRmwInts();220 try testAtomicRmwInts();
...@@ -357,7 +357,7 @@ test "atomics with different types" {...@@ -357,7 +357,7 @@ test "atomics with different types" {
357 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;357 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;360 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;361 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
362362
363 try testAtomicsWithType(bool, true, false);363 try testAtomicsWithType(bool, true, false);
...@@ -411,7 +411,7 @@ fn testAtomicsWithPackedStruct(comptime T: type, a: T, b: T) !void {...@@ -411,7 +411,7 @@ fn testAtomicsWithPackedStruct(comptime T: type, a: T, b: T) !void {
411test "return @atomicStore, using it as a void value" {411test "return @atomicStore, using it as a void value" {
412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;414 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
415415
416 const S = struct {416 const S = struct {
417 const A = struct {417 const A = struct {
test/behavior/backing_int.zig+11-3
...@@ -46,6 +46,8 @@ const E5 = enum(u0) {...@@ -46,6 +46,8 @@ const E5 = enum(u0) {
46};46};
4747
48test "@backingInt with enums" {48test "@backingInt with enums" {
49 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
50
49 const static = struct {51 const static = struct {
50 fn doTheTest(v1: E1, v2: E2, v3: E3, v4: E4, v5: E5) !void {52 fn doTheTest(v1: E1, v2: E2, v3: E3, v4: E4, v5: E5) !void {
51 const b1 = @backingInt(v1);53 const b1 = @backingInt(v1);
...@@ -74,6 +76,8 @@ test "@backingInt with enums" {...@@ -74,6 +76,8 @@ test "@backingInt with enums" {
74}76}
7577
76test "@fromBackingInt with enums" {78test "@fromBackingInt with enums" {
79 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
80
77 const static = struct {81 const static = struct {
78 fn doTheTest(82 fn doTheTest(
79 b1: @typeInfo(E1).@"enum".tag_type,83 b1: @typeInfo(E1).@"enum".tag_type,
...@@ -137,7 +141,7 @@ const T5 = union(E5) {...@@ -137,7 +141,7 @@ const T5 = union(E5) {
137};141};
138142
139test "@backingInt with tagged unions" {143test "@backingInt with tagged unions" {
140 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;144 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
141145
142 const static = struct {146 const static = struct {
143 fn doTheTest(v1: T1, v2: T2, v4: T4, v5: T5) !void {147 fn doTheTest(v1: T1, v2: T2, v4: T4, v5: T5) !void {
...@@ -208,6 +212,8 @@ const S5 = packed struct(u0) {...@@ -208,6 +212,8 @@ const S5 = packed struct(u0) {
208};212};
209213
210test "@backingInt with packed structs" {214test "@backingInt with packed structs" {
215 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
216
211 const static = struct {217 const static = struct {
212 fn doTheTest(v1: S1, v2: S2, v3: S3, v4: S4, v5: S5) !void {218 fn doTheTest(v1: S1, v2: S2, v3: S3, v4: S4, v5: S5) !void {
213 const b1 = @backingInt(v1);219 const b1 = @backingInt(v1);
...@@ -236,6 +242,8 @@ test "@backingInt with packed structs" {...@@ -236,6 +242,8 @@ test "@backingInt with packed structs" {
236}242}
237243
238test "@fromBackingInt with packed structs" {244test "@fromBackingInt with packed structs" {
245 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
246
239 const static = struct {247 const static = struct {
240 fn doTheTest(248 fn doTheTest(
241 b1: @typeInfo(S1).@"struct".backing_integer.?,249 b1: @typeInfo(S1).@"struct".backing_integer.?,
...@@ -313,7 +321,7 @@ const U5 = packed union(u0) {...@@ -313,7 +321,7 @@ const U5 = packed union(u0) {
313};321};
314322
315test "@backingInt with packed unions" {323test "@backingInt with packed unions" {
316 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;324 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
317325
318 const static = struct {326 const static = struct {
319 fn doTheTest(v1: U1, v2: U2, v3: U3, v4: U4, v5: U5) !void {327 fn doTheTest(v1: U1, v2: U2, v3: U3, v4: U4, v5: U5) !void {
...@@ -343,7 +351,7 @@ test "@backingInt with packed unions" {...@@ -343,7 +351,7 @@ test "@backingInt with packed unions" {
343}351}
344352
345test "@fromBackingInt with packed unions" {353test "@fromBackingInt with packed unions" {
346 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;354 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
347355
348 const static = struct {356 const static = struct {
349 fn doTheTest(357 fn doTheTest(
test/behavior/basic.zig+70-32
...@@ -24,6 +24,7 @@ fn testTruncate(x: u32) u8 {...@@ -24,6 +24,7 @@ fn testTruncate(x: u32) u8 {
24}24}
2525
26test "truncate to non-power-of-two integers" {26test "truncate to non-power-of-two integers" {
27 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2829
29 try testTrunc(u32, u1, 0b10101, 0b1);30 try testTrunc(u32, u1, 0b10101, 0b1);
...@@ -38,6 +39,7 @@ test "truncate to non-power-of-two integers" {...@@ -38,6 +39,7 @@ test "truncate to non-power-of-two integers" {
38}39}
3940
40test "truncate to non-power-of-two integers from 128-bit" {41test "truncate to non-power-of-two integers from 128-bit" {
42 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4345
...@@ -60,7 +62,7 @@ const g1: i32 = 1233 + 1;...@@ -60,7 +62,7 @@ const g1: i32 = 1233 + 1;
60var g2: i32 = 0;62var g2: i32 = 0;
6163
62test "global variables" {64test "global variables" {
63 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;65 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6567
66 try expect(g2 == 0);68 try expect(g2 == 0);
...@@ -80,6 +82,8 @@ test "type equality" {...@@ -80,6 +82,8 @@ test "type equality" {
80}82}
8183
82test "pointer dereferencing" {84test "pointer dereferencing" {
85 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
86
83 var x = @as(i32, 3);87 var x = @as(i32, 3);
84 const y = &x;88 const y = &x;
8589
...@@ -137,6 +141,8 @@ test "function branch hints" {...@@ -137,6 +141,8 @@ test "function branch hints" {
137}141}
138142
139test "if branch hints" {143test "if branch hints" {
144 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
145
140 var t: bool = undefined;146 var t: bool = undefined;
141 t = true;147 t = true;
142 if (t) {148 if (t) {
...@@ -147,6 +153,8 @@ test "if branch hints" {...@@ -147,6 +153,8 @@ test "if branch hints" {
147}153}
148154
149test "switch branch hints" {155test "switch branch hints" {
156 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
157
150 var t: bool = undefined;158 var t: bool = undefined;
151 t = true;159 t = true;
152 switch (t) {160 switch (t) {
...@@ -160,6 +168,8 @@ test "switch branch hints" {...@@ -160,6 +168,8 @@ test "switch branch hints" {
160}168}
161169
162test "orelse branch hints" {170test "orelse branch hints" {
171 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
172
163 var x: ?u32 = undefined;173 var x: ?u32 = undefined;
164 x = 123;174 x = 123;
165 const val = x orelse val: {175 const val = x orelse val: {
...@@ -170,6 +180,8 @@ test "orelse branch hints" {...@@ -170,6 +180,8 @@ test "orelse branch hints" {
170}180}
171181
172test "catch branch hints" {182test "catch branch hints" {
183 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
184
173 var x: error{Bad}!u32 = undefined;185 var x: error{Bad}!u32 = undefined;
174 x = 123;186 x = 123;
175 const val = x catch val: {187 const val = x catch val: {
...@@ -180,6 +192,8 @@ test "catch branch hints" {...@@ -180,6 +192,8 @@ test "catch branch hints" {
180}192}
181193
182test "and/or branch hints" {194test "and/or branch hints" {
195 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
196
183 var t: bool = undefined;197 var t: bool = undefined;
184 t = true;198 t = true;
185 try expect(t or b: {199 try expect(t or b: {
...@@ -207,14 +221,14 @@ fn first4KeysOfHomeRow() []const u8 {...@@ -207,14 +221,14 @@ fn first4KeysOfHomeRow() []const u8 {
207}221}
208222
209test "return string from function" {223test "return string from function" {
210 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;224 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212226
213 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));227 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
214}228}
215229
216test "hex escape" {230test "hex escape" {
217 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;231 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219233
220 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));234 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
...@@ -222,7 +236,7 @@ test "hex escape" {...@@ -222,7 +236,7 @@ test "hex escape" {
222236
223test "multiline string" {237test "multiline string" {
224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;239 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
226240
227 const s1 =241 const s1 =
228 \\one242 \\one
...@@ -235,7 +249,7 @@ test "multiline string" {...@@ -235,7 +249,7 @@ test "multiline string" {
235249
236test "multiline string comments at start" {250test "multiline string comments at start" {
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;252 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
239253
240 const s1 =254 const s1 =
241 //\\one255 //\\one
...@@ -248,7 +262,7 @@ test "multiline string comments at start" {...@@ -248,7 +262,7 @@ test "multiline string comments at start" {
248262
249test "multiline string comments at end" {263test "multiline string comments at end" {
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
251 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;265 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
252266
253 const s1 =267 const s1 =
254 \\one268 \\one
...@@ -261,7 +275,7 @@ test "multiline string comments at end" {...@@ -261,7 +275,7 @@ test "multiline string comments at end" {
261275
262test "multiline string comments in middle" {276test "multiline string comments in middle" {
263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;278 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
265279
266 const s1 =280 const s1 =
267 \\one281 \\one
...@@ -274,7 +288,7 @@ test "multiline string comments in middle" {...@@ -274,7 +288,7 @@ test "multiline string comments in middle" {
274288
275test "multiline string comments at multiple places" {289test "multiline string comments at multiple places" {
276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;291 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
278292
279 const s1 =293 const s1 =
280 \\one294 \\one
...@@ -288,7 +302,7 @@ test "multiline string comments at multiple places" {...@@ -288,7 +302,7 @@ test "multiline string comments at multiple places" {
288}302}
289303
290test "string concatenation simple" {304test "string concatenation simple" {
291 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;305 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
292306
293 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));307 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
294}308}
...@@ -302,6 +316,7 @@ test "compile time global reinterpret" {...@@ -302,6 +316,7 @@ test "compile time global reinterpret" {
302}316}
303317
304test "cast undefined" {318test "cast undefined" {
319 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306321
307 const array: [100]u8 = undefined;322 const array: [100]u8 = undefined;
...@@ -372,7 +387,8 @@ fn fB() []const u8 {...@@ -372,7 +387,8 @@ fn fB() []const u8 {
372387
373test "call function pointer in struct" {388test "call function pointer in struct" {
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
375 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;390 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
391
376 try expect(mem.eql(u8, f3(true), "a"));392 try expect(mem.eql(u8, f3(true), "a"));
377 try expect(mem.eql(u8, f3(false), "b"));393 try expect(mem.eql(u8, f3(false), "b"));
378}394}
...@@ -394,6 +410,7 @@ const FnPtrWrapper = struct {...@@ -394,6 +410,7 @@ const FnPtrWrapper = struct {
394};410};
395411
396test "const ptr from var variable" {412test "const ptr from var variable" {
413 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
398415
399 var x: u64 = undefined;416 var x: u64 = undefined;
...@@ -412,7 +429,7 @@ fn copy(src: *const u64, dst: *u64) void {...@@ -412,7 +429,7 @@ fn copy(src: *const u64, dst: *u64) void {
412test "call result of if else expression" {429test "call result of if else expression" {
413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO431 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
415 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;432 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
416433
417 try expect(mem.eql(u8, f2(true), "a"));434 try expect(mem.eql(u8, f2(true), "a"));
418 try expect(mem.eql(u8, f2(false), "b"));435 try expect(mem.eql(u8, f2(false), "b"));
...@@ -423,7 +440,7 @@ fn f2(x: bool) []const u8 {...@@ -423,7 +440,7 @@ fn f2(x: bool) []const u8 {
423440
424const OpaqueA = opaque {};441const OpaqueA = opaque {};
425test "variable is allowed to be a pointer to an opaque type" {442test "variable is allowed to be a pointer to an opaque type" {
426 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;443 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
427444
428 var x: i32 = 1234;445 var x: i32 = 1234;
429 _ = hereIsAnOpaqueType(@as(*OpaqueA, @ptrCast(&x)));446 _ = hereIsAnOpaqueType(@as(*OpaqueA, @ptrCast(&x)));
...@@ -446,7 +463,7 @@ fn testTakeAddressOfParameter(f: f32) !void {...@@ -446,7 +463,7 @@ fn testTakeAddressOfParameter(f: f32) !void {
446}463}
447464
448test "pointer to void return type" {465test "pointer to void return type" {
449 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;466 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
450467
451 try testPointerToVoidReturnType();468 try testPointerToVoidReturnType();
452}469}
...@@ -462,7 +479,7 @@ fn testPointerToVoidReturnType2() *const void {...@@ -462,7 +479,7 @@ fn testPointerToVoidReturnType2() *const void {
462test "array 2D const double ptr" {479test "array 2D const double ptr" {
463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
465 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;482 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
466483
467 const rect_2d_vertexes = [_][1]f32{484 const rect_2d_vertexes = [_][1]f32{
468 [_]f32{1.0},485 [_]f32{1.0},
...@@ -474,7 +491,7 @@ test "array 2D const double ptr" {...@@ -474,7 +491,7 @@ test "array 2D const double ptr" {
474test "array 2D const double ptr with offset" {491test "array 2D const double ptr with offset" {
475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
477 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;494 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
478495
479 const rect_2d_vertexes = [_][2]f32{496 const rect_2d_vertexes = [_][2]f32{
480 [_]f32{ 3.0, 4.239 },497 [_]f32{ 3.0, 4.239 },
...@@ -486,7 +503,7 @@ test "array 2D const double ptr with offset" {...@@ -486,7 +503,7 @@ test "array 2D const double ptr with offset" {
486test "array 3D const double ptr with offset" {503test "array 3D const double ptr with offset" {
487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
489 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;506 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
490507
491 const rect_3d_vertexes = [_][2][2]f32{508 const rect_3d_vertexes = [_][2][2]f32{
492 [_][2]f32{509 [_][2]f32{
...@@ -519,6 +536,7 @@ fn nine() u8 {...@@ -519,6 +536,7 @@ fn nine() u8 {
519}536}
520537
521test "struct inside function" {538test "struct inside function" {
539 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
523541
524 try testStructInFn();542 try testStructInFn();
...@@ -541,7 +559,7 @@ fn testStructInFn() !void {...@@ -541,7 +559,7 @@ fn testStructInFn() !void {
541559
542test "fn call returning scalar optional in equality expression" {560test "fn call returning scalar optional in equality expression" {
543 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO561 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
544 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;562 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
545563
546 try expect(getNull() == null);564 try expect(getNull() == null);
547}565}
...@@ -553,7 +571,7 @@ fn getNull() ?*i32 {...@@ -553,7 +571,7 @@ fn getNull() ?*i32 {
553test "global variable assignment with optional unwrapping with var initialized to undefined" {571test "global variable assignment with optional unwrapping with var initialized to undefined" {
554 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;574 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
557575
558 const S = struct {576 const S = struct {
559 var data: i32 = 1234;577 var data: i32 = 1234;
...@@ -570,6 +588,7 @@ test "global variable assignment with optional unwrapping with var initialized t...@@ -570,6 +588,7 @@ test "global variable assignment with optional unwrapping with var initialized t
570var global_foo: *i32 = undefined;588var global_foo: *i32 = undefined;
571589
572test "peer result location with typed parent, runtime condition, comptime prongs" {590test "peer result location with typed parent, runtime condition, comptime prongs" {
591 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
574593
575 const S = struct {594 const S = struct {
...@@ -610,6 +629,8 @@ fn ZA() type {...@@ -610,6 +629,8 @@ fn ZA() type {
610}629}
611630
612test "use of declaration with same name as primitive" {631test "use of declaration with same name as primitive" {
632 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
633
613 const S = struct {634 const S = struct {
614 const @"u8" = u16;635 const @"u8" = u16;
615 const alias = @"u8";636 const alias = @"u8";
...@@ -636,12 +657,14 @@ fn emptyFn() void {}...@@ -636,12 +657,14 @@ fn emptyFn() void {}
636657
637const addr1 = @as(*const u8, @ptrCast(&emptyFn));658const addr1 = @as(*const u8, @ptrCast(&emptyFn));
638test "comptime cast fn to ptr" {659test "comptime cast fn to ptr" {
660 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
661
639 const addr2 = @as(*const u8, @ptrCast(&emptyFn));662 const addr2 = @as(*const u8, @ptrCast(&emptyFn));
640 comptime assert(addr1 == addr2);663 comptime assert(addr1 == addr2);
641}664}
642665
643test "equality compare fn ptrs" {666test "equality compare fn ptrs" {
644 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Uses function pointers667 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Uses function pointers
645668
646 var a = &emptyFn;669 var a = &emptyFn;
647 _ = &a;670 _ = &a;
...@@ -649,7 +672,7 @@ test "equality compare fn ptrs" {...@@ -649,7 +672,7 @@ test "equality compare fn ptrs" {
649}672}
650673
651test "self reference through fn ptr field" {674test "self reference through fn ptr field" {
652 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;675 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
653676
654 const S = struct {677 const S = struct {
655 const A = struct {678 const A = struct {
...@@ -668,7 +691,7 @@ test "self reference through fn ptr field" {...@@ -668,7 +691,7 @@ test "self reference through fn ptr field" {
668691
669test "global variable initialized to global variable array element" {692test "global variable initialized to global variable array element" {
670 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO693 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
671 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;694 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
672695
673 try expect(global_ptr == &gdt[0]);696 try expect(global_ptr == &gdt[0]);
674}697}
...@@ -682,7 +705,7 @@ var gdt = [_]GDTEntry{...@@ -682,7 +705,7 @@ var gdt = [_]GDTEntry{
682var global_ptr = &gdt[0];705var global_ptr = &gdt[0];
683706
684test "global constant is loaded with a runtime-known index" {707test "global constant is loaded with a runtime-known index" {
685 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;708 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
686 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO709 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
687710
688 const S = struct {711 const S = struct {
...@@ -701,7 +724,7 @@ test "global constant is loaded with a runtime-known index" {...@@ -701,7 +724,7 @@ test "global constant is loaded with a runtime-known index" {
701}724}
702725
703test "multiline string literal is null terminated" {726test "multiline string literal is null terminated" {
704 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;727 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
705728
706 const s1 =729 const s1 =
707 \\one730 \\one
...@@ -715,7 +738,7 @@ test "multiline string literal is null terminated" {...@@ -715,7 +738,7 @@ test "multiline string literal is null terminated" {
715test "string escapes" {738test "string escapes" {
716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;739 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO740 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
718 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;741 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
719742
720 try expectEqualStrings("\"", "\x22");743 try expectEqualStrings("\"", "\x22");
721 try expectEqualStrings("\'", "\x27");744 try expectEqualStrings("\'", "\x27");
...@@ -733,7 +756,7 @@ test "explicit cast optional pointers" {...@@ -733,7 +756,7 @@ test "explicit cast optional pointers" {
733}756}
734757
735test "pointer comparison" {758test "pointer comparison" {
736 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;759 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
737760
738 const a = @as([]const u8, "a");761 const a = @as([]const u8, "a");
739 const b = &a;762 const b = &a;
...@@ -744,6 +767,7 @@ fn ptrEql(a: *const []const u8, b: *const []const u8) bool {...@@ -744,6 +767,7 @@ fn ptrEql(a: *const []const u8, b: *const []const u8) bool {
744}767}
745768
746test "string concatenation" {769test "string concatenation" {
770 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;771 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
748 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO772 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
749773
...@@ -766,6 +790,7 @@ test "string concatenation" {...@@ -766,6 +790,7 @@ test "string concatenation" {
766}790}
767791
768test "result location is optional inside error union" {792test "result location is optional inside error union" {
793 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
769 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO794 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
770 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO795 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
771796
...@@ -782,7 +807,7 @@ fn maybe(x: bool) anyerror!?u32 {...@@ -782,7 +807,7 @@ fn maybe(x: bool) anyerror!?u32 {
782807
783test "auto created variables have correct alignment" {808test "auto created variables have correct alignment" {
784 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
785 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;810 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
786811
787 const S = struct {812 const S = struct {
788 fn foo(str: [*]const u8) u32 {813 fn foo(str: [*]const u8) u32 {
...@@ -799,7 +824,7 @@ test "auto created variables have correct alignment" {...@@ -799,7 +824,7 @@ test "auto created variables have correct alignment" {
799test "extern variable with non-pointer opaque type" {824test "extern variable with non-pointer opaque type" {
800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO826 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO827 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
803828
804 @export(&var_to_export, .{ .name = "opaque_extern_var" });829 @export(&var_to_export, .{ .name = "opaque_extern_var" });
805 try expect(@as(*align(1) u32, @ptrCast(&opaque_extern_var)).* == 42);830 try expect(@as(*align(1) u32, @ptrCast(&opaque_extern_var)).* == 42);
...@@ -840,6 +865,7 @@ test "if expression type coercion" {...@@ -840,6 +865,7 @@ test "if expression type coercion" {
840}865}
841866
842test "discarding the result of various expressions" {867test "discarding the result of various expressions" {
868 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO869 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO870 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
845871
...@@ -912,6 +938,7 @@ test "labeled block with runtime branch forwards its result location type to bre...@@ -912,6 +938,7 @@ test "labeled block with runtime branch forwards its result location type to bre
912}938}
913939
914test "try in labeled block doesn't cast to wrong type" {940test "try in labeled block doesn't cast to wrong type" {
941 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
915 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO942 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
916943
917 const S = struct {944 const S = struct {
...@@ -936,6 +963,7 @@ test "vector initialized with array init syntax has proper type" {...@@ -936,6 +963,7 @@ test "vector initialized with array init syntax has proper type" {
936}963}
937964
938test "weird array and tuple initializations" {965test "weird array and tuple initializations" {
966 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
939 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO967 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
940 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO968 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
941969
...@@ -1054,6 +1082,7 @@ comptime {...@@ -1054,6 +1082,7 @@ comptime {
1054}1082}
10551083
1056test "switch inside @as gets correct type" {1084test "switch inside @as gets correct type" {
1085 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1057 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1086 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10581087
1059 var a: u32 = 0;1088 var a: u32 = 0;
...@@ -1078,7 +1107,7 @@ test "inline call of function with a switch inside the return statement" {...@@ -1078,7 +1107,7 @@ test "inline call of function with a switch inside the return statement" {
1078}1107}
10791108
1080test "pointer to zero sized global is mutable" {1109test "pointer to zero sized global is mutable" {
1081 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1110 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10821111
1083 const S = struct {1112 const S = struct {
1084 const Thing = struct {};1113 const Thing = struct {};
...@@ -1100,6 +1129,7 @@ test "returning an opaque type from a function" {...@@ -1100,6 +1129,7 @@ test "returning an opaque type from a function" {
1100}1129}
11011130
1102test "orelse coercion as function argument" {1131test "orelse coercion as function argument" {
1132 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11041134
1105 const Loc = struct { start: i32 = -1 };1135 const Loc = struct { start: i32 = -1 };
...@@ -1118,7 +1148,7 @@ test "orelse coercion as function argument" {...@@ -1118,7 +1148,7 @@ test "orelse coercion as function argument" {
1118}1148}
11191149
1120test "runtime-known globals initialized with undefined" {1150test "runtime-known globals initialized with undefined" {
1121 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1151 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11221152
1123 const S = struct {1153 const S = struct {
1124 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };1154 var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
...@@ -1137,7 +1167,7 @@ test "arrays and vectors with big integers" {...@@ -1137,7 +1167,7 @@ test "arrays and vectors with big integers" {
1137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1140 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1170 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1171 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1142 if (builtin.zig_backend == .stage2_llvm and (builtin.abi == .gnuabin32 or builtin.abi == .muslabin32 or builtin.abi == .abin32)) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/238051172 if (builtin.zig_backend == .stage2_llvm and (builtin.abi == .gnuabin32 or builtin.abi == .muslabin32 or builtin.abi == .abin32)) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23805
11431173
...@@ -1211,6 +1241,8 @@ fn testUnsignedCmp(comptime T: type) !void {...@@ -1211,6 +1241,8 @@ fn testUnsignedCmp(comptime T: type) !void {
1211}1241}
12121242
1213test "integer compare <= 64 bits" {1243test "integer compare <= 64 bits" {
1244 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1245
1214 inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {1246 inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {
1215 try testUnsignedCmp(T);1247 try testUnsignedCmp(T);
1216 try comptime testUnsignedCmp(T);1248 try comptime testUnsignedCmp(T);
...@@ -1222,6 +1254,7 @@ test "integer compare <= 64 bits" {...@@ -1222,6 +1254,7 @@ test "integer compare <= 64 bits" {
1222}1254}
12231255
1224test "integer compare <= 128 bits" {1256test "integer compare <= 128 bits" {
1257 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1225 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1258 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12261259
1227 inline for (.{ u65, u96, u127, u128 }) |T| {1260 inline for (.{ u65, u96, u127, u128 }) |T| {
...@@ -1235,6 +1268,7 @@ test "integer compare <= 128 bits" {...@@ -1235,6 +1268,7 @@ test "integer compare <= 128 bits" {
1235}1268}
12361269
1237test "integer compare > 128 bits" {1270test "integer compare > 128 bits" {
1271 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1238 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1272 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12391273
1240 inline for (.{ u129, u255, u512, u800 }) |T| {1274 inline for (.{ u129, u255, u512, u800 }) |T| {
...@@ -1248,6 +1282,7 @@ test "integer compare > 128 bits" {...@@ -1248,6 +1282,7 @@ test "integer compare > 128 bits" {
1248}1282}
12491283
1250test "reference to inferred local variable works as expected" {1284test "reference to inferred local variable works as expected" {
1285 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12521287
1253 const Crasher = struct {1288 const Crasher = struct {
...@@ -1332,7 +1367,7 @@ test "const inferred array of slices" {...@@ -1332,7 +1367,7 @@ test "const inferred array of slices" {
13321367
1333test "var inferred array of slices" {1368test "var inferred array of slices" {
1334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1369 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1335 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1370 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13361371
1337 const T = struct { v: bool };1372 const T = struct { v: bool };
13381373
...@@ -1355,6 +1390,7 @@ test "copy array of self-referential struct" {...@@ -1355,6 +1390,7 @@ test "copy array of self-referential struct" {
1355}1390}
13561391
1357test "break out of block based on comptime known values" {1392test "break out of block based on comptime known values" {
1393 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1358 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13601396
...@@ -1392,7 +1428,7 @@ test "allocation and looping over 3-byte integer" {...@@ -1392,7 +1428,7 @@ test "allocation and looping over 3-byte integer" {
1392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1428 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1430 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1395 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1431 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1396 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1432 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13971433
1398 try expect(@sizeOf(u24) == 4);1434 try expect(@sizeOf(u24) == 4);
...@@ -1419,6 +1455,8 @@ test "allocation and looping over 3-byte integer" {...@@ -1419,6 +1455,8 @@ test "allocation and looping over 3-byte integer" {
1419}1455}
14201456
1421test "loading array from struct is not optimized away" {1457test "loading array from struct is not optimized away" {
1458 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1459
1422 const S = struct {1460 const S = struct {
1423 arr: [1]u32 = .{0},1461 arr: [1]u32 = .{0},
1424 fn doTheTest(self: *@This()) !void {1462 fn doTheTest(self: *@This()) !void {
test/behavior/bit_shifting.zig+3-3
...@@ -65,7 +65,7 @@ test "sharded table" {...@@ -65,7 +65,7 @@ test "sharded table" {
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;68 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6969
70 // realistic 16-way sharding70 // realistic 16-way sharding
71 try testShardedTable(u32, 4, 8);71 try testShardedTable(u32, 4, 8);
...@@ -115,7 +115,7 @@ test "Saturating Shift Left where lhs is of a computed type" {...@@ -115,7 +115,7 @@ test "Saturating Shift Left where lhs is of a computed type" {
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;118 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
120120
121 const S = struct {121 const S = struct {
...@@ -148,7 +148,7 @@ test "Saturating Shift Left where lhs is of a computed type" {...@@ -148,7 +148,7 @@ test "Saturating Shift Left where lhs is of a computed type" {
148test "Saturating Shift Left" {148test "Saturating Shift Left" {
149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
151 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;151 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
153153
154 const S = struct {154 const S = struct {
test/behavior/bitcast.zig+19-14
...@@ -9,6 +9,7 @@ const minInt = std.math.minInt;...@@ -9,6 +9,7 @@ const minInt = std.math.minInt;
9const native_endian = builtin.target.cpu.arch.endian();9const native_endian = builtin.target.cpu.arch.endian();
1010
11test "@bitCast iX -> uX (32, 64)" {11test "@bitCast iX -> uX (32, 64)" {
12 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1314
14 const bit_values = [_]usize{ 32, 64 };15 const bit_values = [_]usize{ 32, 64 };
...@@ -20,6 +21,7 @@ test "@bitCast iX -> uX (32, 64)" {...@@ -20,6 +21,7 @@ test "@bitCast iX -> uX (32, 64)" {
20}21}
2122
22test "@bitCast iX -> uX (8, 16, 128)" {23test "@bitCast iX -> uX (8, 16, 128)" {
24 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;27 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -32,6 +34,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {...@@ -32,6 +34,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {
32}34}
3335
34test "@bitCast iX -> uX exotic integers" {36test "@bitCast iX -> uX exotic integers" {
37 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -98,7 +101,7 @@ test "bitcast literal [4]u8 param to u32" {...@@ -98,7 +101,7 @@ test "bitcast literal [4]u8 param to u32" {
98}101}
99102
100test "bitcast generates a temporary value" {103test "bitcast generates a temporary value" {
101 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;104 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
102105
103 var y: u16 = 0x55AA;106 var y: u16 = 0x55AA;
104 _ = &y;107 _ = &y;
...@@ -107,7 +110,7 @@ test "bitcast generates a temporary value" {...@@ -107,7 +110,7 @@ test "bitcast generates a temporary value" {
107}110}
108111
109test "@bitCast packed structs at runtime and comptime" {112test "@bitCast packed structs at runtime and comptime" {
110 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;113 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -135,7 +138,7 @@ test "@bitCast packed structs at runtime and comptime" {...@@ -135,7 +138,7 @@ test "@bitCast packed structs at runtime and comptime" {
135}138}
136139
137test "bitcast packed struct to integer and back" {140test "bitcast packed struct to integer and back" {
138 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;141 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -159,6 +162,7 @@ test "bitcast packed struct to integer and back" {...@@ -159,6 +162,7 @@ test "bitcast packed struct to integer and back" {
159}162}
160163
161test "implicit cast to error union by returning" {164test "implicit cast to error union by returning" {
165 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
164168
...@@ -213,7 +217,7 @@ test "@bitCast packed struct of floats" {...@@ -213,7 +217,7 @@ test "@bitCast packed struct of floats" {
213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;220 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;221 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
218222
219 const Foo = packed struct {223 const Foo = packed struct {
...@@ -249,7 +253,7 @@ test "comptime @bitCast packed struct to int and back" {...@@ -249,7 +253,7 @@ test "comptime @bitCast packed struct to int and back" {
249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
252 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;256 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
253 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;257 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
254258
255 const S = packed struct {259 const S = packed struct {
...@@ -282,7 +286,7 @@ test "comptime @bitCast packed struct to int and back" {...@@ -282,7 +286,7 @@ test "comptime @bitCast packed struct to int and back" {
282test "bitcast vector to integer and back" {286test "bitcast vector to integer and back" {
283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;287 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
285 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;289 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;290 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
287291
288 var vec: @Vector(16, bool) = @splat(true);292 var vec: @Vector(16, bool) = @splat(true);
...@@ -314,6 +318,7 @@ test "bitcast vector to integer and back" {...@@ -314,6 +318,7 @@ test "bitcast vector to integer and back" {
314}318}
315319
316test "bitcast vector elementwise" {320test "bitcast vector elementwise" {
321 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;322 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -357,7 +362,7 @@ fn bitCastWrapper128(x: f128) u128 {...@@ -357,7 +362,7 @@ fn bitCastWrapper128(x: f128) u128 {
357}362}
358test "bitcast nan float does not modify signaling bit" {363test "bitcast nan float does not modify signaling bit" {
359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;365 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;366 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
362 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;367 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
363 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;368 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
...@@ -411,7 +416,7 @@ test "bitcast nan float does not modify signaling bit" {...@@ -411,7 +416,7 @@ test "bitcast nan float does not modify signaling bit" {
411test "@bitCast of packed struct of bools all true" {416test "@bitCast of packed struct of bools all true" {
412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO419 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
415 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
416421
417 const P = packed struct {422 const P = packed struct {
...@@ -431,7 +436,7 @@ test "@bitCast of packed struct of bools all true" {...@@ -431,7 +436,7 @@ test "@bitCast of packed struct of bools all true" {
431test "@bitCast of packed struct of bools all false" {436test "@bitCast of packed struct of bools all false" {
432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO438 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO439 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
435440
436 const P = packed struct {441 const P = packed struct {
437 b0: bool,442 b0: bool,
...@@ -480,7 +485,7 @@ test "@bitCast of packed struct with void field and multiple integers" {...@@ -480,7 +485,7 @@ test "@bitCast of packed struct with void field and multiple integers" {
480}485}
481486
482test "@bitCast vector to array with different element size" {487test "@bitCast vector to array with different element size" {
483 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;488 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
484489
485 const static = struct {490 const static = struct {
486 fn doTheTest(v: @Vector(4, u5)) !void {491 fn doTheTest(v: @Vector(4, u5)) !void {
...@@ -505,7 +510,7 @@ test "@bitCast vector to array with different element size" {...@@ -505,7 +510,7 @@ test "@bitCast vector to array with different element size" {
505}510}
506511
507test "@bitCast packed struct to array of bits" {512test "@bitCast packed struct to array of bits" {
508 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;513 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
509514
510 const S = packed struct(u16) {515 const S = packed struct(u16) {
511 foo: u5,516 foo: u5,
...@@ -553,7 +558,7 @@ test "@bitCast packed struct to array of bits" {...@@ -553,7 +558,7 @@ test "@bitCast packed struct to array of bits" {
553}558}
554559
555test "@bitCast nested arrays of vectors" {560test "@bitCast nested arrays of vectors" {
556 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;561 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
557562
558 const Src = [2][2]@Vector(4, u5);563 const Src = [2][2]@Vector(4, u5);
559 const Dest = [5]@Vector(2, u8);564 const Dest = [5]@Vector(2, u8);
...@@ -590,7 +595,7 @@ test "@bitCast nested arrays of vectors" {...@@ -590,7 +595,7 @@ test "@bitCast nested arrays of vectors" {
590}595}
591596
592test "@bitCast nested arrays of bool to scalar" {597test "@bitCast nested arrays of bool to scalar" {
593 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;598 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
594599
595 const static = struct {600 const static = struct {
596 fn doTheTest(src: [4][4]bool) !void {601 fn doTheTest(src: [4][4]bool) !void {
...@@ -609,7 +614,7 @@ test "@bitCast nested arrays of bool to scalar" {...@@ -609,7 +614,7 @@ test "@bitCast nested arrays of bool to scalar" {
609}614}
610615
611test "@bitCast deeply nested arrays to scalar" {616test "@bitCast deeply nested arrays to scalar" {
612 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;617 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
613618
614 const static = struct {619 const static = struct {
615 fn doTheTest(src: [2][1][3][5]u4) !void {620 fn doTheTest(src: [2][1][3][5]u4) !void {
test/behavior/bitreverse.zig+4-4
...@@ -11,7 +11,7 @@ test "@bitReverse" {...@@ -11,7 +11,7 @@ test "@bitReverse" {
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;14 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1616
17 try comptime testBitReverse();17 try comptime testBitReverse();
...@@ -124,7 +124,7 @@ test "bitReverse vectors u8" {...@@ -124,7 +124,7 @@ test "bitReverse vectors u8" {
124 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;124 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
125 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;125 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;127 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
129129
130 try comptime vector8();130 try comptime vector8();
...@@ -143,7 +143,7 @@ test "bitReverse vectors u16" {...@@ -143,7 +143,7 @@ test "bitReverse vectors u16" {
143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
148148
149 try comptime vector16();149 try comptime vector16();
...@@ -162,7 +162,7 @@ test "bitReverse vectors u24" {...@@ -162,7 +162,7 @@ test "bitReverse vectors u24" {
162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;165 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
166 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
167167
168 try comptime vector24();168 try comptime vector24();
test/behavior/bool.zig+5
...@@ -9,6 +9,7 @@ test "bool literals" {...@@ -9,6 +9,7 @@ test "bool literals" {
9}9}
1010
11test "cast bool to int" {11test "cast bool to int" {
12 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1314
14 const t = true;15 const t = true;
...@@ -48,6 +49,8 @@ test "compile time bool not" {...@@ -48,6 +49,8 @@ test "compile time bool not" {
48}49}
4950
50test "short circuit" {51test "short circuit" {
52 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
53
51 try testShortCircuit(false, true);54 try testShortCircuit(false, true);
52 try comptime testShortCircuit(false, true);55 try comptime testShortCircuit(false, true);
53}56}
...@@ -92,6 +95,8 @@ fn testShortCircuit(f: bool, t: bool) !void {...@@ -92,6 +95,8 @@ fn testShortCircuit(f: bool, t: bool) !void {
92}95}
9396
94test "or with noreturn operand" {97test "or with noreturn operand" {
98 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
99
95 const S = struct {100 const S = struct {
96 fn foo(a: u32, b: u32) bool {101 fn foo(a: u32, b: u32) bool {
97 return a == 5 or b == 2 or @panic("oh no");102 return a == 5 or b == 2 or @panic("oh no");
test/behavior/builtin_functions_returning_void_or_noreturn.zig+1-1
...@@ -8,7 +8,7 @@ var x: u8 = 1;...@@ -8,7 +8,7 @@ var x: u8 = 1;
8test {8test {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;11 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1212
13 var val: u8 = undefined;13 var val: u8 = undefined;
14 try testing.expectEqual({}, @atomicStore(u8, &val, 0, .unordered));14 try testing.expectEqual({}, @atomicStore(u8, &val, 0, .unordered));
test/behavior/byteswap.zig+5-5
...@@ -6,7 +6,7 @@ test "@byteSwap integers" {...@@ -6,7 +6,7 @@ test "@byteSwap integers" {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1010
11 const ByteSwapIntTest = struct {11 const ByteSwapIntTest = struct {
12 fn run() !void {12 fn run() !void {
...@@ -41,7 +41,7 @@ test "@byteSwap exotic integers" {...@@ -41,7 +41,7 @@ test "@byteSwap exotic integers" {
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;42 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
44 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;44 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4545
46 const ByteSwapIntTest = struct {46 const ByteSwapIntTest = struct {
47 fn run() !void {47 fn run() !void {
...@@ -84,7 +84,7 @@ test "@byteSwap vectors u8" {...@@ -84,7 +84,7 @@ test "@byteSwap vectors u8" {
84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;87 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;88 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8989
90 try comptime vector8();90 try comptime vector8();
...@@ -103,7 +103,7 @@ test "@byteSwap vectors u16" {...@@ -103,7 +103,7 @@ test "@byteSwap vectors u16" {
103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;106 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;107 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
108108
109 try comptime vector16();109 try comptime vector16();
...@@ -122,7 +122,7 @@ test "@byteSwap vectors u24" {...@@ -122,7 +122,7 @@ test "@byteSwap vectors u24" {
122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;125 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
126 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;126 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
127127
128 try comptime vector24();128 try comptime vector24();
test/behavior/byval_arg_var.zig+1-1
...@@ -5,7 +5,7 @@ var result: []const u8 = "wrong";...@@ -5,7 +5,7 @@ var result: []const u8 = "wrong";
55
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;8 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
99
10 start();10 start();
11 blowUpStack(10);11 blowUpStack(10);
test/behavior/call.zig+21-13
...@@ -23,7 +23,7 @@ test "basic invocations" {...@@ -23,7 +23,7 @@ test "basic invocations" {
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;26 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2727
28 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support tail call modifiers28 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support tail call modifiers
2929
...@@ -61,7 +61,7 @@ test "basic invocations" {...@@ -61,7 +61,7 @@ test "basic invocations" {
61test "tuple parameters" {61test "tuple parameters" {
62 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;64 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6565
66 const add = struct {66 const add = struct {
67 fn add(a: i32, b: i32) i32 {67 fn add(a: i32, b: i32) i32 {
...@@ -92,6 +92,7 @@ test "tuple parameters" {...@@ -92,6 +92,7 @@ test "tuple parameters" {
92}92}
9393
94test "result location of function call argument through runtime condition and struct init" {94test "result location of function call argument through runtime condition and struct init" {
95 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
95 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9798
...@@ -112,6 +113,7 @@ test "result location of function call argument through runtime condition and st...@@ -112,6 +113,7 @@ test "result location of function call argument through runtime condition and st
112}113}
113114
114test "function call with 40 arguments" {115test "function call with 40 arguments" {
116 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;117 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -273,7 +275,7 @@ test "forced tail call" {...@@ -273,7 +275,7 @@ test "forced tail call" {
273 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO275 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO276 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
276 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;278 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
278280
279 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {281 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {
...@@ -308,7 +310,7 @@ test "inline call preserves tail call" {...@@ -308,7 +310,7 @@ test "inline call preserves tail call" {
308 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO310 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
310 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
311 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;313 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
312 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;314 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
313315
314 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {316 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {
...@@ -341,7 +343,7 @@ test "inline call preserves tail call" {...@@ -341,7 +343,7 @@ test "inline call preserves tail call" {
341343
342test "inline call doesn't re-evaluate non generic struct" {344test "inline call doesn't re-evaluate non generic struct" {
343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
344 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;346 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
345347
346 const S = struct {348 const S = struct {
347 fn foo(f: struct { a: u8, b: u8 }) !void {349 fn foo(f: struct { a: u8, b: u8 }) !void {
...@@ -355,6 +357,8 @@ test "inline call doesn't re-evaluate non generic struct" {...@@ -355,6 +357,8 @@ test "inline call doesn't re-evaluate non generic struct" {
355}357}
356358
357test "Enum constructed by @Enum passed as generic argument" {359test "Enum constructed by @Enum passed as generic argument" {
360 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
361
358 const S = struct {362 const S = struct {
359 const E = std.meta.FieldEnum(struct {363 const E = std.meta.FieldEnum(struct {
360 prev_pos: bool,364 prev_pos: bool,
...@@ -407,7 +411,7 @@ test "recursive inline call with comptime known argument" {...@@ -407,7 +411,7 @@ test "recursive inline call with comptime known argument" {
407411
408test "inline while with @call" {412test "inline while with @call" {
409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;414 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
411415
412 const S = struct {416 const S = struct {
413 fn inc(a: *u32) void {417 fn inc(a: *u32) void {
...@@ -423,6 +427,8 @@ test "inline while with @call" {...@@ -423,6 +427,8 @@ test "inline while with @call" {
423}427}
424428
425test "method call as parameter type" {429test "method call as parameter type" {
430 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
431
426 const S = struct {432 const S = struct {
427 fn foo(x: anytype, y: @TypeOf(x).Inner()) @TypeOf(y) {433 fn foo(x: anytype, y: @TypeOf(x).Inner()) @TypeOf(y) {
428 return y;434 return y;
...@@ -436,6 +442,7 @@ test "method call as parameter type" {...@@ -436,6 +442,7 @@ test "method call as parameter type" {
436}442}
437443
438test "non-anytype generic parameters provide result type" {444test "non-anytype generic parameters provide result type" {
445 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
439 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
440 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
441448
...@@ -464,6 +471,7 @@ test "non-anytype generic parameters provide result type" {...@@ -464,6 +471,7 @@ test "non-anytype generic parameters provide result type" {
464}471}
465472
466test "argument to generic function has correct result type" {473test "argument to generic function has correct result type" {
474 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO475 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469477
...@@ -491,7 +499,7 @@ test "argument to generic function has correct result type" {...@@ -491,7 +499,7 @@ test "argument to generic function has correct result type" {
491}499}
492500
493test "call inline fn through pointer" {501test "call inline fn through pointer" {
494 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;502 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
495503
496 const S = struct {504 const S = struct {
497 inline fn foo(x: u8) !void {505 inline fn foo(x: u8) !void {
...@@ -517,7 +525,7 @@ test "call function in comptime field" {...@@ -517,7 +525,7 @@ test "call function in comptime field" {
517test "call function pointer in comptime field" {525test "call function pointer in comptime field" {
518 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;528 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
521529
522 const Auto = struct {530 const Auto = struct {
523 auto: [max_len]u8 = undefined,531 auto: [max_len]u8 = undefined,
...@@ -538,7 +546,7 @@ test "call function pointer in comptime field" {...@@ -538,7 +546,7 @@ test "call function pointer in comptime field" {
538}546}
539547
540test "generic function pointer can be called" {548test "generic function pointer can be called" {
541 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;549 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
542550
543 const S = struct {551 const S = struct {
544 var ok = false;552 var ok = false;
...@@ -615,7 +623,7 @@ test "call with union with zero sized field is not memorized incorrectly" {...@@ -615,7 +623,7 @@ test "call with union with zero sized field is not memorized incorrectly" {
615test "function call with cast to anyopaque pointer" {623test "function call with cast to anyopaque pointer" {
616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;626 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
619627
620 const Foo = struct {628 const Foo = struct {
621 y: u8,629 y: u8,
...@@ -633,7 +641,7 @@ test "arguments pointed to on stack into tailcall" {...@@ -633,7 +641,7 @@ test "arguments pointed to on stack into tailcall" {
633 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
634 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;642 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
635 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;643 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
636 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;644 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
637 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support always tail calls645 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // MSVC doesn't support always tail calls
638646
639 switch (builtin.cpu.arch) {647 switch (builtin.cpu.arch) {
...@@ -707,7 +715,7 @@ test "tail call function pointer" {...@@ -707,7 +715,7 @@ test "tail call function pointer" {
707 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO715 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
708 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO716 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
709 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
710 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;718 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
711 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;719 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
712720
713 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {721 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {
...@@ -737,7 +745,7 @@ test "tail call function pointer" {...@@ -737,7 +745,7 @@ test "tail call function pointer" {
737test "tail call with potentially extended types" {745test "tail call with potentially extended types" {
738 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO746 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
739 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO747 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
740 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;748 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
741749
742 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {750 if (builtin.zig_backend == .stage2_llvm or builtin.zig_backend == .stage2_c) {
743 if (builtin.cpu.arch.isMIPS() or builtin.cpu.arch.isPowerPC() or builtin.cpu.arch.isWasm()) {751 if (builtin.cpu.arch.isMIPS() or builtin.cpu.arch.isPowerPC() or builtin.cpu.arch.isWasm()) {
test/behavior/cast.zig+129-99
...@@ -21,6 +21,7 @@ test "integer literal to pointer cast" {...@@ -21,6 +21,7 @@ test "integer literal to pointer cast" {
21}21}
2222
23test "peer type resolution: ?T and T" {23test "peer type resolution: ?T and T" {
24 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2627
...@@ -67,6 +68,7 @@ test "implicit cast comptime_int to comptime_float" {...@@ -67,6 +68,7 @@ test "implicit cast comptime_int to comptime_float" {
67}68}
6869
69test "comptime_int @floatFromInt" {70test "comptime_int @floatFromInt" {
71 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
70 {72 {
71 const result = @as(f16, @floatFromInt(1234));73 const result = @as(f16, @floatFromInt(1234));
72 try expect(@TypeOf(result) == f16);74 try expect(@TypeOf(result) == f16);
...@@ -97,6 +99,7 @@ test "comptime_int @floatFromInt" {...@@ -97,6 +99,7 @@ test "comptime_int @floatFromInt" {
97}99}
98100
99test "@floatFromInt" {101test "@floatFromInt" {
102 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -126,7 +129,7 @@ fn testIntFromFloat(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -126,7 +129,7 @@ fn testIntFromFloat(comptime F: type, f: F, comptime I: type, i: I) !void {
126}129}
127130
128test "@intFromFloat > 128 bits" {131test "@intFromFloat > 128 bits" {
129 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;132 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
131 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;134 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
132135
...@@ -151,7 +154,7 @@ fn testFloatFromInt(comptime I: type, i: I, comptime F: type, expected: F) !void...@@ -151,7 +154,7 @@ fn testFloatFromInt(comptime I: type, i: I, comptime F: type, expected: F) !void
151}154}
152155
153test "@floatFromInt > 128 bits" {156test "@floatFromInt > 128 bits" {
154 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;157 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
157160
...@@ -174,7 +177,7 @@ test "@floatFromInt > 128 bits" {...@@ -174,7 +177,7 @@ test "@floatFromInt > 128 bits" {
174test "@floatFromInt(f80)" {177test "@floatFromInt(f80)" {
175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;180 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;181 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;182 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
180183
...@@ -212,7 +215,7 @@ test "@floatFromInt(f80)" {...@@ -212,7 +215,7 @@ test "@floatFromInt(f80)" {
212}215}
213216
214test "type coercion from int to float" {217test "type coercion from int to float" {
215 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;218 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
216219
217 const check = struct {220 const check = struct {
218 // Check that an integer value can be coerced to a float type and221 // Check that an integer value can be coerced to a float type and
...@@ -273,7 +276,7 @@ test "type coercion from int to float" {...@@ -273,7 +276,7 @@ test "type coercion from int to float" {
273}276}
274277
275test "@intFromFloat" {278test "@intFromFloat" {
276 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;279 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO280 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279282
...@@ -303,6 +306,8 @@ fn testIntFromFloats() !void {...@@ -303,6 +306,8 @@ fn testIntFromFloats() !void {
303}306}
304307
305test "rounding builtins with anytype and context propagation" {308test "rounding builtins with anytype and context propagation" {
309 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
310
306 const S = struct {311 const S = struct {
307 const x: i32 = 10;312 const x: i32 = 10;
308 fn check(expected: anytype, actual: anytype) !void {313 fn check(expected: anytype, actual: anytype) !void {
...@@ -338,7 +343,8 @@ fn expectTruncCast(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -338,7 +343,8 @@ fn expectTruncCast(comptime F: type, f: F, comptime I: type, i: I) !void {
338343
339test "implicitly cast indirect pointer to maybe-indirect pointer" {344test "implicitly cast indirect pointer to maybe-indirect pointer" {
340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
341 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;346 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
347
342 const S = struct {348 const S = struct {
343 const Self = @This();349 const Self = @This();
344 x: u8,350 x: u8,
...@@ -372,6 +378,8 @@ test "@intCast comptime_int" {...@@ -372,6 +378,8 @@ test "@intCast comptime_int" {
372}378}
373379
374test "@floatCast comptime_int and comptime_float" {380test "@floatCast comptime_int and comptime_float" {
381 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
382
375 {383 {
376 const result = @as(f16, @floatCast(1234));384 const result = @as(f16, @floatCast(1234));
377 try expect(@TypeOf(result) == f16);385 try expect(@TypeOf(result) == f16);
...@@ -416,7 +424,7 @@ fn MakeType(comptime T: type) type {...@@ -416,7 +424,7 @@ fn MakeType(comptime T: type) type {
416424
417test "implicit cast from *[N]T to [*c]T" {425test "implicit cast from *[N]T to [*c]T" {
418 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;427 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
420428
421 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };429 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
422 var y: [*c]u16 = &x;430 var y: [*c]u16 = &x;
...@@ -451,6 +459,7 @@ test "@intCast to u0 and use the result" {...@@ -451,6 +459,7 @@ test "@intCast to u0 and use the result" {
451}459}
452460
453test "peer result null and comptime_int" {461test "peer result null and comptime_int" {
462 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
456465
...@@ -477,7 +486,7 @@ test "peer result null and comptime_int" {...@@ -477,7 +486,7 @@ test "peer result null and comptime_int" {
477test "*const ?[*]const T to [*c]const [*c]const T" {486test "*const ?[*]const T to [*c]const [*c]const T" {
478 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
479 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;488 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
480 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;489 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
481490
482 var array = [_]u8{ 'o', 'k' };491 var array = [_]u8{ 'o', 'k' };
483 const opt_array_ptr: ?[*]const u8 = &array;492 const opt_array_ptr: ?[*]const u8 = &array;
...@@ -489,7 +498,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {...@@ -489,7 +498,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
489498
490test "array coercion to undefined at runtime" {499test "array coercion to undefined at runtime" {
491 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
492 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;501 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
493502
494 @setRuntimeSafety(true);503 @setRuntimeSafety(true);
495504
...@@ -516,6 +525,7 @@ fn implicitIntLitToOptional() void {...@@ -516,6 +525,7 @@ fn implicitIntLitToOptional() void {
516}525}
517526
518test "return u8 coercing into ?u32 return type" {527test "return u8 coercing into ?u32 return type" {
528 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
519 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
520 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO530 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
521531
...@@ -537,6 +547,7 @@ test "cast from ?[*]T to ??[*]T" {...@@ -537,6 +547,7 @@ test "cast from ?[*]T to ??[*]T" {
537}547}
538548
539test "peer type unsigned int to signed" {549test "peer type unsigned int to signed" {
550 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541552
542 var w: u31 = 5;553 var w: u31 = 5;
...@@ -550,7 +561,7 @@ test "peer type unsigned int to signed" {...@@ -550,7 +561,7 @@ test "peer type unsigned int to signed" {
550561
551test "expected [*c]const u8, found [*:0]const u8" {562test "expected [*c]const u8, found [*:0]const u8" {
552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO563 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;564 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
554565
555 var a: [*:0]const u8 = "hello";566 var a: [*:0]const u8 = "hello";
556 _ = &a;567 _ = &a;
...@@ -562,7 +573,7 @@ test "expected [*c]const u8, found [*:0]const u8" {...@@ -562,7 +573,7 @@ test "expected [*c]const u8, found [*:0]const u8" {
562test "explicit cast from integer to error type" {573test "explicit cast from integer to error type" {
563 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO574 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
564 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
565 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;576 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
566 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;577 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
567578
568 try testCastIntToErr(error.ItBroke);579 try testCastIntToErr(error.ItBroke);
...@@ -577,7 +588,7 @@ fn testCastIntToErr(err: anyerror) !void {...@@ -577,7 +588,7 @@ fn testCastIntToErr(err: anyerror) !void {
577test "peer resolve array and const slice" {588test "peer resolve array and const slice" {
578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
580 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;591 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
581592
582 try testPeerResolveArrayConstSlice(true);593 try testPeerResolveArrayConstSlice(true);
583 try comptime testPeerResolveArrayConstSlice(true);594 try comptime testPeerResolveArrayConstSlice(true);
...@@ -590,7 +601,7 @@ fn testPeerResolveArrayConstSlice(b: bool) !void {...@@ -590,7 +601,7 @@ fn testPeerResolveArrayConstSlice(b: bool) !void {
590}601}
591602
592test "implicitly cast from T to anyerror!?T" {603test "implicitly cast from T to anyerror!?T" {
593 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;604 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;605 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO606 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
596607
...@@ -616,7 +627,7 @@ fn castToOptionalTypeError(z: i32) !void {...@@ -616,7 +627,7 @@ fn castToOptionalTypeError(z: i32) !void {
616}627}
617628
618test "implicitly cast from [0]T to anyerror![]T" {629test "implicitly cast from [0]T to anyerror![]T" {
619 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;630 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
621632
622 try testCastZeroArrayToErrSliceMut();633 try testCastZeroArrayToErrSliceMut();
...@@ -634,7 +645,7 @@ fn gimmeErrOrSlice() anyerror![]u8 {...@@ -634,7 +645,7 @@ fn gimmeErrOrSlice() anyerror![]u8 {
634test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {645test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
635 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
636 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
637 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;648 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
638649
639 const S = struct {650 const S = struct {
640 fn doTheTest() anyerror!void {651 fn doTheTest() anyerror!void {
...@@ -665,7 +676,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {...@@ -665,7 +676,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
665676
666test "implicit cast from *const [N]T to []const T" {677test "implicit cast from *const [N]T to []const T" {
667 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO678 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
668 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;679 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
669680
670 try testCastConstArrayRefToConstSlice();681 try testCastConstArrayRefToConstSlice();
671 try comptime testCastConstArrayRefToConstSlice();682 try comptime testCastConstArrayRefToConstSlice();
...@@ -690,7 +701,7 @@ fn testCastConstArrayRefToConstSlice() !void {...@@ -690,7 +701,7 @@ fn testCastConstArrayRefToConstSlice() !void {
690701
691test "peer type resolution: error and [N]T" {702test "peer type resolution: error and [N]T" {
692 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
693 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;704 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
694705
695 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));706 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
696 comptime assert(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));707 comptime assert(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
...@@ -714,7 +725,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {...@@ -714,7 +725,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
714725
715test "single-item pointer of array to slice to unknown length pointer" {726test "single-item pointer of array to slice to unknown length pointer" {
716 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO727 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;728 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
718729
719 try testCastPtrOfArrayToSliceAndPtr();730 try testCastPtrOfArrayToSliceAndPtr();
720 try comptime testCastPtrOfArrayToSliceAndPtr();731 try comptime testCastPtrOfArrayToSliceAndPtr();
...@@ -743,7 +754,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {...@@ -743,7 +754,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
743754
744test "cast *[1][*]const u8 to [*]const ?[*]const u8" {755test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
745 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
746 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;757 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
747758
748 const window_name = [1][*]const u8{"window name"};759 const window_name = [1][*]const u8{"window name"};
749 const x: [*]const ?[*]const u8 = &window_name;760 const x: [*]const ?[*]const u8 = &window_name;
...@@ -755,7 +766,7 @@ test "@intCast on vector" {...@@ -755,7 +766,7 @@ test "@intCast on vector" {
755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
756 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;768 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
758 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;769 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
759 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;770 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
760771
761 const S = struct {772 const S = struct {
...@@ -1027,7 +1038,7 @@ test "peer cast: error set any anyerror" {...@@ -1027,7 +1038,7 @@ test "peer cast: error set any anyerror" {
1027test "peer type resolution: error set supersets" {1038test "peer type resolution: error set supersets" {
1028 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1039 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1029 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1030 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1041 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10311042
1032 const a: error{ One, Two } = undefined;1043 const a: error{ One, Two } = undefined;
1033 const b: error{One} = undefined;1044 const b: error{One} = undefined;
...@@ -1056,7 +1067,7 @@ test "peer type resolution: error set supersets" {...@@ -1056,7 +1067,7 @@ test "peer type resolution: error set supersets" {
1056test "peer type resolution: disjoint error sets" {1067test "peer type resolution: disjoint error sets" {
1057 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1068 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1058 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1069 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1059 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1070 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10601071
1061 const a: error{ One, Two } = undefined;1072 const a: error{ One, Two } = undefined;
1062 const b: error{Three} = undefined;1073 const b: error{Three} = undefined;
...@@ -1085,7 +1096,7 @@ test "peer type resolution: disjoint error sets" {...@@ -1085,7 +1096,7 @@ test "peer type resolution: disjoint error sets" {
1085test "peer type resolution: error union and error set" {1096test "peer type resolution: error union and error set" {
1086 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1097 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1087 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1098 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1088 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1099 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10891100
1090 const a: error{Three} = undefined;1101 const a: error{Three} = undefined;
1091 const b: error{ One, Two }!u32 = undefined;1102 const b: error{ One, Two }!u32 = undefined;
...@@ -1118,7 +1129,7 @@ test "peer type resolution: error union and error set" {...@@ -1118,7 +1129,7 @@ test "peer type resolution: error union and error set" {
1118test "peer type resolution: error union after non-error" {1129test "peer type resolution: error union after non-error" {
1119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1121 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1132 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11221133
1123 const a: u32 = undefined;1134 const a: u32 = undefined;
1124 const b: error{ One, Two }!u32 = undefined;1135 const b: error{ One, Two }!u32 = undefined;
...@@ -1151,7 +1162,7 @@ test "peer type resolution: error union after non-error" {...@@ -1151,7 +1162,7 @@ test "peer type resolution: error union after non-error" {
1151test "peer cast *[0]T to E![]const T" {1162test "peer cast *[0]T to E![]const T" {
1152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1154 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1165 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11551166
1156 var buffer: [5]u8 = "abcde".*;1167 var buffer: [5]u8 = "abcde".*;
1157 const buf: anyerror![]const u8 = buffer[0..];1168 const buf: anyerror![]const u8 = buffer[0..];
...@@ -1166,7 +1177,7 @@ test "peer cast *[0]T to E![]const T" {...@@ -1166,7 +1177,7 @@ test "peer cast *[0]T to E![]const T" {
1166test "peer cast *[0]T to []const T" {1177test "peer cast *[0]T to []const T" {
1167 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1169 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1180 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11701181
1171 var buffer: [5]u8 = "abcde".*;1182 var buffer: [5]u8 = "abcde".*;
1172 const buf: []const u8 = buffer[0..];1183 const buf: []const u8 = buffer[0..];
...@@ -1177,6 +1188,7 @@ test "peer cast *[0]T to []const T" {...@@ -1177,6 +1188,7 @@ test "peer cast *[0]T to []const T" {
1177}1188}
11781189
1179test "peer cast *[N]T to [*]T" {1190test "peer cast *[N]T to [*]T" {
1191 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11811193
1182 var array = [4:99]i32{ 1, 2, 3, 4 };1194 var array = [4:99]i32{ 1, 2, 3, 4 };
...@@ -1189,7 +1201,7 @@ test "peer cast *[N]T to [*]T" {...@@ -1189,7 +1201,7 @@ test "peer cast *[N]T to [*]T" {
1189test "peer resolution of string literals" {1201test "peer resolution of string literals" {
1190 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1192 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1204 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11931205
1194 const S = struct {1206 const S = struct {
1195 const E = enum { a, b, c, d };1207 const E = enum { a, b, c, d };
...@@ -1210,7 +1222,7 @@ test "peer resolution of string literals" {...@@ -1210,7 +1222,7 @@ test "peer resolution of string literals" {
12101222
1211test "peer cast [:x]T to []T" {1223test "peer cast [:x]T to []T" {
1212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1225 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12141226
1215 const S = struct {1227 const S = struct {
1216 fn doTheTest() !void {1228 fn doTheTest() !void {
...@@ -1226,7 +1238,7 @@ test "peer cast [:x]T to []T" {...@@ -1226,7 +1238,7 @@ test "peer cast [:x]T to []T" {
12261238
1227test "peer cast [N:x]T to [N]T" {1239test "peer cast [N:x]T to [N]T" {
1228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1229 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1241 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12301242
1231 const S = struct {1243 const S = struct {
1232 fn doTheTest() !void {1244 fn doTheTest() !void {
...@@ -1242,7 +1254,7 @@ test "peer cast [N:x]T to [N]T" {...@@ -1242,7 +1254,7 @@ test "peer cast [N:x]T to [N]T" {
12421254
1243test "peer cast *[N:x]T to *[N]T" {1255test "peer cast *[N:x]T to *[N]T" {
1244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1256 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1245 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1257 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12461258
1247 const S = struct {1259 const S = struct {
1248 fn doTheTest() !void {1260 fn doTheTest() !void {
...@@ -1258,7 +1270,7 @@ test "peer cast *[N:x]T to *[N]T" {...@@ -1258,7 +1270,7 @@ test "peer cast *[N:x]T to *[N]T" {
1258test "peer cast [*:x]T to [*]T" {1270test "peer cast [*:x]T to [*]T" {
1259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1271 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1260 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1272 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1261 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1273 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12621274
1263 const S = struct {1275 const S = struct {
1264 fn doTheTest() !void {1276 fn doTheTest() !void {
...@@ -1278,7 +1290,7 @@ test "peer cast [*:x]T to [*]T" {...@@ -1278,7 +1290,7 @@ test "peer cast [*:x]T to [*]T" {
1278test "peer cast [:x]T to [*:x]T" {1290test "peer cast [:x]T to [*:x]T" {
1279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1280 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1281 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1293 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12821294
1283 const S = struct {1295 const S = struct {
1284 fn doTheTest() !void {1296 fn doTheTest() !void {
...@@ -1298,7 +1310,7 @@ test "peer cast [:x]T to [*:x]T" {...@@ -1298,7 +1310,7 @@ test "peer cast [:x]T to [*:x]T" {
12981310
1299test "peer type resolution implicit cast to return type" {1311test "peer type resolution implicit cast to return type" {
1300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1301 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1313 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13021314
1303 const S = struct {1315 const S = struct {
1304 fn doTheTest() !void {1316 fn doTheTest() !void {
...@@ -1318,7 +1330,7 @@ test "peer type resolution implicit cast to return type" {...@@ -1318,7 +1330,7 @@ test "peer type resolution implicit cast to return type" {
13181330
1319test "peer type resolution implicit cast to variable type" {1331test "peer type resolution implicit cast to variable type" {
1320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1321 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1333 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13221334
1323 const S = struct {1335 const S = struct {
1324 fn doTheTest() !void {1336 fn doTheTest() !void {
...@@ -1343,7 +1355,7 @@ test "variable initialization uses result locations properly with regards to the...@@ -1343,7 +1355,7 @@ test "variable initialization uses result locations properly with regards to the
13431355
1344test "cast between C pointer with different but compatible types" {1356test "cast between C pointer with different but compatible types" {
1345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1357 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1346 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1358 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13471359
1348 const S = struct {1360 const S = struct {
1349 fn foo(arg: [*]c_ushort) u16 {1361 fn foo(arg: [*]c_ushort) u16 {
...@@ -1360,7 +1372,7 @@ test "cast between C pointer with different but compatible types" {...@@ -1360,7 +1372,7 @@ test "cast between C pointer with different but compatible types" {
13601372
1361test "peer type resolve string lit with sentinel-terminated mutable slice" {1373test "peer type resolve string lit with sentinel-terminated mutable slice" {
1362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1363 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1375 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13641376
1365 var array: [4:0]u8 = undefined;1377 var array: [4:0]u8 = undefined;
1366 array[4] = 0; // TODO remove this when #4372 is solved1378 array[4] = 0; // TODO remove this when #4372 is solved
...@@ -1370,6 +1382,8 @@ test "peer type resolve string lit with sentinel-terminated mutable slice" {...@@ -1370,6 +1382,8 @@ test "peer type resolve string lit with sentinel-terminated mutable slice" {
1370}1382}
13711383
1372test "peer type resolve array pointers, one of them const" {1384test "peer type resolve array pointers, one of them const" {
1385 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1386
1373 var array1: [4]u8 = undefined;1387 var array1: [4]u8 = undefined;
1374 const array2: [5]u8 = undefined;1388 const array2: [5]u8 = undefined;
1375 comptime assert(@TypeOf(&array1, &array2) == []const u8);1389 comptime assert(@TypeOf(&array1, &array2) == []const u8);
...@@ -1377,6 +1391,8 @@ test "peer type resolve array pointers, one of them const" {...@@ -1377,6 +1391,8 @@ test "peer type resolve array pointers, one of them const" {
1377}1391}
13781392
1379test "peer type resolve array pointer and unknown pointer" {1393test "peer type resolve array pointer and unknown pointer" {
1394 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1395
1380 const const_array: [4]u8 = undefined;1396 const const_array: [4]u8 = undefined;
1381 var array: [4]u8 = undefined;1397 var array: [4]u8 = undefined;
1382 var const_ptr: [*]const u8 = undefined;1398 var const_ptr: [*]const u8 = undefined;
...@@ -1397,6 +1413,8 @@ test "peer type resolve array pointer and unknown pointer" {...@@ -1397,6 +1413,8 @@ test "peer type resolve array pointer and unknown pointer" {
1397}1413}
13981414
1399test "comptime float casts" {1415test "comptime float casts" {
1416 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1417
1400 const a = @as(comptime_float, @floatFromInt(1));1418 const a = @as(comptime_float, @floatFromInt(1));
1401 try expect(a == 1);1419 try expect(a == 1);
1402 try expect(@TypeOf(a) == comptime_float);1420 try expect(@TypeOf(a) == comptime_float);
...@@ -1431,7 +1449,7 @@ test "pointer reinterpret const float to int" {...@@ -1431,7 +1449,7 @@ test "pointer reinterpret const float to int" {
1431test "implicit cast from [*]T to ?*anyopaque" {1449test "implicit cast from [*]T to ?*anyopaque" {
1432 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1450 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1451 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1434 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1452 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14351453
1436 var a = [_]u8{ 3, 2, 1 };1454 var a = [_]u8{ 3, 2, 1 };
1437 var runtime_zero: usize = 0;1455 var runtime_zero: usize = 0;
...@@ -1448,7 +1466,7 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {...@@ -1448,7 +1466,7 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
1448}1466}
14491467
1450test "compile time int to ptr of function" {1468test "compile time int to ptr of function" {
1451 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1469 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14521470
1453 try foobar(FUNCTION_CONSTANT);1471 try foobar(FUNCTION_CONSTANT);
1454}1472}
...@@ -1463,7 +1481,7 @@ fn foobar(func: PFN_void) !void {...@@ -1463,7 +1481,7 @@ fn foobar(func: PFN_void) !void {
1463}1481}
14641482
1465test "cast function with an opaque parameter" {1483test "cast function with an opaque parameter" {
1466 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1484 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14671485
1468 const Container = struct {1486 const Container = struct {
1469 const Ctx = opaque {};1487 const Ctx = opaque {};
...@@ -1490,7 +1508,7 @@ test "cast function with an opaque parameter" {...@@ -1490,7 +1508,7 @@ test "cast function with an opaque parameter" {
1490test "implicit ptr to *anyopaque" {1508test "implicit ptr to *anyopaque" {
1491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1509 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1493 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1511 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14941512
1495 var a: u32 = 1;1513 var a: u32 = 1;
1496 const ptr: *align(@alignOf(u32)) anyopaque = &a;1514 const ptr: *align(@alignOf(u32)) anyopaque = &a;
...@@ -1503,7 +1521,7 @@ test "implicit ptr to *anyopaque" {...@@ -1503,7 +1521,7 @@ test "implicit ptr to *anyopaque" {
15031521
1504test "return null from fn () anyerror!?&T" {1522test "return null from fn () anyerror!?&T" {
1505 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1523 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1506 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1524 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15071525
1508 const a = returnNullFromOptionalTypeErrorRef();1526 const a = returnNullFromOptionalTypeErrorRef();
1509 const b = returnNullLitFromOptionalTypeErrorRef();1527 const b = returnNullLitFromOptionalTypeErrorRef();
...@@ -1520,7 +1538,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {...@@ -1520,7 +1538,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
1520test "peer type resolution: [0]u8 and []const u8" {1538test "peer type resolution: [0]u8 and []const u8" {
1521 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1540 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1523 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1541 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15241542
1525 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);1543 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
1526 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);1544 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
...@@ -1540,7 +1558,7 @@ fn peerTypeEmptyArrayAndSlice(a: bool, slice: []const u8) []const u8 {...@@ -1540,7 +1558,7 @@ fn peerTypeEmptyArrayAndSlice(a: bool, slice: []const u8) []const u8 {
1540test "implicitly cast from [N]T to ?[]const T" {1558test "implicitly cast from [N]T to ?[]const T" {
1541 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1559 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1543 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1561 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15441562
1545 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));1563 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
1546 comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));1564 comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));
...@@ -1553,7 +1571,7 @@ fn castToOptionalSlice() ?[]const u8 {...@@ -1553,7 +1571,7 @@ fn castToOptionalSlice() ?[]const u8 {
1553test "cast u128 to f128 and back" {1571test "cast u128 to f128 and back" {
1554 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1556 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1574 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1557 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1575 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15581576
1559 try comptime testCast128();1577 try comptime testCast128();
...@@ -1576,7 +1594,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -1576,7 +1594,7 @@ test "implicit cast from *[N]T to ?[*]T" {
1576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1577 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1578 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1596 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1579 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1597 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15801598
1581 var x: ?[*]u16 = null;1599 var x: ?[*]u16 = null;
1582 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };1600 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
...@@ -1591,7 +1609,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -1591,7 +1609,7 @@ test "implicit cast from *[N]T to ?[*]T" {
1591test "implicit cast from *T to ?*anyopaque" {1609test "implicit cast from *T to ?*anyopaque" {
1592 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1610 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1593 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1611 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1594 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1612 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15951613
1596 var a: u8 = 1;1614 var a: u8 = 1;
1597 incrementVoidPtrValue(&a);1615 incrementVoidPtrValue(&a);
...@@ -1603,7 +1621,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {...@@ -1603,7 +1621,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
1603}1621}
16041622
1605test "implicit cast *[0]T to E![]const u8" {1623test "implicit cast *[0]T to E![]const u8" {
1606 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1624 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1607 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16081626
1609 var x = @as(anyerror![]const u8, &[0]u8{});1627 var x = @as(anyerror![]const u8, &[0]u8{});
...@@ -1613,13 +1631,13 @@ test "implicit cast *[0]T to E![]const u8" {...@@ -1613,13 +1631,13 @@ test "implicit cast *[0]T to E![]const u8" {
16131631
1614var global_array: [4]u8 = undefined;1632var global_array: [4]u8 = undefined;
1615test "cast from array reference to fn: comptime fn ptr" {1633test "cast from array reference to fn: comptime fn ptr" {
1616 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1634 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16171635
1618 const f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));1636 const f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
1619 try expect(@intFromPtr(f) == @intFromPtr(&global_array));1637 try expect(@intFromPtr(f) == @intFromPtr(&global_array));
1620}1638}
1621test "cast from array reference to fn: runtime fn ptr" {1639test "cast from array reference to fn: runtime fn ptr" {
1622 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1640 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16231641
1624 var f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));1642 var f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
1625 _ = &f;1643 _ = &f;
...@@ -1629,7 +1647,7 @@ test "cast from array reference to fn: runtime fn ptr" {...@@ -1629,7 +1647,7 @@ test "cast from array reference to fn: runtime fn ptr" {
1629test "*const [N]null u8 to ?[]const u8" {1647test "*const [N]null u8 to ?[]const u8" {
1630 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1632 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1650 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16331651
1634 const S = struct {1652 const S = struct {
1635 fn doTheTest() !void {1653 fn doTheTest() !void {
...@@ -1646,7 +1664,7 @@ test "*const [N]null u8 to ?[]const u8" {...@@ -1646,7 +1664,7 @@ test "*const [N]null u8 to ?[]const u8" {
1646test "comptime @ptrCast to optional slice" {1664test "comptime @ptrCast to optional slice" {
1647 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1665 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1648 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1649 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1667 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16501668
1651 const result: ?[]const u8 = comptime blk: {1669 const result: ?[]const u8 = comptime blk: {
1652 const slice: []const u8 = "123";1670 const slice: []const u8 = "123";
...@@ -1679,7 +1697,7 @@ var global_struct: struct { f0: usize } = undefined;...@@ -1679,7 +1697,7 @@ var global_struct: struct { f0: usize } = undefined;
1679test "assignment to optional pointer result loc" {1697test "assignment to optional pointer result loc" {
1680 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1698 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1681 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1682 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1700 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16831701
1684 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };1702 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
1685 _ = &foo;1703 _ = &foo;
...@@ -1687,7 +1705,7 @@ test "assignment to optional pointer result loc" {...@@ -1687,7 +1705,7 @@ test "assignment to optional pointer result loc" {
1687}1705}
16881706
1689test "cast between *[N]void and []void" {1707test "cast between *[N]void and []void" {
1690 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1708 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16911709
1692 var a: [4]void = undefined;1710 var a: [4]void = undefined;
1693 const b: []void = &a;1711 const b: []void = &a;
...@@ -1696,7 +1714,7 @@ test "cast between *[N]void and []void" {...@@ -1696,7 +1714,7 @@ test "cast between *[N]void and []void" {
16961714
1697test "peer resolve arrays of different size to const slice" {1715test "peer resolve arrays of different size to const slice" {
1698 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1716 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1699 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1717 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17001718
1701 try expect(mem.eql(u8, boolToStr(true), "true"));1719 try expect(mem.eql(u8, boolToStr(true), "true"));
1702 try expect(mem.eql(u8, boolToStr(false), "false"));1720 try expect(mem.eql(u8, boolToStr(false), "false"));
...@@ -1710,7 +1728,7 @@ fn boolToStr(b: bool) []const u8 {...@@ -1710,7 +1728,7 @@ fn boolToStr(b: bool) []const u8 {
1710test "cast f16 to wider types" {1728test "cast f16 to wider types" {
1711 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1729 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1712 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1730 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1713 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1731 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1714 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1732 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
17151733
1716 const S = struct {1734 const S = struct {
...@@ -1729,7 +1747,7 @@ test "cast f16 to wider types" {...@@ -1729,7 +1747,7 @@ test "cast f16 to wider types" {
1729test "cast f128 to narrower types" {1747test "cast f128 to narrower types" {
1730 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1731 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1749 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1732 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1750 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1733 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1751 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
17341752
1735 const S = struct {1753 const S = struct {
...@@ -1748,7 +1766,7 @@ test "cast f128 to narrower types" {...@@ -1748,7 +1766,7 @@ test "cast f128 to narrower types" {
1748test "peer type resolution: unreachable, null, slice" {1766test "peer type resolution: unreachable, null, slice" {
1749 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1767 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1751 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1769 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17521770
1753 const S = struct {1771 const S = struct {
1754 fn doTheTest(num: usize, word: []const u8) !void {1772 fn doTheTest(num: usize, word: []const u8) !void {
...@@ -1787,7 +1805,7 @@ test "cast i8 fn call peers to i32 result" {...@@ -1787,7 +1805,7 @@ test "cast i8 fn call peers to i32 result" {
1787test "cast compatible optional types" {1805test "cast compatible optional types" {
1788 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1806 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1789 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1790 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1808 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17911809
1792 var a: ?[:0]const u8 = null;1810 var a: ?[:0]const u8 = null;
1793 _ = &a;1811 _ = &a;
...@@ -1797,7 +1815,7 @@ test "cast compatible optional types" {...@@ -1797,7 +1815,7 @@ test "cast compatible optional types" {
17971815
1798test "coerce undefined single-item pointer of array to error union of slice" {1816test "coerce undefined single-item pointer of array to error union of slice" {
1799 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1817 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1800 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1818 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18011819
1802 const a = @as([*]u8, undefined)[0..0];1820 const a = @as([*]u8, undefined)[0..0];
1803 var b: error{a}![]const u8 = a;1821 var b: error{a}![]const u8 = a;
...@@ -1807,7 +1825,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {...@@ -1807,7 +1825,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {
1807}1825}
18081826
1809test "pointer to empty struct literal to mutable slice" {1827test "pointer to empty struct literal to mutable slice" {
1810 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1828 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1811 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1829 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18121830
1813 var x: []i32 = &.{};1831 var x: []i32 = &.{};
...@@ -1818,7 +1836,7 @@ test "pointer to empty struct literal to mutable slice" {...@@ -1818,7 +1836,7 @@ test "pointer to empty struct literal to mutable slice" {
1818test "coerce between pointers of compatible differently-named floats" {1836test "coerce between pointers of compatible differently-named floats" {
1819 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1837 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1820 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1838 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1821 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1839 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1822 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1840 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
18231841
1824 const F = switch (@typeInfo(c_longdouble).float.bits) {1842 const F = switch (@typeInfo(c_longdouble).float.bits) {
...@@ -1878,6 +1896,8 @@ test "cast typed undefined to int" {...@@ -1878,6 +1896,8 @@ test "cast typed undefined to int" {
1878// }1896// }
18791897
1880test "bitcast packed struct with u0" {1898test "bitcast packed struct with u0" {
1899 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1900
1881 const S = packed struct(u2) { a: u0, b: u2 };1901 const S = packed struct(u2) { a: u0, b: u2 };
1882 const s = @as(S, @bitCast(@as(u2, 2)));1902 const s = @as(S, @bitCast(@as(u2, 2)));
1883 try expect(s.a == 0);1903 try expect(s.a == 0);
...@@ -1888,7 +1908,7 @@ test "bitcast packed struct with u0" {...@@ -1888,7 +1908,7 @@ test "bitcast packed struct with u0" {
18881908
1889test "optional pointer coerced to optional allowzero pointer" {1909test "optional pointer coerced to optional allowzero pointer" {
1890 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1910 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1891 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1911 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18921912
1893 var p: ?*u32 = undefined;1913 var p: ?*u32 = undefined;
1894 var q: ?*allowzero u32 = undefined;1914 var q: ?*allowzero u32 = undefined;
...@@ -1905,7 +1925,7 @@ test "optional slice coerced to allowzero many pointer" {...@@ -1905,7 +1925,7 @@ test "optional slice coerced to allowzero many pointer" {
1905}1925}
19061926
1907test "optional slice passed as parameter coerced to allowzero many pointer" {1927test "optional slice passed as parameter coerced to allowzero many pointer" {
1908 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1928 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19091929
1910 const ns = struct {1930 const ns = struct {
1911 const Color = struct {1931 const Color = struct {
...@@ -1926,7 +1946,7 @@ test "optional slice passed as parameter coerced to allowzero many pointer" {...@@ -1926,7 +1946,7 @@ test "optional slice passed as parameter coerced to allowzero many pointer" {
1926}1946}
19271947
1928test "single item pointer to pointer to array to slice" {1948test "single item pointer to pointer to array to slice" {
1929 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1949 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19301950
1931 var x: i32 = 1234;1951 var x: i32 = 1234;
1932 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);1952 try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
...@@ -1936,7 +1956,7 @@ test "single item pointer to pointer to array to slice" {...@@ -1936,7 +1956,7 @@ test "single item pointer to pointer to array to slice" {
19361956
1937test "peer type resolution forms error union" {1957test "peer type resolution forms error union" {
1938 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1958 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1939 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1959 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19401960
1941 var foo: i32 = 123;1961 var foo: i32 = 123;
1942 _ = &foo;1962 _ = &foo;
...@@ -1971,7 +1991,7 @@ test "@volatileCast without a result location" {...@@ -1971,7 +1991,7 @@ test "@volatileCast without a result location" {
1971}1991}
19721992
1973test "coercion from single-item pointer to @as to slice" {1993test "coercion from single-item pointer to @as to slice" {
1974 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1994 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19751995
1976 var x: u32 = 1;1996 var x: u32 = 1;
19771997
...@@ -1984,7 +2004,7 @@ test "coercion from single-item pointer to @as to slice" {...@@ -1984,7 +2004,7 @@ test "coercion from single-item pointer to @as to slice" {
1984test "peer type resolution: const sentinel slice and mutable non-sentinel slice" {2004test "peer type resolution: const sentinel slice and mutable non-sentinel slice" {
1985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2005 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1986 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2006 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1987 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2007 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19882008
1989 const S = struct {2009 const S = struct {
1990 fn doTheTest(comptime T: type, comptime s: T) !void {2010 fn doTheTest(comptime T: type, comptime s: T) !void {
...@@ -2011,6 +2031,7 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"...@@ -2011,6 +2031,7 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"
2011}2031}
20122032
2013test "peer type resolution: float and comptime-known fixed-width integer" {2033test "peer type resolution: float and comptime-known fixed-width integer" {
2034 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2035 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2036 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20162037
...@@ -2032,7 +2053,7 @@ test "peer type resolution: float and comptime-known fixed-width integer" {...@@ -2032,7 +2053,7 @@ test "peer type resolution: float and comptime-known fixed-width integer" {
2032}2053}
20332054
2034test "peer type resolution: float and runtime-known fixed-width integer" {2055test "peer type resolution: float and runtime-known fixed-width integer" {
2035 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2056 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2036 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2057 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2058 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20382059
...@@ -2077,7 +2098,7 @@ test "peer type resolution: same array type with sentinel" {...@@ -2077,7 +2098,7 @@ test "peer type resolution: same array type with sentinel" {
2077 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2098 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2078 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2099 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2079 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2080 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2101 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
20812102
2082 var a: [2:0]u32 = .{ 0, 1 };2103 var a: [2:0]u32 = .{ 0, 1 };
2083 var b: [2:0]u32 = .{ 2, 3 };2104 var b: [2:0]u32 = .{ 2, 3 };
...@@ -2099,7 +2120,7 @@ test "peer type resolution: same array type with sentinel" {...@@ -2099,7 +2120,7 @@ test "peer type resolution: same array type with sentinel" {
2099test "peer type resolution: array with sentinel and array without sentinel" {2120test "peer type resolution: array with sentinel and array without sentinel" {
2100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2102 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2123 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
21032124
2104 var a: [2:0]u32 = .{ 0, 1 };2125 var a: [2:0]u32 = .{ 0, 1 };
2105 var b: [2]u32 = .{ 2, 3 };2126 var b: [2]u32 = .{ 2, 3 };
...@@ -2122,7 +2143,7 @@ test "peer type resolution: array and vector with same child type" {...@@ -2122,7 +2143,7 @@ test "peer type resolution: array and vector with same child type" {
2122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2123 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2125 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2126 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO2147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
21272148
2128 var arr: [2]u32 = .{ 0, 1 };2149 var arr: [2]u32 = .{ 0, 1 };
...@@ -2143,7 +2164,7 @@ test "peer type resolution: array and vector with same child type" {...@@ -2143,7 +2164,7 @@ test "peer type resolution: array and vector with same child type" {
2143}2164}
21442165
2145test "peer type resolution: array with smaller child type and vector with larger child type" {2166test "peer type resolution: array with smaller child type and vector with larger child type" {
2146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2167 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2168 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2170,7 +2191,7 @@ test "peer type resolution: error union and optional of same type" {...@@ -2170,7 +2191,7 @@ test "peer type resolution: error union and optional of same type" {
2170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2191 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2172 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2173 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2194 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
21742195
2175 const E = error{Foo};2196 const E = error{Foo};
2176 var a: E!*u8 = error.Foo;2197 var a: E!*u8 = error.Foo;
...@@ -2193,7 +2214,7 @@ test "peer type resolution: error union and optional of same type" {...@@ -2193,7 +2214,7 @@ test "peer type resolution: error union and optional of same type" {
2193test "peer type resolution: C pointer and @TypeOf(null)" {2214test "peer type resolution: C pointer and @TypeOf(null)" {
2194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2196 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2217 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
21972218
2198 var a: [*c]c_int = 0x1000;2219 var a: [*c]c_int = 0x1000;
2199 _ = &a;2220 _ = &a;
...@@ -2215,7 +2236,7 @@ test "peer type resolution: C pointer and @TypeOf(null)" {...@@ -2215,7 +2236,7 @@ test "peer type resolution: C pointer and @TypeOf(null)" {
2215test "peer type resolution: three-way resolution combines error set and optional" {2236test "peer type resolution: three-way resolution combines error set and optional" {
2216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2218 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2239 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
22192240
2220 const E = error{Foo};2241 const E = error{Foo};
2221 var a: E = error.Foo;2242 var a: E = error.Foo;
...@@ -2258,7 +2279,7 @@ test "peer type resolution: vector and optional vector" {...@@ -2258,7 +2279,7 @@ test "peer type resolution: vector and optional vector" {
2258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2279 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2280 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2261 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO2282 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
2262 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO2283 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
22632284
2264 var a: ?@Vector(3, u32) = .{ 0, 1, 2 };2285 var a: ?@Vector(3, u32) = .{ 0, 1, 2 };
...@@ -2279,6 +2300,7 @@ test "peer type resolution: vector and optional vector" {...@@ -2279,6 +2300,7 @@ test "peer type resolution: vector and optional vector" {
2279}2300}
22802301
2281test "peer type resolution: optional fixed-width int and comptime_int" {2302test "peer type resolution: optional fixed-width int and comptime_int" {
2303 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2283 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22842306
...@@ -2303,7 +2325,7 @@ test "peer type resolution: array and tuple" {...@@ -2303,7 +2325,7 @@ test "peer type resolution: array and tuple" {
2303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2325 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2327 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2328 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
23072329
2308 var arr: [3]i32 = .{ 1, 2, 3 };2330 var arr: [3]i32 = .{ 1, 2, 3 };
2309 _ = &arr;2331 _ = &arr;
...@@ -2324,7 +2346,7 @@ test "peer type resolution: array and tuple" {...@@ -2324,7 +2346,7 @@ test "peer type resolution: array and tuple" {
2324}2346}
23252347
2326test "peer type resolution: vector and tuple" {2348test "peer type resolution: vector and tuple" {
2327 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2349 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2351 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2330 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2351,7 +2373,7 @@ test "peer type resolution: vector and array and tuple" {...@@ -2351,7 +2373,7 @@ test "peer type resolution: vector and array and tuple" {
2351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2354 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2376 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
23552377
2356 var vec: @Vector(2, i8) = .{ 10, 20 };2378 var vec: @Vector(2, i8) = .{ 10, 20 };
2357 var arr: [2]i8 = .{ 30, 40 };2379 var arr: [2]i8 = .{ 30, 40 };
...@@ -2393,7 +2415,7 @@ test "peer type resolution: vector and array and tuple" {...@@ -2393,7 +2415,7 @@ test "peer type resolution: vector and array and tuple" {
2393test "peer type resolution: empty tuple pointer and slice" {2415test "peer type resolution: empty tuple pointer and slice" {
2394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2396 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2418 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
23972419
2398 var a: [:0]const u8 = "Hello";2420 var a: [:0]const u8 = "Hello";
2399 var b = &.{};2421 var b = &.{};
...@@ -2414,7 +2436,7 @@ test "peer type resolution: empty tuple pointer and slice" {...@@ -2414,7 +2436,7 @@ test "peer type resolution: empty tuple pointer and slice" {
2414test "peer type resolution: tuple pointer and slice" {2436test "peer type resolution: tuple pointer and slice" {
2415 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2416 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2417 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2439 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
24182440
2419 var a: [:0]const u8 = "Hello";2441 var a: [:0]const u8 = "Hello";
2420 var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };2442 var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };
...@@ -2436,7 +2458,7 @@ test "peer type resolution: tuple pointer and optional slice" {...@@ -2436,7 +2458,7 @@ test "peer type resolution: tuple pointer and optional slice" {
2436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2438 // Miscompilation on Intel's OpenCL CPU runtime.2460 // Miscompilation on Intel's OpenCL CPU runtime.
2439 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky2461 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // flaky
24402462
2441 var a: ?[:0]const u8 = null;2463 var a: ?[:0]const u8 = null;
2442 var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };2464 var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };
...@@ -2457,7 +2479,7 @@ test "peer type resolution: tuple pointer and optional slice" {...@@ -2457,7 +2479,7 @@ test "peer type resolution: tuple pointer and optional slice" {
2457test "peer type resolution: many compatible pointers" {2479test "peer type resolution: many compatible pointers" {
2458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2481 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2460 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2482 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
24612483
2462 var buf = "foo-3".*;2484 var buf = "foo-3".*;
24632485
...@@ -2521,6 +2543,7 @@ test "peer type resolution: many compatible pointers" {...@@ -2521,6 +2543,7 @@ test "peer type resolution: many compatible pointers" {
2521}2543}
25222544
2523test "peer type resolution: tuples with comptime fields" {2545test "peer type resolution: tuples with comptime fields" {
2546 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2547 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2548 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
25262549
...@@ -2553,7 +2576,7 @@ test "peer type resolution: tuples with comptime fields" {...@@ -2553,7 +2576,7 @@ test "peer type resolution: tuples with comptime fields" {
2553test "peer type resolution: C pointer and many pointer" {2576test "peer type resolution: C pointer and many pointer" {
2554 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2556 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2579 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
25572580
2558 var buf = "hello".*;2581 var buf = "hello".*;
25592582
...@@ -2576,7 +2599,7 @@ test "peer type resolution: C pointer and many pointer" {...@@ -2576,7 +2599,7 @@ test "peer type resolution: C pointer and many pointer" {
2576test "peer type resolution: pointer attributes are combined correctly" {2599test "peer type resolution: pointer attributes are combined correctly" {
2577 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2600 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2601 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2579 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2602 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
25802603
2581 var buf_a align(4) = "foo".*;2604 var buf_a align(4) = "foo".*;
2582 var buf_b align(4) = "bar".*;2605 var buf_b align(4) = "bar".*;
...@@ -2663,7 +2686,7 @@ test "peer type resolution: arrays of compatible types" {...@@ -2663,7 +2686,7 @@ test "peer type resolution: arrays of compatible types" {
2663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2686 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2687 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2665 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2666 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2689 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
26672690
2668 var e0: u8 = 3;2691 var e0: u8 = 3;
2669 var e1: u8 = 2;2692 var e1: u8 = 2;
...@@ -2680,7 +2703,7 @@ test "peer type resolution: arrays of compatible types" {...@@ -2680,7 +2703,7 @@ test "peer type resolution: arrays of compatible types" {
2680test "cast builtins can wrap result in optional" {2703test "cast builtins can wrap result in optional" {
2681 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2704 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2683 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2706 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
26842707
2685 const S = struct {2708 const S = struct {
2686 const MyEnum = enum(u32) { _ };2709 const MyEnum = enum(u32) { _ };
...@@ -2715,7 +2738,7 @@ test "cast builtins can wrap result in optional" {...@@ -2715,7 +2738,7 @@ test "cast builtins can wrap result in optional" {
2715}2738}
27162739
2717test "cast builtins can wrap result in error union" {2740test "cast builtins can wrap result in error union" {
2718 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2741 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2719 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2742 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2743 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27212744
...@@ -2755,7 +2778,7 @@ test "cast builtins can wrap result in error union" {...@@ -2755,7 +2778,7 @@ test "cast builtins can wrap result in error union" {
2755test "cast builtins can wrap result in error union and optional" {2778test "cast builtins can wrap result in error union and optional" {
2756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2779 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2780 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2758 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2781 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
27592782
2760 const S = struct {2783 const S = struct {
2761 const MyEnum = enum(u32) { _ };2784 const MyEnum = enum(u32) { _ };
...@@ -2791,7 +2814,7 @@ test "cast builtins can wrap result in error union and optional" {...@@ -2791,7 +2814,7 @@ test "cast builtins can wrap result in error union and optional" {
2791}2814}
27922815
2793test "@floatCast on vector" {2816test "@floatCast on vector" {
2794 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2817 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2795 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2796 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2819 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2797 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2820 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2836,7 +2859,7 @@ test "@ptrFromInt on vector" {...@@ -2836,7 +2859,7 @@ test "@ptrFromInt on vector" {
2836 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2837 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2860 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2838 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2861 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2839 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2862 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
28402863
2841 const S = struct {2864 const S = struct {
2842 fn doTheTest() !void {2865 fn doTheTest() !void {
...@@ -2860,7 +2883,7 @@ test "@intFromPtr on vector" {...@@ -2860,7 +2883,7 @@ test "@intFromPtr on vector" {
2860 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2861 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2884 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2862 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2885 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2863 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2886 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
28642887
2865 const S = struct {2888 const S = struct {
2866 fn doTheTest() !void {2889 fn doTheTest() !void {
...@@ -2880,7 +2903,7 @@ test "@intFromPtr on vector" {...@@ -2880,7 +2903,7 @@ test "@intFromPtr on vector" {
2880}2903}
28812904
2882test "@floatFromInt on vector" {2905test "@floatFromInt on vector" {
2883 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2906 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2907 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2885 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2908 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2886 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2909 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2900,7 +2923,7 @@ test "@floatFromInt on vector" {...@@ -2900,7 +2923,7 @@ test "@floatFromInt on vector" {
2900}2923}
29012924
2902test "@intFromFloat on vector" {2925test "@intFromFloat on vector" {
2903 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2926 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2904 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2927 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2905 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2928 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2929 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2920,6 +2943,7 @@ test "@intFromFloat on vector" {...@@ -2920,6 +2943,7 @@ test "@intFromFloat on vector" {
2920}2943}
29212944
2922test "@floatFromInt and @intFromFloat on vectors of any length" {2945test "@floatFromInt and @intFromFloat on vectors of any length" {
2946 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2923 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2947 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2924 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2948 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2925 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2949 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2950,7 +2974,7 @@ test "@floatFromInt and @intFromFloat on vectors of any length" {...@@ -2950,7 +2974,7 @@ test "@floatFromInt and @intFromFloat on vectors of any length" {
2950}2974}
29512975
2952test "@intFromBool on vector" {2976test "@intFromBool on vector" {
2953 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2977 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2954 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2978 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2955 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2956 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2980 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2970,6 +2994,8 @@ test "@intFromBool on vector" {...@@ -2970,6 +2994,8 @@ test "@intFromBool on vector" {
2970}2994}
29712995
2972test "numeric coercions with undefined" {2996test "numeric coercions with undefined" {
2997 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2998
2973 const from: i32 = undefined;2999 const from: i32 = undefined;
2974 var to: f32 = from;3000 var to: f32 = from;
2975 to = @floatFromInt(from);3001 to = @floatFromInt(from);
...@@ -2987,6 +3013,7 @@ test "15-bit int to float" {...@@ -2987,6 +3013,7 @@ test "15-bit int to float" {
2987}3013}
29883014
2989test "@as does not corrupt values with incompatible representations" {3015test "@as does not corrupt values with incompatible representations" {
3016 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2990 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO3017 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2991 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO3018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
29923019
...@@ -3003,7 +3030,7 @@ test "@as does not corrupt values with incompatible representations" {...@@ -3003,7 +3030,7 @@ test "@as does not corrupt values with incompatible representations" {
3003test "result information is preserved through many nested structures" {3030test "result information is preserved through many nested structures" {
3004 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO3031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3005 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO3032 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3006 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;3033 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
30073034
3008 const S = struct {3035 const S = struct {
3009 fn doTheTest() !void {3036 fn doTheTest() !void {
...@@ -3025,6 +3052,7 @@ test "result information is preserved through many nested structures" {...@@ -3025,6 +3052,7 @@ test "result information is preserved through many nested structures" {
3025}3052}
30263053
3027test "@intCast vector of signed integer" {3054test "@intCast vector of signed integer" {
3055 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
3028 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;3056 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3029 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO3057 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO3058 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -3047,6 +3075,7 @@ test "result type is preserved into comptime block" {...@@ -3047,6 +3075,7 @@ test "result type is preserved into comptime block" {
3047}3075}
30483076
3049test "bitcast vector" {3077test "bitcast vector" {
3078 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
3050 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO3079 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
30513080
3052 const u8x32 = @Vector(32, u8);3081 const u8x32 = @Vector(32, u8);
...@@ -3058,7 +3087,7 @@ test "bitcast vector" {...@@ -3058,7 +3087,7 @@ test "bitcast vector" {
3058}3087}
30593088
3060test "peer type resolution: slice of sentinel-terminated array" {3089test "peer type resolution: slice of sentinel-terminated array" {
3061 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;3090 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
30623091
3063 var f: bool = undefined;3092 var f: bool = undefined;
3064 f = false;3093 f = false;
...@@ -3077,7 +3106,7 @@ test "peer type resolution: slice of sentinel-terminated array" {...@@ -3077,7 +3106,7 @@ test "peer type resolution: slice of sentinel-terminated array" {
30773106
3078test "@intFromFloat boundary cases" {3107test "@intFromFloat boundary cases" {
3079 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;3108 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3080 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;3109 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
30813110
3082 const S = struct {3111 const S = struct {
3083 fn case(comptime I: type, x: f32, bump: enum { up, down }, expected: I) !void {3112 fn case(comptime I: type, x: f32, bump: enum { up, down }, expected: I) !void {
...@@ -3108,7 +3137,7 @@ test "@intFromFloat boundary cases" {...@@ -3108,7 +3137,7 @@ test "@intFromFloat boundary cases" {
3108}3137}
31093138
3110test "@intFromFloat vector boundary cases" {3139test "@intFromFloat vector boundary cases" {
3111 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;3140 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;3141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3113 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;3142 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
31143143
...@@ -3137,6 +3166,7 @@ test "@intFromFloat vector boundary cases" {...@@ -3137,6 +3166,7 @@ test "@intFromFloat vector boundary cases" {
3137}3166}
31383167
3139test "coerce enum to union with zero-bit fields through local variables" {3168test "coerce enum to union with zero-bit fields through local variables" {
3169 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
3140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;3170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
31413171
3142 const E = enum(u1) { foo, bar };3172 const E = enum(u1) { foo, bar };
test/behavior/cast_int.zig+5-2
...@@ -6,6 +6,7 @@ const maxInt = std.math.maxInt;...@@ -6,6 +6,7 @@ const maxInt = std.math.maxInt;
6const minInt = std.math.minInt;6const minInt = std.math.minInt;
77
8test "@intCast i32 to u7" {8test "@intCast i32 to u7" {
9 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -33,6 +34,7 @@ test "coerce i8 to i32 and @intCast back" {...@@ -33,6 +34,7 @@ test "coerce i8 to i32 and @intCast back" {
33}34}
3435
35test "coerce non byte-sized integers accross 32bits boundary" {36test "coerce non byte-sized integers accross 32bits boundary" {
37 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
3739
38 {40 {
...@@ -143,7 +145,8 @@ fn testIntCast(comptime S: type, a: S, comptime D: type, expected: D) !void {...@@ -143,7 +145,8 @@ fn testIntCast(comptime S: type, a: S, comptime D: type, expected: D) !void {
143145
144test "@intCast <= 64 bits" {146test "@intCast <= 64 bits" {
145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;148 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
149
147 try testIntCast(i32, minInt(i32), i64, minInt(i32));150 try testIntCast(i32, minInt(i32), i64, minInt(i32));
148 try testIntCast(i32, maxInt(i32), i64, maxInt(i32));151 try testIntCast(i32, maxInt(i32), i64, maxInt(i32));
149 try testIntCast(u32, maxInt(u32), u64, maxInt(u32));152 try testIntCast(u32, maxInt(u32), u64, maxInt(u32));
...@@ -168,7 +171,7 @@ test "@intCast <= 64 bits" {...@@ -168,7 +171,7 @@ test "@intCast <= 64 bits" {
168171
169test "@intCast > 128 bits" {172test "@intCast > 128 bits" {
170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;174 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
172175
173 try testIntCast(u8, 123, u140, 123);176 try testIntCast(u8, 123, u140, 123);
174 try testIntCast(u64, 1 << 63, u140, 1 << 63);177 try testIntCast(u64, 1 << 63, u140, 1 << 63);
test/behavior/comptime_memory.zig+7-2
...@@ -415,6 +415,8 @@ test "dereference undefined pointer to zero-bit type" {...@@ -415,6 +415,8 @@ test "dereference undefined pointer to zero-bit type" {
415}415}
416416
417test "type pun extern struct" {417test "type pun extern struct" {
418 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
419
418 const S = extern struct { f: u8 };420 const S = extern struct { f: u8 };
419 comptime var s = S{ .f = 123 };421 comptime var s = S{ .f = 123 };
420 @as(*u8, @ptrCast(&s)).* = 72;422 @as(*u8, @ptrCast(&s)).* = 72;
...@@ -434,7 +436,7 @@ test "type pun null pointer-like optional" {...@@ -434,7 +436,7 @@ test "type pun null pointer-like optional" {
434}436}
435437
436test "write empty array to end" {438test "write empty array to end" {
437 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;439 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
438440
439 comptime var array: [5]u8 = "hello".*;441 comptime var array: [5]u8 = "hello".*;
440 array[5..5].* = .{};442 array[5..5].* = .{};
...@@ -514,7 +516,8 @@ fn fieldPtrTest() u32 {...@@ -514,7 +516,8 @@ fn fieldPtrTest() u32 {
514 return a.value;516 return a.value;
515}517}
516test "pointer in aggregate field can mutate comptime state" {518test "pointer in aggregate field can mutate comptime state" {
517 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;519 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
520
518 try comptime std.testing.expect(fieldPtrTest() == 2);521 try comptime std.testing.expect(fieldPtrTest() == 2);
519}522}
520523
...@@ -598,6 +601,8 @@ test "reinterpret sentinel-terminated array as packed struct" {...@@ -598,6 +601,8 @@ test "reinterpret sentinel-terminated array as packed struct" {
598}601}
599602
600test "reinterpret pointer as optional pointer via double-pointer coercion" {603test "reinterpret pointer as optional pointer via double-pointer coercion" {
604 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
605
601 const p0: *const *anyopaque = &@ptrFromInt(0x1000);606 const p0: *const *anyopaque = &@ptrFromInt(0x1000);
602 const p1: *const ?*anyopaque = p0;607 const p1: *const ?*anyopaque = p0;
603608
test/behavior/const_slice_child.zig+1-1
...@@ -10,7 +10,7 @@ test "const slice child" {...@@ -10,7 +10,7 @@ test "const slice child" {
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;13 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1414
15 const strs = [_][*]const u8{ "one", "two", "three" };15 const strs = [_][*]const u8{ "one", "two", "three" };
16 argv = &strs;16 argv = &strs;
test/behavior/decl_literals.zig+4-2
...@@ -33,6 +33,7 @@ test "decl literal with pointer" {...@@ -33,6 +33,7 @@ test "decl literal with pointer" {
33}33}
3434
35test "call decl literal with optional" {35test "call decl literal with optional" {
36 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3839
...@@ -48,7 +49,7 @@ test "call decl literal with optional" {...@@ -48,7 +49,7 @@ test "call decl literal with optional" {
48}49}
4950
50test "call decl literal with pointer" {51test "call decl literal with pointer" {
51 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;52 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5253
53 const S = struct {54 const S = struct {
54 x: u32,55 x: u32,
...@@ -62,6 +63,7 @@ test "call decl literal with pointer" {...@@ -62,6 +63,7 @@ test "call decl literal with pointer" {
62}63}
6364
64test "call decl literal" {65test "call decl literal" {
66 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
65 const S = struct {67 const S = struct {
66 x: u32,68 x: u32,
67 fn init() @This() {69 fn init() @This() {
...@@ -74,7 +76,7 @@ test "call decl literal" {...@@ -74,7 +76,7 @@ test "call decl literal" {
74}76}
7577
76test "call decl literal with error union" {78test "call decl literal with error union" {
77 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO79 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
7880
79 const S = struct {81 const S = struct {
80 x: u32,82 x: u32,
test/behavior/defer.zig+7-2
...@@ -5,6 +5,8 @@ const expectEqual = std.testing.expectEqual;...@@ -5,6 +5,8 @@ const expectEqual = std.testing.expectEqual;
5const expectError = std.testing.expectError;5const expectError = std.testing.expectError;
66
7test "break and continue inside loop inside defer expression" {7test "break and continue inside loop inside defer expression" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
9
8 testBreakContInDefer(10);10 testBreakContInDefer(10);
9 comptime testBreakContInDefer(10);11 comptime testBreakContInDefer(10);
10}12}
...@@ -32,6 +34,7 @@ test "defer and labeled break" {...@@ -32,6 +34,7 @@ test "defer and labeled break" {
32}34}
3335
34test "errdefer does not apply to fn inside fn" {36test "errdefer does not apply to fn inside fn" {
37 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3639
37 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);40 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
...@@ -49,6 +52,7 @@ fn testNestedFnErrDefer() anyerror!void {...@@ -49,6 +52,7 @@ fn testNestedFnErrDefer() anyerror!void {
49}52}
5053
51test "return variable while defer expression in scope to modify it" {54test "return variable while defer expression in scope to modify it" {
55 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5458
...@@ -89,7 +93,7 @@ fn runSomeErrorDefers(x: bool) !bool {...@@ -89,7 +93,7 @@ fn runSomeErrorDefers(x: bool) !bool {
89}93}
9094
91test "mixing normal and error defers" {95test "mixing normal and error defers" {
92 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;96 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9599
...@@ -109,7 +113,8 @@ test "mixing normal and error defers" {...@@ -109,7 +113,8 @@ test "mixing normal and error defers" {
109113
110test "simple else prong doesn't emit an error for unreachable else prong" {114test "simple else prong doesn't emit an error for unreachable else prong" {
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;116 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
117
113 const S = struct {118 const S = struct {
114 fn foo() error{Foo}!void {119 fn foo() error{Foo}!void {
115 return error.Foo;120 return error.Foo;
test/behavior/destructure.zig+14
...@@ -4,6 +4,8 @@ const assert = std.debug.assert;...@@ -4,6 +4,8 @@ const assert = std.debug.assert;
4const expect = std.testing.expect;4const expect = std.testing.expect;
55
6test "simple destructure" {6test "simple destructure" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8
7 const S = struct {9 const S = struct {
8 fn doTheTest() !void {10 fn doTheTest() !void {
9 var x: u32 = undefined;11 var x: u32 = undefined;
...@@ -23,6 +25,8 @@ test "simple destructure" {...@@ -23,6 +25,8 @@ test "simple destructure" {
23}25}
2426
25test "destructure with comptime syntax" {27test "destructure with comptime syntax" {
28 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
29
26 const S = struct {30 const S = struct {
27 fn doTheTest() !void {31 fn doTheTest() !void {
28 {32 {
...@@ -78,6 +82,8 @@ test "destructure with comptime syntax" {...@@ -78,6 +82,8 @@ test "destructure with comptime syntax" {
78}82}
7983
80test "destructure from labeled block" {84test "destructure from labeled block" {
85 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
86
81 const S = struct {87 const S = struct {
82 fn doTheTest(rt_true: bool) !void {88 fn doTheTest(rt_true: bool) !void {
83 const x: u32, const y: u8, const z: i64 = blk: {89 const x: u32, const y: u8, const z: i64 = blk: {
...@@ -96,6 +102,8 @@ test "destructure from labeled block" {...@@ -96,6 +102,8 @@ test "destructure from labeled block" {
96}102}
97103
98test "destructure tuple value" {104test "destructure tuple value" {
105 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
106
99 const tup: struct { f32, u32, i64 } = .{ 10.0, 20, 30 };107 const tup: struct { f32, u32, i64 } = .{ 10.0, 20, 30 };
100 const x, const y, const z = tup;108 const x, const y, const z = tup;
101109
...@@ -109,6 +117,8 @@ test "destructure tuple value" {...@@ -109,6 +117,8 @@ test "destructure tuple value" {
109}117}
110118
111test "destructure array value" {119test "destructure array value" {
120 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
121
112 const arr: [3]u32 = .{ 10, 20, 30 };122 const arr: [3]u32 = .{ 10, 20, 30 };
113 const x, const y, const z = arr;123 const x, const y, const z = arr;
114124
...@@ -122,6 +132,8 @@ test "destructure array value" {...@@ -122,6 +132,8 @@ test "destructure array value" {
122}132}
123133
124test "destructure from struct init with named tuple fields" {134test "destructure from struct init with named tuple fields" {
135 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
136
125 const Tuple = struct { u8, u16, u32 };137 const Tuple = struct { u8, u16, u32 };
126 const x, const y, const z = Tuple{138 const x, const y, const z = Tuple{
127 .@"0" = 100,139 .@"0" = 100,
...@@ -149,6 +161,8 @@ test "destructure of comptime-known tuple is comptime-known" {...@@ -149,6 +161,8 @@ test "destructure of comptime-known tuple is comptime-known" {
149}161}
150162
151test "destructure of comptime-known tuple where some destinations are runtime-known is comptime-known" {163test "destructure of comptime-known tuple where some destinations are runtime-known is comptime-known" {
164 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
165
152 var z: u32 = undefined;166 var z: u32 = undefined;
153 var x: u8, const y, z = .{ 1, 2, 3 };167 var x: u8, const y, z = .{ 1, 2, 3 };
154 _ = &x;168 _ = &x;
test/behavior/enum.zig+32-14
...@@ -12,6 +12,8 @@ fn shouldEqual(n: Number, expected: u3) !void {...@@ -12,6 +12,8 @@ fn shouldEqual(n: Number, expected: u3) !void {
12}12}
1313
14test "enum to int" {14test "enum to int" {
15 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
16
15 try shouldEqual(Number.Zero, 0);17 try shouldEqual(Number.Zero, 0);
16 try shouldEqual(Number.One, 1);18 try shouldEqual(Number.One, 1);
17 try shouldEqual(Number.Two, 2);19 try shouldEqual(Number.Two, 2);
...@@ -614,6 +616,7 @@ test "enum with specified tag values" {...@@ -614,6 +616,7 @@ test "enum with specified tag values" {
614}616}
615617
616test "non-exhaustive enum" {618test "non-exhaustive enum" {
619 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618621
619 const S = struct {622 const S = struct {
...@@ -657,6 +660,8 @@ test "non-exhaustive enum" {...@@ -657,6 +660,8 @@ test "non-exhaustive enum" {
657}660}
658661
659test "empty non-exhaustive enum" {662test "empty non-exhaustive enum" {
663 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
664
660 const S = struct {665 const S = struct {
661 const E = enum(u8) { _ };666 const E = enum(u8) { _ };
662667
...@@ -678,6 +683,7 @@ test "empty non-exhaustive enum" {...@@ -678,6 +683,7 @@ test "empty non-exhaustive enum" {
678}683}
679684
680test "single field non-exhaustive enum" {685test "single field non-exhaustive enum" {
686 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
681 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO687 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
682688
683 const S = struct {689 const S = struct {
...@@ -796,6 +802,8 @@ test "enum with 1 field but explicit tag type should still have the tag type" {...@@ -796,6 +802,8 @@ test "enum with 1 field but explicit tag type should still have the tag type" {
796}802}
797803
798test "signed integer as enum tag" {804test "signed integer as enum tag" {
805 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
806
799 const SignedEnum = enum(i2) {807 const SignedEnum = enum(i2) {
800 A0 = -1,808 A0 = -1,
801 A1 = 0,809 A1 = 0,
...@@ -880,6 +888,8 @@ test "method call on an enum" {...@@ -880,6 +888,8 @@ test "method call on an enum" {
880}888}
881889
882test "enum value allocation" {890test "enum value allocation" {
891 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
892
883 const LargeEnum = enum(u32) {893 const LargeEnum = enum(u32) {
884 A0 = 0x80000000,894 A0 = 0x80000000,
885 A1,895 A1,
...@@ -892,6 +902,7 @@ test "enum value allocation" {...@@ -892,6 +902,7 @@ test "enum value allocation" {
892}902}
893903
894test "enum literal casting to tagged union" {904test "enum literal casting to tagged union" {
905 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
895 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;906 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
896 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO907 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
897908
...@@ -918,6 +929,7 @@ test "enum literal casting to tagged union" {...@@ -918,6 +929,7 @@ test "enum literal casting to tagged union" {
918const Bar = enum { A, B, C, D };929const Bar = enum { A, B, C, D };
919930
920test "enum literal casting to error union with payload enum" {931test "enum literal casting to error union with payload enum" {
932 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
921 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO933 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
922934
923 var bar: error{B}!Bar = undefined;935 var bar: error{B}!Bar = undefined;
...@@ -927,6 +939,7 @@ test "enum literal casting to error union with payload enum" {...@@ -927,6 +939,7 @@ test "enum literal casting to error union with payload enum" {
927}939}
928940
929test "constant enum initialization with differing sizes" {941test "constant enum initialization with differing sizes" {
942 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
930 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;943 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO944 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
932 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;945 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -972,7 +985,7 @@ test "@tagName" {...@@ -972,7 +985,7 @@ test "@tagName" {
972 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO986 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
974 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;987 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
975 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;988 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
976989
977 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));990 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
978 comptime assert(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));991 comptime assert(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
...@@ -988,7 +1001,7 @@ test "@tagName non-exhaustive enum" {...@@ -988,7 +1001,7 @@ test "@tagName non-exhaustive enum" {
988 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1001 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
989 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1002 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
990 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1003 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
991 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1004 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
992 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1005 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9931006
994 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));1007 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
...@@ -1000,7 +1013,7 @@ test "@tagName is null-terminated" {...@@ -1000,7 +1013,7 @@ test "@tagName is null-terminated" {
1000 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1013 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1001 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1002 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1003 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1016 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1004 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1017 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10051018
1006 const S = struct {1019 const S = struct {
...@@ -1016,7 +1029,7 @@ test "tag name with assigned enum values" {...@@ -1016,7 +1029,7 @@ test "tag name with assigned enum values" {
1016 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1029 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1017 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1031 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1019 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1032 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1020 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1033 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10211034
1022 const LocalFoo = enum(u8) {1035 const LocalFoo = enum(u8) {
...@@ -1030,7 +1043,7 @@ test "tag name with assigned enum values" {...@@ -1030,7 +1043,7 @@ test "tag name with assigned enum values" {
10301043
1031test "@tagName on enum literals" {1044test "@tagName on enum literals" {
1032 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1033 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1046 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10341047
1035 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1048 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
1036 comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));1049 comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));
...@@ -1040,7 +1053,7 @@ test "tag name with signed enum values" {...@@ -1040,7 +1053,7 @@ test "tag name with signed enum values" {
1040 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1053 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1041 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1054 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1042 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1055 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1043 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1056 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1044 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1057 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10451058
1046 const LocalFoo = enum(isize) {1059 const LocalFoo = enum(isize) {
...@@ -1057,7 +1070,7 @@ test "tag name with signed enum values" {...@@ -1057,7 +1070,7 @@ test "tag name with signed enum values" {
1057test "tag name with large enum values" {1070test "tag name with large enum values" {
1058 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1059 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;1072 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
1060 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1073 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10611074
1062 const Kdf = enum(u128) {1075 const Kdf = enum(u128) {
1063 aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9,1076 aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9,
...@@ -1077,7 +1090,7 @@ test "tag name with large enum values" {...@@ -1077,7 +1090,7 @@ test "tag name with large enum values" {
1077test "@tagName with exotic integer enum types" {1090test "@tagName with exotic integer enum types" {
1078 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1091 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1079 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;1092 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
1080 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1093 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10811094
1082 const S = struct {1095 const S = struct {
1083 fn testEnumSigned(comptime T: type) !void {1096 fn testEnumSigned(comptime T: type) !void {
...@@ -1177,7 +1190,7 @@ test "@tagName in callconv(.c) function" {...@@ -1177,7 +1190,7 @@ test "@tagName in callconv(.c) function" {
1177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1180 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1193 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1181 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1194 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11821195
1183 try expect(mem.orderZ(u8, testEnumTagNameCallconvC(), "Two") == .eq);1196 try expect(mem.orderZ(u8, testEnumTagNameCallconvC(), "Two") == .eq);
...@@ -1191,6 +1204,7 @@ fn testEnumTagNameCallconvC() callconv(.c) [*:0]const u8 {...@@ -1191,6 +1204,7 @@ fn testEnumTagNameCallconvC() callconv(.c) [*:0]const u8 {
1191}1204}
11921205
1193test "enum literal casting to optional" {1206test "enum literal casting to optional" {
1207 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1208 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11961210
...@@ -1217,7 +1231,7 @@ const bit_field_1 = BitFieldOfEnums{...@@ -1217,7 +1231,7 @@ const bit_field_1 = BitFieldOfEnums{
1217};1231};
12181232
1219test "bit field access with enum fields" {1233test "bit field access with enum fields" {
1220 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1234 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1261,7 +1275,7 @@ test "tag name functions are unique" {...@@ -1261,7 +1275,7 @@ test "tag name functions are unique" {
1261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1264 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1278 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1265 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12661280
1267 {1281 {
...@@ -1280,7 +1294,7 @@ test "tag name functions are unique" {...@@ -1280,7 +1294,7 @@ test "tag name functions are unique" {
12801294
1281test "size of enum with only one tag which has explicit integer tag type" {1295test "size of enum with only one tag which has explicit integer tag type" {
1282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1283 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1297 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12841298
1285 const E = enum(u8) { nope = 10 };1299 const E = enum(u8) { nope = 10 };
1286 const S0 = struct { e: E };1300 const S0 = struct { e: E };
...@@ -1315,7 +1329,7 @@ test "switch on an extern enum with negative value" {...@@ -1315,7 +1329,7 @@ test "switch on an extern enum with negative value" {
1315}1329}
13161330
1317test "switch on an enum with small signed tag type" {1331test "switch on an enum with small signed tag type" {
1318 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1332 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13191333
1320 const E = enum(i3) {1334 const E = enum(i3) {
1321 y = -2,1335 y = -2,
...@@ -1359,7 +1373,7 @@ test "enum tag from a local variable" {...@@ -1359,7 +1373,7 @@ test "enum tag from a local variable" {
1359}1373}
13601374
1361test "auto-numbered enum with signed tag type" {1375test "auto-numbered enum with signed tag type" {
1362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1376 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13631377
1364 const E = enum(i32) { a, b };1378 const E = enum(i32) { a, b };
13651379
...@@ -1376,6 +1390,7 @@ test "auto-numbered enum with signed tag type" {...@@ -1376,6 +1390,7 @@ test "auto-numbered enum with signed tag type" {
1376}1390}
13771391
1378test "lazy initialized field" {1392test "lazy initialized field" {
1393 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1379 try std.testing.expectEqual(@as(u8, @alignOf(struct {})), getLazyInitialized(.a));1394 try std.testing.expectEqual(@as(u8, @alignOf(struct {})), getLazyInitialized(.a));
1380}1395}
13811396
...@@ -1404,6 +1419,7 @@ test "matching captures causes enum equivalence" {...@@ -1404,6 +1419,7 @@ test "matching captures causes enum equivalence" {
1404}1419}
14051420
1406test "large enum field values" {1421test "large enum field values" {
1422 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1407 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1423 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14081424
1409 {1425 {
...@@ -1452,6 +1468,8 @@ test "comptime @enumFromInt with signed arithmetic" {...@@ -1452,6 +1468,8 @@ test "comptime @enumFromInt with signed arithmetic" {
1452}1468}
14531469
1454test "enum int tag type uses declaration inside the enum" {1470test "enum int tag type uses declaration inside the enum" {
1471 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1472
1455 const static = struct {1473 const static = struct {
1456 const E = enum(E.IntTag) {1474 const E = enum(E.IntTag) {
1457 const IntTag = u8;1475 const IntTag = u8;
test/behavior/error.zig+54-15
...@@ -30,6 +30,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {...@@ -30,6 +30,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
30}30}
3131
32test "error binary operator" {32test "error binary operator" {
33 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3435
35 const a = errBinaryOperatorG(true) catch 3;36 const a = errBinaryOperatorG(true) catch 3;
...@@ -61,12 +62,14 @@ pub fn baz() anyerror!i32 {...@@ -61,12 +62,14 @@ pub fn baz() anyerror!i32 {
61}62}
6263
63test "error wrapping" {64test "error wrapping" {
65 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6567
66 try expect((baz() catch unreachable) == 15);68 try expect((baz() catch unreachable) == 15);
67}69}
6870
69test "unwrap simple value from error" {71test "unwrap simple value from error" {
72 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7174
72 const i = unwrapSimpleValueFromErrorDo() catch unreachable;75 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
...@@ -77,6 +80,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {...@@ -77,6 +80,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
77}80}
7881
79test "error return in assignment" {82test "error return in assignment" {
83 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8185
82 doErrReturnInAssignment() catch unreachable;86 doErrReturnInAssignment() catch unreachable;
...@@ -98,6 +102,7 @@ test "syntax: optional operator in front of error union operator" {...@@ -98,6 +102,7 @@ test "syntax: optional operator in front of error union operator" {
98}102}
99103
100test "widen cast integer payload of error union function call" {104test "widen cast integer payload of error union function call" {
105 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
103108
...@@ -124,7 +129,7 @@ test "debug info for optional error set" {...@@ -124,7 +129,7 @@ test "debug info for optional error set" {
124129
125test "implicit cast to optional to error union to return result loc" {130test "implicit cast to optional to error union to return result loc" {
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;132 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
128133
129 const S = struct {134 const S = struct {
130 fn entry() !void {135 fn entry() !void {
...@@ -145,12 +150,14 @@ test "implicit cast to optional to error union to return result loc" {...@@ -145,12 +150,14 @@ test "implicit cast to optional to error union to return result loc" {
145}150}
146151
147test "fn returning empty error set can be passed as fn returning any error" {152test "fn returning empty error set can be passed as fn returning any error" {
153 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
154
148 entry();155 entry();
149 comptime entry();156 comptime entry();
150}157}
151158
152test "fn returning empty error set can be passed as fn returning any error - pointer" {159test "fn returning empty error set can be passed as fn returning any error - pointer" {
153 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;160 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
154161
155 entryPtr();162 entryPtr();
156 comptime entryPtr();163 comptime entryPtr();
...@@ -182,6 +189,8 @@ fn fooPtr(f: *const fn () anyerror!void) void {...@@ -182,6 +189,8 @@ fn fooPtr(f: *const fn () anyerror!void) void {
182fn bar2() (error{}!void) {}189fn bar2() (error{}!void) {}
183190
184test "error union type " {191test "error union type " {
192 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
193
185 try testErrorUnionType();194 try testErrorUnionType();
186 try comptime testErrorUnionType();195 try comptime testErrorUnionType();
187}196}
...@@ -195,6 +204,8 @@ fn testErrorUnionType() !void {...@@ -195,6 +204,8 @@ fn testErrorUnionType() !void {
195}204}
196205
197test "error set type" {206test "error set type" {
207 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
208
198 try testErrorSetType();209 try testErrorSetType();
199 try comptime testErrorSetType();210 try comptime testErrorSetType();
200}211}
...@@ -218,6 +229,7 @@ fn testErrorSetType() !void {...@@ -218,6 +229,7 @@ fn testErrorSetType() !void {
218}229}
219230
220test "explicit error set cast" {231test "explicit error set cast" {
232 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222234
223 try testExplicitErrorSetCast(Set1.A);235 try testExplicitErrorSetCast(Set1.A);
...@@ -236,6 +248,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {...@@ -236,6 +248,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
236}248}
237249
238test "@errorCast on error unions" {250test "@errorCast on error unions" {
251 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
239 const S = struct {252 const S = struct {
240 fn doTheTest() !void {253 fn doTheTest() !void {
241 {254 {
...@@ -262,6 +275,7 @@ test "@errorCast on error unions" {...@@ -262,6 +275,7 @@ test "@errorCast on error unions" {
262}275}
263276
264test "comptime test error for empty error set" {277test "comptime test error for empty error set" {
278 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO279 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266280
267 try testComptimeTestErrorEmptySet(1234);281 try testComptimeTestErrorEmptySet(1234);
...@@ -298,6 +312,8 @@ test "inferred empty error set comptime catch" {...@@ -298,6 +312,8 @@ test "inferred empty error set comptime catch" {
298}312}
299313
300test "error inference with an empty set" {314test "error inference with an empty set" {
315 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
316
301 const S = struct {317 const S = struct {
302 const Struct = struct {318 const Struct = struct {
303 pub fn func() (error{})!usize {319 pub fn func() (error{})!usize {
...@@ -319,6 +335,7 @@ test "error inference with an empty set" {...@@ -319,6 +335,7 @@ test "error inference with an empty set" {
319}335}
320336
321test "error union peer type resolution" {337test "error union peer type resolution" {
338 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO339 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323340
324 try testErrorUnionPeerTypeResolution(1);341 try testErrorUnionPeerTypeResolution(1);
...@@ -350,6 +367,7 @@ fn quux_1() !i32 {...@@ -350,6 +367,7 @@ fn quux_1() !i32 {
350}367}
351368
352test "error: Zero sized error set returned with value payload crash" {369test "error: Zero sized error set returned with value payload crash" {
370 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354372
355 _ = try foo3(0);373 _ = try foo3(0);
...@@ -363,7 +381,7 @@ fn foo3(b: usize) Error!usize {...@@ -363,7 +381,7 @@ fn foo3(b: usize) Error!usize {
363381
364test "error: Infer error set from literals" {382test "error: Infer error set from literals" {
365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;384 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
367385
368 _ = nullLiteral("n") catch |err| handleErrors(err);386 _ = nullLiteral("n") catch |err| handleErrors(err);
369 _ = floatLiteral("n") catch |err| handleErrors(err);387 _ = floatLiteral("n") catch |err| handleErrors(err);
...@@ -400,6 +418,7 @@ fn intLiteral(str: []const u8) !?i64 {...@@ -400,6 +418,7 @@ fn intLiteral(str: []const u8) !?i64 {
400}418}
401419
402test "nested error union function call in optional unwrap" {420test "nested error union function call in optional unwrap" {
421 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405424
...@@ -446,6 +465,7 @@ test "nested error union function call in optional unwrap" {...@@ -446,6 +465,7 @@ test "nested error union function call in optional unwrap" {
446}465}
447466
448test "return function call to error set from error union function" {467test "return function call to error set from error union function" {
468 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO469 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
450470
451 const S = struct {471 const S = struct {
...@@ -477,6 +497,7 @@ test "optional error set is the same size as error set" {...@@ -477,6 +497,7 @@ test "optional error set is the same size as error set" {
477}497}
478498
479test "nested catch" {499test "nested catch" {
500 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
481502
482 const S = struct {503 const S = struct {
...@@ -502,7 +523,7 @@ test "nested catch" {...@@ -502,7 +523,7 @@ test "nested catch" {
502523
503test "function pointer with return type that is error union with payload which is pointer of parent struct" {524test "function pointer with return type that is error union with payload which is pointer of parent struct" {
504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
505 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;526 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
506527
507 const S = struct {528 const S = struct {
508 const Foo = struct {529 const Foo = struct {
...@@ -524,6 +545,7 @@ test "function pointer with return type that is error union with payload which i...@@ -524,6 +545,7 @@ test "function pointer with return type that is error union with payload which i
524}545}
525546
526test "return result loc as peer result loc in inferred error set function" {547test "return result loc as peer result loc in inferred error set function" {
548 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -555,6 +577,7 @@ test "return result loc as peer result loc in inferred error set function" {...@@ -555,6 +577,7 @@ test "return result loc as peer result loc in inferred error set function" {
555}577}
556578
557test "error payload type is correctly resolved" {579test "error payload type is correctly resolved" {
580 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
558 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO581 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO582 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
560583
...@@ -585,7 +608,7 @@ test "error union comptime caching" {...@@ -585,7 +608,7 @@ test "error union comptime caching" {
585test "@errorName" {608test "@errorName" {
586 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;609 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
587 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
588 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;611 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
589 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;612 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
590613
591 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));614 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));
...@@ -599,7 +622,7 @@ fn gimmeItBroke() anyerror {...@@ -599,7 +622,7 @@ fn gimmeItBroke() anyerror {
599test "@errorName sentinel length matches slice length" {622test "@errorName sentinel length matches slice length" {
600 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
601 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;625 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
603 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;626 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
604627
605 const name = testBuiltinErrorName(error.FooBar);628 const name = testBuiltinErrorName(error.FooBar);
...@@ -613,6 +636,8 @@ pub fn testBuiltinErrorName(err: anyerror) [:0]const u8 {...@@ -613,6 +636,8 @@ pub fn testBuiltinErrorName(err: anyerror) [:0]const u8 {
613}636}
614637
615test "error set equality" {638test "error set equality" {
639 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
640
616 const a = error{One};641 const a = error{One};
617 const b = error{One};642 const b = error{One};
618643
...@@ -628,6 +653,7 @@ test "error set equality" {...@@ -628,6 +653,7 @@ test "error set equality" {
628}653}
629654
630test "inferred error set equality" {655test "inferred error set equality" {
656 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO657 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
632658
633 const S = struct {659 const S = struct {
...@@ -691,6 +717,7 @@ test "coerce error set to the current inferred error set" {...@@ -691,6 +717,7 @@ test "coerce error set to the current inferred error set" {
691}717}
692718
693test "error union payload is properly aligned" {719test "error union payload is properly aligned" {
720 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
694 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO721 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO722 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
696 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;723 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -723,6 +750,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {...@@ -723,6 +750,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {
723}750}
724751
725test "simple else prong allowed even when all errors handled" {752test "simple else prong allowed even when all errors handled" {
753 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO754 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
727755
728 const S = struct {756 const S = struct {
...@@ -750,7 +778,7 @@ test "simple else prong allowed even when all errors handled" {...@@ -750,7 +778,7 @@ test "simple else prong allowed even when all errors handled" {
750test "pointer to error union payload" {778test "pointer to error union payload" {
751 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO779 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO780 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
753 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;781 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
754 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;782 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
755783
756 var err_union: anyerror!u8 = 15;784 var err_union: anyerror!u8 = 15;
...@@ -781,7 +809,7 @@ const NoReturn = struct {...@@ -781,7 +809,7 @@ const NoReturn = struct {
781};809};
782810
783test "error union of noreturn used with if" {811test "error union of noreturn used with if" {
784 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;812 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
785 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO813 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
786 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO814 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;815 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -795,7 +823,7 @@ test "error union of noreturn used with if" {...@@ -795,7 +823,7 @@ test "error union of noreturn used with if" {
795}823}
796824
797test "error union of noreturn used with try" {825test "error union of noreturn used with try" {
798 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;826 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
800 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;829 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -806,7 +834,7 @@ test "error union of noreturn used with try" {...@@ -806,7 +834,7 @@ test "error union of noreturn used with try" {
806}834}
807835
808test "error union of noreturn used with catch" {836test "error union of noreturn used with catch" {
809 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;837 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
810 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO838 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
811 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
812 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;840 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -819,7 +847,7 @@ test "error union of noreturn used with catch" {...@@ -819,7 +847,7 @@ test "error union of noreturn used with catch" {
819test "alignment of wrapping an error union payload" {847test "alignment of wrapping an error union payload" {
820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;848 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
821 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO849 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
822 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;850 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
823 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;851 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
824852
825 const S = struct {853 const S = struct {
...@@ -835,6 +863,7 @@ test "alignment of wrapping an error union payload" {...@@ -835,6 +863,7 @@ test "alignment of wrapping an error union payload" {
835}863}
836864
837test "compare error union and error set" {865test "compare error union and error set" {
866 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
838 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO867 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
839868
840 var a: anyerror = error.Foo;869 var a: anyerror = error.Foo;
...@@ -872,7 +901,7 @@ test "catch within a function that calls no errorable functions" {...@@ -872,7 +901,7 @@ test "catch within a function that calls no errorable functions" {
872test "error from comptime string" {901test "error from comptime string" {
873 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO902 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
874 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO903 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
875 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;904 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
876 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;905 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
877906
878 const name = "Weird error name!";907 const name = "Weird error name!";
...@@ -887,6 +916,8 @@ test "error from comptime string" {...@@ -887,6 +916,8 @@ test "error from comptime string" {
887}916}
888917
889test "field access of anyerror results in smaller error set" {918test "field access of anyerror results in smaller error set" {
919 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
920
890 const E1 = @TypeOf(error.Foo);921 const E1 = @TypeOf(error.Foo);
891 try expect(@TypeOf(E1.Foo) == E1);922 try expect(@TypeOf(E1.Foo) == E1);
892 const E2 = error{ A, B, C };923 const E2 = error{ A, B, C };
...@@ -895,6 +926,7 @@ test "field access of anyerror results in smaller error set" {...@@ -895,6 +926,7 @@ test "field access of anyerror results in smaller error set" {
895}926}
896927
897test "optional error union return type" {928test "optional error union return type" {
929 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO930 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
899931
900 const S = struct {932 const S = struct {
...@@ -933,7 +965,7 @@ test "optional error set function parameter" {...@@ -933,7 +965,7 @@ test "optional error set function parameter" {
933965
934test "returning an error union containing a type with no runtime bits" {966test "returning an error union containing a type with no runtime bits" {
935 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO967 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
936 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;968 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
937969
938 const ZeroByteType = struct {970 const ZeroByteType = struct {
939 foo: void,971 foo: void,
...@@ -949,7 +981,7 @@ test "returning an error union containing a type with no runtime bits" {...@@ -949,7 +981,7 @@ test "returning an error union containing a type with no runtime bits" {
949981
950test "try used in recursive function with inferred error set" {982test "try used in recursive function with inferred error set" {
951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO983 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;984 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
953985
954 const Value = union(enum) {986 const Value = union(enum) {
955 values: []const @This(),987 values: []const @This(),
...@@ -1010,6 +1042,7 @@ test "function called at runtime is properly analyzed for inferred error set" {...@@ -1010,6 +1042,7 @@ test "function called at runtime is properly analyzed for inferred error set" {
1010}1042}
10111043
1012test "errorCast to adhoc inferred error set" {1044test "errorCast to adhoc inferred error set" {
1045 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1013 const S = struct {1046 const S = struct {
1014 inline fn baz() !i32 {1047 inline fn baz() !i32 {
1015 return @errorCast(err());1048 return @errorCast(err());
...@@ -1022,6 +1055,7 @@ test "errorCast to adhoc inferred error set" {...@@ -1022,6 +1055,7 @@ test "errorCast to adhoc inferred error set" {
1022}1055}
10231056
1024test "@errorCast from error set to error union" {1057test "@errorCast from error set to error union" {
1058 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1025 const S = struct {1059 const S = struct {
1026 fn doTheTest(set: error{ A, B }) error{A}!i32 {1060 fn doTheTest(set: error{ A, B }) error{A}!i32 {
1027 return @errorCast(set);1061 return @errorCast(set);
...@@ -1032,6 +1066,7 @@ test "@errorCast from error set to error union" {...@@ -1032,6 +1066,7 @@ test "@errorCast from error set to error union" {
1032}1066}
10331067
1034test "@errorCast from error union to error union" {1068test "@errorCast from error union to error union" {
1069 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1035 const S = struct {1070 const S = struct {
1036 fn doTheTest(set: error{ A, B }!i32) error{A}!i32 {1071 fn doTheTest(set: error{ A, B }!i32) error{A}!i32 {
1037 return @errorCast(set);1072 return @errorCast(set);
...@@ -1045,7 +1080,7 @@ test "result location initialization of error union with OPV payload" {...@@ -1045,7 +1080,7 @@ test "result location initialization of error union with OPV payload" {
1045 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1080 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1046 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1081 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1047 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1082 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1048 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1083 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1049 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1084 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
10501085
1051 const S = struct {1086 const S = struct {
...@@ -1067,6 +1102,7 @@ test "result location initialization of error union with OPV payload" {...@@ -1067,6 +1102,7 @@ test "result location initialization of error union with OPV payload" {
1067}1102}
10681103
1069test "return error union with i65" {1104test "return error union with i65" {
1105 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1070 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1106 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10711107
1072 try expect(try add(1000, 234) == 1234);1108 try expect(try add(1000, 234) == 1234);
...@@ -1077,6 +1113,7 @@ fn add(x: i65, y: i65) anyerror!i65 {...@@ -1077,6 +1113,7 @@ fn add(x: i65, y: i65) anyerror!i65 {
1077}1113}
10781114
1079test "compare error union to error set" {1115test "compare error union to error set" {
1116 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1080 const S = struct {1117 const S = struct {
1081 fn doTheTest(val: error{Foo}!i32) !void {1118 fn doTheTest(val: error{Foo}!i32) !void {
1082 if (error.Foo == val) return error.Unexpected;1119 if (error.Foo == val) return error.Unexpected;
...@@ -1107,6 +1144,7 @@ test "'if' ignores error via local while 'else' ignores error directly" {...@@ -1107,6 +1144,7 @@ test "'if' ignores error via local while 'else' ignores error directly" {
1107}1144}
11081145
1109test "@errorCast into own inferred error set" {1146test "@errorCast into own inferred error set" {
1147 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1110 const static = struct {1148 const static = struct {
1111 fn foo(b: bool) !void {1149 fn foo(b: bool) !void {
1112 if (b) {1150 if (b) {
...@@ -1140,6 +1178,7 @@ test "@errorCast into other inferred error set" {...@@ -1140,6 +1178,7 @@ test "@errorCast into other inferred error set" {
1140}1178}
11411179
1142test "error union with vector type" {1180test "error union with vector type" {
1181 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1143 var x: anyerror!@Vector(5, f64) = undefined;1182 var x: anyerror!@Vector(5, f64) = undefined;
1144 x = error.Expected;1183 x = error.Expected;
1145 try expect(x == error.Expected);1184 try expect(x == error.Expected);
test/behavior/eval.zig+49-21
...@@ -5,7 +5,7 @@ const expect = std.testing.expect;...@@ -5,7 +5,7 @@ const expect = std.testing.expect;
5const expectEqual = std.testing.expectEqual;5const expectEqual = std.testing.expectEqual;
66
7test "compile time recursion" {7test "compile time recursion" {
8 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;8 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
99
10 try expect(some_data.len == 21);10 try expect(some_data.len == 21);
11}11}
...@@ -72,6 +72,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {...@@ -72,6 +72,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {
72}72}
7373
74test "constant expressions" {74test "constant expressions" {
75 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7677
77 var array: [array_size]u8 = undefined;78 var array: [array_size]u8 = undefined;
...@@ -93,6 +94,7 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {...@@ -93,6 +94,7 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {
93 return max(bool, a, b);94 return max(bool, a, b);
94}95}
95test "inlined block and runtime block phi" {96test "inlined block and runtime block phi" {
97 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9799
98 try expect(letsTryToCompareBools(true, true));100 try expect(letsTryToCompareBools(true, true));
...@@ -141,7 +143,7 @@ test "pointer to type" {...@@ -141,7 +143,7 @@ test "pointer to type" {
141test "a type constructed in a global expression" {143test "a type constructed in a global expression" {
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
145147
146 var l: List = undefined;148 var l: List = undefined;
147 l.array[0] = 10;149 l.array[0] = 10;
...@@ -234,6 +236,7 @@ const vertices = [_]Vertex{...@@ -234,6 +236,7 @@ const vertices = [_]Vertex{
234};236};
235237
236test "statically initialized list" {238test "statically initialized list" {
239 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238241
239 try expect(static_point_list[0].x == 1);242 try expect(static_point_list[0].x == 1);
...@@ -303,6 +306,7 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {...@@ -303,6 +306,7 @@ fn performFn(comptime prefix_char: u8, start_value: i32) i32 {
303}306}
304307
305test "comptime iterate over fn ptr list" {308test "comptime iterate over fn ptr list" {
309 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
306 try expect(performFn('t', 1) == 6);310 try expect(performFn('t', 1) == 6);
307 try expect(performFn('o', 0) == 1);311 try expect(performFn('o', 0) == 1);
308 try expect(performFn('w', 99) == 99);312 try expect(performFn('w', 99) == 99);
...@@ -339,6 +343,7 @@ fn doesAlotT(comptime T: type, value: usize) T {...@@ -339,6 +343,7 @@ fn doesAlotT(comptime T: type, value: usize) T {
339}343}
340344
341test "@setEvalBranchQuota at same scope as generic function call" {345test "@setEvalBranchQuota at same scope as generic function call" {
346 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343348
344 try expect(doesAlotT(u32, 2) == 2);349 try expect(doesAlotT(u32, 2) == 2);
...@@ -390,7 +395,7 @@ test "return 0 from function that has u0 return type" {...@@ -390,7 +395,7 @@ test "return 0 from function that has u0 return type" {
390}395}
391396
392test "statically initialized struct" {397test "statically initialized struct" {
393 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;398 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395400
396 st_init_str_foo.x += 1;401 st_init_str_foo.x += 1;
...@@ -406,6 +411,7 @@ var st_init_str_foo = StInitStrFoo{...@@ -406,6 +411,7 @@ var st_init_str_foo = StInitStrFoo{
406};411};
407412
408test "inline for with same type but different values" {413test "inline for with same type but different values" {
414 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
409 var res: usize = 0;415 var res: usize = 0;
410 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {416 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
411 var a: T = undefined;417 var a: T = undefined;
...@@ -441,7 +447,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {...@@ -441,7 +447,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {
441test "binary math operator in partially inlined function" {447test "binary math operator in partially inlined function" {
442 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO448 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
444 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;450 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
445451
446 var s: [4]u32 = undefined;452 var s: [4]u32 = undefined;
447 var b: [16]u8 = undefined;453 var b: [16]u8 = undefined;
...@@ -484,6 +490,7 @@ test "comptime bitwise operators" {...@@ -484,6 +490,7 @@ test "comptime bitwise operators" {
484}490}
485491
486test "comptime shlWithOverflow" {492test "comptime shlWithOverflow" {
493 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;494 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO495 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;496 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -498,7 +505,7 @@ test "comptime shlWithOverflow" {...@@ -498,7 +505,7 @@ test "comptime shlWithOverflow" {
498505
499test "const ptr to variable data changes at runtime" {506test "const ptr to variable data changes at runtime" {
500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;508 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
502509
503 try expect(foo_ref.name[0] == 'a');510 try expect(foo_ref.name[0] == 'a');
504 foo_ref.name = "b";511 foo_ref.name = "b";
...@@ -515,7 +522,7 @@ const foo_ref = &foo_contents;...@@ -515,7 +522,7 @@ const foo_ref = &foo_contents;
515test "runtime 128 bit integer division" {522test "runtime 128 bit integer division" {
516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;525 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
519 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;526 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
520527
521 var a: u128 = 152313999999999991610955792383;528 var a: u128 = 152313999999999991610955792383;
...@@ -527,13 +534,14 @@ test "runtime 128 bit integer division" {...@@ -527,13 +534,14 @@ test "runtime 128 bit integer division" {
527534
528test "@tagName of @typeInfo" {535test "@tagName of @typeInfo" {
529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;537 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
531538
532 const str = @tagName(@typeInfo(u8));539 const str = @tagName(@typeInfo(u8));
533 try expect(std.mem.eql(u8, str, "int"));540 try expect(std.mem.eql(u8, str, "int"));
534}541}
535542
536test "static eval list init" {543test "static eval list init" {
544 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO545 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO546 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
539547
...@@ -551,6 +559,7 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {...@@ -551,6 +559,7 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {
551}559}
552560
553test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {561test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {
562 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO563 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
555564
556 var runtime = [1]i32{3};565 var runtime = [1]i32{3};
...@@ -603,7 +612,7 @@ const hi1 = "hi";...@@ -603,7 +612,7 @@ const hi1 = "hi";
603const hi2 = hi1;612const hi2 = hi1;
604test "const global shares pointer with other same one" {613test "const global shares pointer with other same one" {
605 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO614 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
606 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;615 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
607616
608 try assertEqualPtrs(&hi1[0], &hi2[0]);617 try assertEqualPtrs(&hi1[0], &hi2[0]);
609 comptime assert(&hi1[0] == &hi2[0]);618 comptime assert(&hi1[0] == &hi2[0]);
...@@ -722,7 +731,7 @@ fn testVarInsideInlineLoop(args: anytype) !void {...@@ -722,7 +731,7 @@ fn testVarInsideInlineLoop(args: anytype) !void {
722test "array concatenation of function calls" {731test "array concatenation of function calls" {
723 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;732 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO733 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
725 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;734 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
726735
727 var a = oneItem(3) ++ oneItem(4);736 var a = oneItem(3) ++ oneItem(4);
728 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));737 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
...@@ -737,6 +746,7 @@ fn scalar(x: u32) u32 {...@@ -737,6 +746,7 @@ fn scalar(x: u32) u32 {
737}746}
738747
739test "array concatenation peer resolves element types - value" {748test "array concatenation peer resolves element types - value" {
749 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
740 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;750 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
741 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
742752
...@@ -755,7 +765,7 @@ test "array concatenation peer resolves element types - value" {...@@ -755,7 +765,7 @@ test "array concatenation peer resolves element types - value" {
755test "array concatenation peer resolves element types - pointer" {765test "array concatenation peer resolves element types - pointer" {
756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;768 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
759769
760 var a = [2]u3{ 1, 7 };770 var a = [2]u3{ 1, 7 };
761 var b = [3]u8{ 200, 225, 255 };771 var b = [3]u8{ 200, 225, 255 };
...@@ -772,7 +782,7 @@ test "array concatenation sets the sentinel - value" {...@@ -772,7 +782,7 @@ test "array concatenation sets the sentinel - value" {
772 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
773 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO783 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
775 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;785 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
776786
777 var a = [2]u3{ 1, 7 };787 var a = [2]u3{ 1, 7 };
778 var b = [3:69]u8{ 200, 225, 255 };788 var b = [3:69]u8{ 200, 225, 255 };
...@@ -791,7 +801,7 @@ test "array concatenation sets the sentinel - value" {...@@ -791,7 +801,7 @@ test "array concatenation sets the sentinel - value" {
791test "array concatenation sets the sentinel - pointer" {801test "array concatenation sets the sentinel - pointer" {
792 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
793 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;803 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
794 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;804 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
795805
796 var a = [2]u3{ 1, 7 };806 var a = [2]u3{ 1, 7 };
797 var b = [3:69]u8{ 200, 225, 255 };807 var b = [3:69]u8{ 200, 225, 255 };
...@@ -926,7 +936,7 @@ test "closure capture type of runtime-known var" {...@@ -926,7 +936,7 @@ test "closure capture type of runtime-known var" {
926}936}
927937
928test "comptime break passing through runtime condition converted to runtime break" {938test "comptime break passing through runtime condition converted to runtime break" {
929 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;939 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
930 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO940 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
931941
932 const S = struct {942 const S = struct {
...@@ -959,7 +969,7 @@ test "comptime break passing through runtime condition converted to runtime brea...@@ -959,7 +969,7 @@ test "comptime break passing through runtime condition converted to runtime brea
959}969}
960970
961test "comptime break to outer loop passing through runtime condition converted to runtime break" {971test "comptime break to outer loop passing through runtime condition converted to runtime break" {
962 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;972 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO973 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
964 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO974 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
965975
...@@ -996,6 +1006,8 @@ test "comptime break to outer loop passing through runtime condition converted t...@@ -996,6 +1006,8 @@ test "comptime break to outer loop passing through runtime condition converted t
996}1006}
9971007
998test "comptime break operand passing through runtime condition converted to runtime break" {1008test "comptime break operand passing through runtime condition converted to runtime break" {
1009 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1010
999 const S = struct {1011 const S = struct {
1000 fn doTheTest(runtime: u8) !void {1012 fn doTheTest(runtime: u8) !void {
1001 const result = inline for ([3]u8{ 'a', 'b', 'c' }) |byte| {1013 const result = inline for ([3]u8{ 'a', 'b', 'c' }) |byte| {
...@@ -1012,6 +1024,7 @@ test "comptime break operand passing through runtime condition converted to runt...@@ -1012,6 +1024,7 @@ test "comptime break operand passing through runtime condition converted to runt
1012}1024}
10131025
1014test "comptime break operand passing through runtime switch converted to runtime break" {1026test "comptime break operand passing through runtime switch converted to runtime break" {
1027 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1028 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10161029
1017 const S = struct {1030 const S = struct {
...@@ -1038,7 +1051,7 @@ test "equality of pointers to comptime const" {...@@ -1038,7 +1051,7 @@ test "equality of pointers to comptime const" {
1038test "storing an array of type in a field" {1051test "storing an array of type in a field" {
1039 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1052 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1040 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1041 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1054 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10421055
1043 const S = struct {1056 const S = struct {
1044 fn doTheTest() void {1057 fn doTheTest() void {
...@@ -1066,7 +1079,7 @@ test "storing an array of type in a field" {...@@ -1066,7 +1079,7 @@ test "storing an array of type in a field" {
10661079
1067test "pass pointer to field of comptime-only type as a runtime parameter" {1080test "pass pointer to field of comptime-only type as a runtime parameter" {
1068 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1081 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1069 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1082 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10701083
1071 const S = struct {1084 const S = struct {
1072 const Mixed = struct {1085 const Mixed = struct {
...@@ -1192,7 +1205,8 @@ test "lazy value is resolved as slice operand" {...@@ -1192,7 +1205,8 @@ test "lazy value is resolved as slice operand" {
1192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1194 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1207 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1195 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1208 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1209
1196 const A = struct { a: u32 };1210 const A = struct { a: u32 };
1197 var a: [512]u64 = undefined;1211 var a: [512]u64 = undefined;
11981212
...@@ -1203,6 +1217,8 @@ test "lazy value is resolved as slice operand" {...@@ -1203,6 +1217,8 @@ test "lazy value is resolved as slice operand" {
1203}1217}
12041218
1205test "break from inline loop depends on runtime condition" {1219test "break from inline loop depends on runtime condition" {
1220 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1221
1206 const S = struct {1222 const S = struct {
1207 fn foo(a: u8) bool {1223 fn foo(a: u8) bool {
1208 return a == 4;1224 return a == 4;
...@@ -1249,6 +1265,7 @@ test "inline for inside a runtime condition" {...@@ -1249,6 +1265,7 @@ test "inline for inside a runtime condition" {
1249}1265}
12501266
1251test "continue in inline for inside a comptime switch" {1267test "continue in inline for inside a comptime switch" {
1268 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1269 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12531270
1254 const arr = .{ 1, 2, 3 };1271 const arr = .{ 1, 2, 3 };
...@@ -1267,7 +1284,7 @@ test "continue in inline for inside a comptime switch" {...@@ -1267,7 +1284,7 @@ test "continue in inline for inside a comptime switch" {
1267}1284}
12681285
1269test "length of global array is determinable at comptime" {1286test "length of global array is determinable at comptime" {
1270 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1287 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12711288
1272 const S = struct {1289 const S = struct {
1273 var bytes: [1024]u8 = undefined;1290 var bytes: [1024]u8 = undefined;
...@@ -1316,7 +1333,7 @@ test "continue nested inline for loop in named block expr" {...@@ -1316,7 +1333,7 @@ test "continue nested inline for loop in named block expr" {
1316}1333}
13171334
1318test "x and false is comptime-known false" {1335test "x and false is comptime-known false" {
1319 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1336 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1337 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13211338
1322 const T = struct {1339 const T = struct {
...@@ -1344,7 +1361,7 @@ test "x and false is comptime-known false" {...@@ -1344,7 +1361,7 @@ test "x and false is comptime-known false" {
1344}1361}
13451362
1346test "x or true is comptime-known true" {1363test "x or true is comptime-known true" {
1347 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1364 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13491366
1350 const T = struct {1367 const T = struct {
...@@ -1372,6 +1389,7 @@ test "x or true is comptime-known true" {...@@ -1372,6 +1389,7 @@ test "x or true is comptime-known true" {
1372}1389}
13731390
1374test "non-optional and optional array elements concatenated" {1391test "non-optional and optional array elements concatenated" {
1392 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1391,6 +1409,8 @@ test "inline call in @TypeOf inherits is_inline property" {...@@ -1391,6 +1409,8 @@ test "inline call in @TypeOf inherits is_inline property" {
1391}1409}
13921410
1393test "comptime function turns function value to function pointer" {1411test "comptime function turns function value to function pointer" {
1412 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1413
1394 const S = struct {1414 const S = struct {
1395 fn fnPtr(function: anytype) *const @TypeOf(function) {1415 fn fnPtr(function: anytype) *const @TypeOf(function) {
1396 return &function;1416 return &function;
...@@ -1406,7 +1426,7 @@ test "comptime function turns function value to function pointer" {...@@ -1406,7 +1426,7 @@ test "comptime function turns function value to function pointer" {
1406}1426}
14071427
1408test "container level const and var have unique addresses" {1428test "container level const and var have unique addresses" {
1409 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1429 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14101430
1411 const S = struct {1431 const S = struct {
1412 x: i32,1432 x: i32,
...@@ -1451,6 +1471,8 @@ test "struct in comptime false branch is not evaluated" {...@@ -1451,6 +1471,8 @@ test "struct in comptime false branch is not evaluated" {
1451}1471}
14521472
1453test "result of nested switch assigned to variable" {1473test "result of nested switch assigned to variable" {
1474 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1475
1454 var zds: u32 = 0;1476 var zds: u32 = 0;
1455 zds = switch (zds) {1477 zds = switch (zds) {
1456 0 => switch (zds) {1478 0 => switch (zds) {
...@@ -1465,6 +1487,8 @@ test "result of nested switch assigned to variable" {...@@ -1465,6 +1487,8 @@ test "result of nested switch assigned to variable" {
1465}1487}
14661488
1467test "inline for loop of functions returning error unions" {1489test "inline for loop of functions returning error unions" {
1490 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1491
1468 const T1 = struct {1492 const T1 = struct {
1469 fn v() error{}!usize {1493 fn v() error{}!usize {
1470 return 1;1494 return 1;
...@@ -1519,6 +1543,8 @@ test "early exit in container level const" {...@@ -1519,6 +1543,8 @@ test "early exit in container level const" {
1519}1543}
15201544
1521test "@inComptime" {1545test "@inComptime" {
1546 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1547
1522 const S = struct {1548 const S = struct {
1523 fn inComptime() bool {1549 fn inComptime() bool {
1524 return @inComptime();1550 return @inComptime();
...@@ -1584,6 +1610,8 @@ test "comptime labeled block implicit exit" {...@@ -1584,6 +1610,8 @@ test "comptime labeled block implicit exit" {
1584}1610}
15851611
1586test "comptime block has intermediate runtime-known values" {1612test "comptime block has intermediate runtime-known values" {
1613 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1614
1587 const arr: [2]u8 = .{ 1, 2 };1615 const arr: [2]u8 = .{ 1, 2 };
15881616
1589 var idx: usize = undefined;1617 var idx: usize = undefined;
test/behavior/export_builtin.zig+3-3
...@@ -4,7 +4,7 @@ const expect = std.testing.expect;...@@ -4,7 +4,7 @@ const expect = std.testing.expect;
44
5test "exporting enum value" {5test "exporting enum value" {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;7 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
88
9 const S = struct {9 const S = struct {
10 const E = enum(c_int) { one, two };10 const E = enum(c_int) { one, two };
...@@ -18,7 +18,7 @@ test "exporting enum value" {...@@ -18,7 +18,7 @@ test "exporting enum value" {
1818
19test "exporting using namespace access" {19test "exporting using namespace access" {
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;21 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2222
23 const S = struct {23 const S = struct {
24 const Inner = struct {24 const Inner = struct {
...@@ -35,7 +35,7 @@ test "exporting using namespace access" {...@@ -35,7 +35,7 @@ test "exporting using namespace access" {
35test "exporting comptime-known value" {35test "exporting comptime-known value" {
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;38 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3939
40 const x: u32 = 10;40 const x: u32 = 10;
41 @export(&x, .{ .name = "exporting_comptime_known_value_foo" });41 @export(&x, .{ .name = "exporting_comptime_known_value_foo" });
test/behavior/export_keyword.zig+1-1
...@@ -43,7 +43,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {...@@ -43,7 +43,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {
43}43}
4444
45test "export function alias" {45test "export function alias" {
46 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;46 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4747
48 _ = struct {48 _ = struct {
49 fn foo_internal() callconv(.c) u32 {49 fn foo_internal() callconv(.c) u32 {
test/behavior/extern.zig+3-3
...@@ -4,7 +4,7 @@ const expect = std.testing.expect;...@@ -4,7 +4,7 @@ const expect = std.testing.expect;
44
5test "anyopaque extern symbol" {5test "anyopaque extern symbol" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;7 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
88
9 const a = @extern(*anyopaque, .{ .name = "a_mystery_symbol" });9 const a = @extern(*anyopaque, .{ .name = "a_mystery_symbol" });
10 const b: *i32 = @ptrCast(@alignCast(a));10 const b: *i32 = @ptrCast(@alignCast(a));
...@@ -15,7 +15,7 @@ export var a_mystery_symbol: i32 = 1234;...@@ -15,7 +15,7 @@ export var a_mystery_symbol: i32 = 1234;
1515
16test "function extern symbol" {16test "function extern symbol" {
17 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;18 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1919
20 const a = @extern(*const fn () callconv(.c) i32, .{ .name = "a_mystery_function" });20 const a = @extern(*const fn () callconv(.c) i32, .{ .name = "a_mystery_function" });
21 try expect(a() == 4567);21 try expect(a() == 4567);
...@@ -27,7 +27,7 @@ export fn a_mystery_function() i32 {...@@ -27,7 +27,7 @@ export fn a_mystery_function() i32 {
2727
28test "function extern symbol matches extern decl" {28test "function extern symbol matches extern decl" {
29 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;30 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3131
32 const S = struct {32 const S = struct {
33 extern fn another_mystery_function() u32;33 extern fn another_mystery_function() u32;
test/behavior/field_parent_ptr.zig+16-16
...@@ -2,7 +2,7 @@ const expect = @import("std").testing.expect;...@@ -2,7 +2,7 @@ const expect = @import("std").testing.expect;
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4test "@fieldParentPtr struct" {4test "@fieldParentPtr struct" {
5 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;5 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
77
8 const C = struct {8 const C = struct {
...@@ -139,7 +139,7 @@ test "@fieldParentPtr struct" {...@@ -139,7 +139,7 @@ test "@fieldParentPtr struct" {
139139
140test "@fieldParentPtr extern struct" {140test "@fieldParentPtr extern struct" {
141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;142 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
143143
144 const C = extern struct {144 const C = extern struct {
145 a: bool = true,145 a: bool = true,
...@@ -274,7 +274,7 @@ test "@fieldParentPtr extern struct" {...@@ -274,7 +274,7 @@ test "@fieldParentPtr extern struct" {
274}274}
275275
276test "@fieldParentPtr extern struct first zero-bit field" {276test "@fieldParentPtr extern struct first zero-bit field" {
277 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;277 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;278 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
279279
280 const C = extern struct {280 const C = extern struct {
...@@ -378,7 +378,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {...@@ -378,7 +378,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {
378}378}
379379
380test "@fieldParentPtr extern struct middle zero-bit field" {380test "@fieldParentPtr extern struct middle zero-bit field" {
381 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;381 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
382 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;382 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
383383
384 const C = extern struct {384 const C = extern struct {
...@@ -482,7 +482,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {...@@ -482,7 +482,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
482}482}
483483
484test "@fieldParentPtr extern struct last zero-bit field" {484test "@fieldParentPtr extern struct last zero-bit field" {
485 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;485 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
486 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
487487
488 const C = extern struct {488 const C = extern struct {
...@@ -587,7 +587,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {...@@ -587,7 +587,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {
587587
588test "@fieldParentPtr unaligned packed struct" {588test "@fieldParentPtr unaligned packed struct" {
589 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;589 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
590 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;590 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
591 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;591 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
592 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;592 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
593593
...@@ -725,7 +725,7 @@ test "@fieldParentPtr unaligned packed struct" {...@@ -725,7 +725,7 @@ test "@fieldParentPtr unaligned packed struct" {
725725
726test "@fieldParentPtr aligned packed struct" {726test "@fieldParentPtr aligned packed struct" {
727 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;727 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
728 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;728 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
729 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;729 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
730 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;730 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
731731
...@@ -863,7 +863,7 @@ test "@fieldParentPtr aligned packed struct" {...@@ -863,7 +863,7 @@ test "@fieldParentPtr aligned packed struct" {
863863
864test "@fieldParentPtr nested packed struct" {864test "@fieldParentPtr nested packed struct" {
865 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;865 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
866 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;866 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
867 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;867 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
868 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;868 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
869869
...@@ -1026,7 +1026,7 @@ test "@fieldParentPtr nested packed struct" {...@@ -1026,7 +1026,7 @@ test "@fieldParentPtr nested packed struct" {
10261026
1027test "@fieldParentPtr packed struct first zero-bit field" {1027test "@fieldParentPtr packed struct first zero-bit field" {
1028 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;1028 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1029 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1029 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1030 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1030 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10321032
...@@ -1132,7 +1132,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {...@@ -1132,7 +1132,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
11321132
1133test "@fieldParentPtr packed struct middle zero-bit field" {1133test "@fieldParentPtr packed struct middle zero-bit field" {
1134 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;1134 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1135 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1135 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1136 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1136 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11381138
...@@ -1238,7 +1238,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {...@@ -1238,7 +1238,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
12381238
1239test "@fieldParentPtr packed struct last zero-bit field" {1239test "@fieldParentPtr packed struct last zero-bit field" {
1240 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;1240 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1241 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1241 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1242 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1242 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12441244
...@@ -1344,7 +1344,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {...@@ -1344,7 +1344,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
13441344
1345test "@fieldParentPtr tagged union" {1345test "@fieldParentPtr tagged union" {
1346 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1346 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1347 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1347 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13481348
1349 const C = union(enum) {1349 const C = union(enum) {
1350 a: bool,1350 a: bool,
...@@ -1479,7 +1479,7 @@ test "@fieldParentPtr tagged union" {...@@ -1479,7 +1479,7 @@ test "@fieldParentPtr tagged union" {
1479}1479}
14801480
1481test "@fieldParentPtr untagged union" {1481test "@fieldParentPtr untagged union" {
1482 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1482 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1483 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1483 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14841484
1485 const C = union {1485 const C = union {
...@@ -1617,7 +1617,7 @@ test "@fieldParentPtr untagged union" {...@@ -1617,7 +1617,7 @@ test "@fieldParentPtr untagged union" {
1617test "@fieldParentPtr extern union" {1617test "@fieldParentPtr extern union" {
1618 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;1618 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
1619 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1619 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1620 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1620 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16211621
1622 const C = extern union {1622 const C = extern union {
1623 a: bool,1623 a: bool,
...@@ -1752,7 +1752,7 @@ test "@fieldParentPtr extern union" {...@@ -1752,7 +1752,7 @@ test "@fieldParentPtr extern union" {
1752}1752}
17531753
1754test "@fieldParentPtr packed union" {1754test "@fieldParentPtr packed union" {
1755 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1755 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1756 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1756 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17581758
...@@ -1896,7 +1896,7 @@ test "@fieldParentPtr packed union" {...@@ -1896,7 +1896,7 @@ test "@fieldParentPtr packed union" {
18961896
1897test "@fieldParentPtr tagged union all zero-bit fields" {1897test "@fieldParentPtr tagged union all zero-bit fields" {
1898 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1898 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1899 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1899 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19001900
1901 const C = union(enum) {1901 const C = union(enum) {
1902 a: u0,1902 a: u0,
test/behavior/floatop.zig+73-51
...@@ -28,7 +28,7 @@ test "add f32/f64" {...@@ -28,7 +28,7 @@ test "add f32/f64" {
28}28}
2929
30test "add f80/f128/c_longdouble" {30test "add f80/f128/c_longdouble" {
31 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;31 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3333
34 try testAdd(f80);34 try testAdd(f80);
...@@ -62,7 +62,7 @@ test "sub f32/f64" {...@@ -62,7 +62,7 @@ test "sub f32/f64" {
62}62}
6363
64test "sub f80/f128/c_longdouble" {64test "sub f80/f128/c_longdouble" {
65 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;65 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6767
68 try testSub(f80);68 try testSub(f80);
...@@ -96,7 +96,7 @@ test "mul f32/f64" {...@@ -96,7 +96,7 @@ test "mul f32/f64" {
96}96}
9797
98test "mul f80/f128/c_longdouble" {98test "mul f80/f128/c_longdouble" {
99 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;99 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
101101
102 try testMul(f80);102 try testMul(f80);
...@@ -116,6 +116,7 @@ fn testMul(comptime T: type) !void {...@@ -116,6 +116,7 @@ fn testMul(comptime T: type) !void {
116}116}
117117
118test "cmp f16" {118test "cmp f16" {
119 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
121122
...@@ -124,7 +125,7 @@ test "cmp f16" {...@@ -124,7 +125,7 @@ test "cmp f16" {
124}125}
125126
126test "cmp f32" {127test "cmp f32" {
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;128 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765130 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
130 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765131 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
...@@ -137,7 +138,7 @@ test "cmp f64" {...@@ -137,7 +138,7 @@ test "cmp f64" {
137 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765139 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
139 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765140 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
140 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe141 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
141142
142 try testCmp(f64);143 try testCmp(f64);
143 try comptime testCmp(f64);144 try comptime testCmp(f64);
...@@ -146,7 +147,7 @@ test "cmp f64" {...@@ -146,7 +147,7 @@ test "cmp f64" {
146test "cmp f128" {147test "cmp f128" {
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;149 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
149 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;150 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
150151
151 try testCmp(f128);152 try testCmp(f128);
152 try comptime testCmp(f128);153 try comptime testCmp(f128);
...@@ -154,7 +155,7 @@ test "cmp f128" {...@@ -154,7 +155,7 @@ test "cmp f128" {
154155
155test "cmp f80/c_longdouble" {156test "cmp f80/c_longdouble" {
156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;158 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
159160
160 try testCmp(f80);161 try testCmp(f80);
...@@ -218,6 +219,7 @@ fn testCmp(comptime T: type) !void {...@@ -218,6 +219,7 @@ fn testCmp(comptime T: type) !void {
218}219}
219220
220test "vector cmp f16" {221test "vector cmp f16" {
222 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;225 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -229,7 +231,7 @@ test "vector cmp f16" {...@@ -229,7 +231,7 @@ test "vector cmp f16" {
229231
230test "vector cmp f32" {232test "vector cmp f32" {
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
232 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;234 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;236 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
235 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isArm()) return error.SkipZigTest;237 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isArm()) return error.SkipZigTest;
...@@ -248,7 +250,7 @@ test "vector cmp f64" {...@@ -248,7 +250,7 @@ test "vector cmp f64" {
248 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765250 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
249 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765251 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isAarch64() and builtin.os.tag == .netbsd) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/36765
250 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;252 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
251 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe253 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
252254
253 try testCmpVector(f64);255 try testCmpVector(f64);
254 try comptime testCmpVector(f64);256 try comptime testCmpVector(f64);
...@@ -257,7 +259,7 @@ test "vector cmp f64" {...@@ -257,7 +259,7 @@ test "vector cmp f64" {
257test "vector cmp f128" {259test "vector cmp f128" {
258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;262 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;263 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
262 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
263265
...@@ -269,7 +271,7 @@ test "vector cmp f80/c_longdouble" {...@@ -269,7 +271,7 @@ test "vector cmp f80/c_longdouble" {
269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;272 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
271 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;273 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
272 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;274 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
273275
274 try testCmpVector(f80);276 try testCmpVector(f80);
275 try comptime testCmpVector(f80);277 try comptime testCmpVector(f80);
...@@ -359,7 +361,7 @@ test "@sqrt f16" {...@@ -359,7 +361,7 @@ test "@sqrt f16" {
359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
361 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;363 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;364 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
363365
364 try testSqrt(f16);366 try testSqrt(f16);
365 try comptime testSqrt(f16);367 try comptime testSqrt(f16);
...@@ -368,7 +370,7 @@ test "@sqrt f16" {...@@ -368,7 +370,7 @@ test "@sqrt f16" {
368test "@sqrt f32/f64" {370test "@sqrt f32/f64" {
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO372 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;373 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
372374
373 try testSqrt(f32);375 try testSqrt(f32);
374 try comptime testSqrt(f32);376 try comptime testSqrt(f32);
...@@ -380,7 +382,7 @@ test "@sqrt f80/f128/c_longdouble" {...@@ -380,7 +382,7 @@ test "@sqrt f80/f128/c_longdouble" {
380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
383 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;385 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
384 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;386 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
385387
386 try testSqrt(f80);388 try testSqrt(f80);
...@@ -459,6 +461,7 @@ fn testSqrt(comptime T: type) !void {...@@ -459,6 +461,7 @@ fn testSqrt(comptime T: type) !void {
459}461}
460462
461test "@sqrt with vectors" {463test "@sqrt with vectors" {
464 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO466 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
464 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;467 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -481,7 +484,7 @@ test "@sin f16" {...@@ -481,7 +484,7 @@ test "@sin f16" {
481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO484 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO485 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
484 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;487 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
485488
486 try testSin(f16);489 try testSin(f16);
487 try comptime testSin(f16);490 try comptime testSin(f16);
...@@ -491,7 +494,7 @@ test "@sin f32/f64" {...@@ -491,7 +494,7 @@ test "@sin f32/f64" {
491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO495 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
493 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;496 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
494 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;497 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
495498
496 try testSin(f32);499 try testSin(f32);
497 comptime try testSin(f32);500 comptime try testSin(f32);
...@@ -503,7 +506,7 @@ test "@sin f80/f128/c_longdouble" {...@@ -503,7 +506,7 @@ test "@sin f80/f128/c_longdouble" {
503 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
505 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;508 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
506 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;509 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
507510
508 try testSin(f80);511 try testSin(f80);
509 comptime try testSin(f80);512 comptime try testSin(f80);
...@@ -526,6 +529,7 @@ fn testSin(comptime T: type) !void {...@@ -526,6 +529,7 @@ fn testSin(comptime T: type) !void {
526}529}
527530
528test "@sin with vectors" {531test "@sin with vectors" {
532 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
529 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
530 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
531 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;535 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -548,7 +552,7 @@ test "@cos f16" {...@@ -548,7 +552,7 @@ test "@cos f16" {
548 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO552 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO553 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
550 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;554 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
551 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;555 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
552556
553 try testCos(f16);557 try testCos(f16);
554 try comptime testCos(f16);558 try comptime testCos(f16);
...@@ -558,7 +562,7 @@ test "@cos f32/f64" {...@@ -558,7 +562,7 @@ test "@cos f32/f64" {
558 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO562 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
559 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO563 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
560 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;564 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
561 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;565 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
562566
563 try testCos(f32);567 try testCos(f32);
564 try comptime testCos(f32);568 try comptime testCos(f32);
...@@ -570,7 +574,7 @@ test "@cos f80/f128/c_longdouble" {...@@ -570,7 +574,7 @@ test "@cos f80/f128/c_longdouble" {
570 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO574 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
571 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;576 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
573 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;577 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
574578
575 try testCos(f80);579 try testCos(f80);
576 try comptime testCos(f80);580 try comptime testCos(f80);
...@@ -593,6 +597,7 @@ fn testCos(comptime T: type) !void {...@@ -593,6 +597,7 @@ fn testCos(comptime T: type) !void {
593}597}
594598
595test "@cos with vectors" {599test "@cos with vectors" {
600 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
596 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;601 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
597 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
598 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;603 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -615,7 +620,7 @@ test "@tan f16" {...@@ -615,7 +620,7 @@ test "@tan f16" {
615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO620 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO621 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
617 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;622 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
618 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;623 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
619624
620 try testTan(f16);625 try testTan(f16);
621 try comptime testTan(f16);626 try comptime testTan(f16);
...@@ -625,7 +630,7 @@ test "@tan f32/f64" {...@@ -625,7 +630,7 @@ test "@tan f32/f64" {
625 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO630 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
627 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;632 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
628 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;633 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
629634
630 try testTan(f32);635 try testTan(f32);
631 try comptime testTan(f32);636 try comptime testTan(f32);
...@@ -637,7 +642,7 @@ test "@tan f80/f128/c_longdouble" {...@@ -637,7 +642,7 @@ test "@tan f80/f128/c_longdouble" {
637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO642 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO643 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
639 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;644 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
640 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;645 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
641646
642 try testTan(f80);647 try testTan(f80);
643 try comptime testTan(f80);648 try comptime testTan(f80);
...@@ -660,6 +665,7 @@ fn testTan(comptime T: type) !void {...@@ -660,6 +665,7 @@ fn testTan(comptime T: type) !void {
660}665}
661666
662test "@tan with vectors" {667test "@tan with vectors" {
668 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;669 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
664 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO670 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
665 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;671 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -682,7 +688,7 @@ test "@exp f16" {...@@ -682,7 +688,7 @@ test "@exp f16" {
682 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO688 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
683 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO689 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
684 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;690 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
685 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;691 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
686692
687 try testExp(f16);693 try testExp(f16);
688 try comptime testExp(f16);694 try comptime testExp(f16);
...@@ -692,7 +698,7 @@ test "@exp f32/f64" {...@@ -692,7 +698,7 @@ test "@exp f32/f64" {
692 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO698 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
693 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
694 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;700 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
695 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;701 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
696702
697 try testExp(f32);703 try testExp(f32);
698 try comptime testExp(f32);704 try comptime testExp(f32);
...@@ -704,7 +710,7 @@ test "@exp f80/f128/c_longdouble" {...@@ -704,7 +710,7 @@ test "@exp f80/f128/c_longdouble" {
704 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO710 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO711 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
706 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;712 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
707 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;713 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
708714
709 try testExp(f80);715 try testExp(f80);
710 try comptime testExp(f80);716 try comptime testExp(f80);
...@@ -731,6 +737,7 @@ fn testExp(comptime T: type) !void {...@@ -731,6 +737,7 @@ fn testExp(comptime T: type) !void {
731}737}
732738
733test "@exp with vectors" {739test "@exp with vectors" {
740 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
734 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;741 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
735 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO742 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
736 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;743 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -753,7 +760,7 @@ test "@exp2 f16" {...@@ -753,7 +760,7 @@ test "@exp2 f16" {
753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO760 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
754 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO761 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
755 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;762 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
756 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;763 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
757764
758 try testExp2(f16);765 try testExp2(f16);
759 try comptime testExp2(f16);766 try comptime testExp2(f16);
...@@ -763,7 +770,7 @@ test "@exp2 f32/f64" {...@@ -763,7 +770,7 @@ test "@exp2 f32/f64" {
763 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO770 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
764 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO771 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
765 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;772 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
766 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;773 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
767774
768 try testExp2(f32);775 try testExp2(f32);
769 try comptime testExp2(f32);776 try comptime testExp2(f32);
...@@ -775,7 +782,7 @@ test "@exp2 f80/f128/c_longdouble" {...@@ -775,7 +782,7 @@ test "@exp2 f80/f128/c_longdouble" {
775 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
776 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO783 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
777 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
778 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;785 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
779786
780 try testExp2(f80);787 try testExp2(f80);
781 try comptime testExp2(f80);788 try comptime testExp2(f80);
...@@ -797,6 +804,7 @@ fn testExp2(comptime T: type) !void {...@@ -797,6 +804,7 @@ fn testExp2(comptime T: type) !void {
797}804}
798805
799test "@exp2 with @vectors" {806test "@exp2 with @vectors" {
807 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
800 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;808 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;810 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -819,7 +827,7 @@ test "@log f16" {...@@ -819,7 +827,7 @@ test "@log f16" {
819 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
820 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
821 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;829 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
822 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;830 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
823831
824 try testLog(f16);832 try testLog(f16);
825 try comptime testLog(f16);833 try comptime testLog(f16);
...@@ -829,7 +837,7 @@ test "@log f32/f64" {...@@ -829,7 +837,7 @@ test "@log f32/f64" {
829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO837 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
830 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO838 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;839 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
832 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;840 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
833841
834 try testLog(f32);842 try testLog(f32);
835 try comptime testLog(f32);843 try comptime testLog(f32);
...@@ -841,7 +849,7 @@ test "@log f80/f128/c_longdouble" {...@@ -841,7 +849,7 @@ test "@log f80/f128/c_longdouble" {
841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO849 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO850 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;851 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
844 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;852 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
845853
846 try testLog(f80);854 try testLog(f80);
847 try comptime testLog(f80);855 try comptime testLog(f80);
...@@ -867,7 +875,7 @@ test "@log with @vectors" {...@@ -867,7 +875,7 @@ test "@log with @vectors" {
867 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO875 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
868 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO876 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
869 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;877 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
870 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;878 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
871879
872 {880 {
873 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };881 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
...@@ -884,7 +892,7 @@ test "@log2 f16" {...@@ -884,7 +892,7 @@ test "@log2 f16" {
884 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO892 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
885 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO893 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
886 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;894 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
887 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;895 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
888896
889 try testLog2(f16);897 try testLog2(f16);
890 try comptime testLog2(f16);898 try comptime testLog2(f16);
...@@ -894,7 +902,7 @@ test "@log2 f32/f64" {...@@ -894,7 +902,7 @@ test "@log2 f32/f64" {
894 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO902 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
895 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO903 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
896 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;904 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
897 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;905 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
898906
899 try testLog2(f32);907 try testLog2(f32);
900 try comptime testLog2(f32);908 try comptime testLog2(f32);
...@@ -906,7 +914,7 @@ test "@log2 f80/f128/c_longdouble" {...@@ -906,7 +914,7 @@ test "@log2 f80/f128/c_longdouble" {
906 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO914 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
907 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO915 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
908 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;916 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
909 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;917 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
910918
911 try testLog2(f80);919 try testLog2(f80);
912 try comptime testLog2(f80);920 try comptime testLog2(f80);
...@@ -928,6 +936,7 @@ fn testLog2(comptime T: type) !void {...@@ -928,6 +936,7 @@ fn testLog2(comptime T: type) !void {
928}936}
929937
930test "@log2 with vectors" {938test "@log2 with vectors" {
939 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
931 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;940 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
932 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
933 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;942 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -959,7 +968,7 @@ test "@log10 f16" {...@@ -959,7 +968,7 @@ test "@log10 f16" {
959 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
960 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
961 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;970 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
962 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;971 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
963972
964 try testLog10(f16);973 try testLog10(f16);
965 try comptime testLog10(f16);974 try comptime testLog10(f16);
...@@ -969,7 +978,7 @@ test "@log10 f32/f64" {...@@ -969,7 +978,7 @@ test "@log10 f32/f64" {
969 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO978 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
970 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
971 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;980 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
972 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;981 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
973982
974 try testLog10(f32);983 try testLog10(f32);
975 try comptime testLog10(f32);984 try comptime testLog10(f32);
...@@ -981,7 +990,7 @@ test "@log10 f80/f128/c_longdouble" {...@@ -981,7 +990,7 @@ test "@log10 f80/f128/c_longdouble" {
981 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO990 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
982 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO991 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
983 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;992 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
984 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;993 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
985994
986 try testLog10(f80);995 try testLog10(f80);
987 try comptime testLog10(f80);996 try comptime testLog10(f80);
...@@ -1006,7 +1015,7 @@ test "@log10 with vectors" {...@@ -1006,7 +1015,7 @@ test "@log10 with vectors" {
1006 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1007 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1016 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1008 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1017 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1009 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1018 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10101019
1011 try testLog10WithVectors();1020 try testLog10WithVectors();
1012 try comptime testLog10WithVectors();1021 try comptime testLog10WithVectors();
...@@ -1026,7 +1035,7 @@ test "@abs f16" {...@@ -1026,7 +1035,7 @@ test "@abs f16" {
1026 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1035 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1027 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1036 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1028 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1037 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1029 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe1038 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
10301039
1031 try testFabs(f16);1040 try testFabs(f16);
1032 try comptime testFabs(f16);1041 try comptime testFabs(f16);
...@@ -1035,7 +1044,7 @@ test "@abs f16" {...@@ -1035,7 +1044,7 @@ test "@abs f16" {
1035test "@abs f32/f64" {1044test "@abs f32/f64" {
1036 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1045 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1046 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe1047 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
10391048
1040 try testFabs(f32);1049 try testFabs(f32);
1041 try comptime testFabs(f32);1050 try comptime testFabs(f32);
...@@ -1046,7 +1055,7 @@ test "@abs f32/f64" {...@@ -1046,7 +1055,7 @@ test "@abs f32/f64" {
1046test "@abs f80/f128/c_longdouble" {1055test "@abs f80/f128/c_longdouble" {
1047 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1056 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1048 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1057 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1049 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1058 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1050 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1059 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10511060
1052 try testFabs(f80);1061 try testFabs(f80);
...@@ -1122,6 +1131,7 @@ fn testFabs(comptime T: type) !void {...@@ -1122,6 +1131,7 @@ fn testFabs(comptime T: type) !void {
1122}1131}
11231132
1124test "@abs with vectors" {1133test "@abs with vectors" {
1134 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1127 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1137 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1141,6 +1151,7 @@ fn testFabsWithVectors() !void {...@@ -1141,6 +1151,7 @@ fn testFabsWithVectors() !void {
1141}1151}
11421152
1143test "@floor f16" {1153test "@floor f16" {
1154 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1146 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1157 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1150,6 +1161,7 @@ test "@floor f16" {...@@ -1150,6 +1161,7 @@ test "@floor f16" {
1150}1161}
11511162
1152test "@floor f32/f64" {1163test "@floor f32/f64" {
1164 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1154 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1155 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1163,7 +1175,7 @@ test "@floor f32/f64" {...@@ -1163,7 +1175,7 @@ test "@floor f32/f64" {
1163test "@floor f80/f128/c_longdouble" {1175test "@floor f80/f128/c_longdouble" {
1164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1166 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1178 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1179 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11681180
1169 try testFloor(f80);1181 try testFloor(f80);
...@@ -1205,6 +1217,7 @@ fn testFloor(comptime T: type) !void {...@@ -1205,6 +1217,7 @@ fn testFloor(comptime T: type) !void {
1205}1217}
12061218
1207test "@floor with vectors" {1219test "@floor with vectors" {
1220 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1210 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1223 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1224,6 +1237,7 @@ fn testFloorWithVectors() !void {...@@ -1224,6 +1237,7 @@ fn testFloorWithVectors() !void {
1224}1237}
12251238
1226test "@ceil f16" {1239test "@ceil f16" {
1240 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1227 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1229 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1243 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1233,6 +1247,7 @@ test "@ceil f16" {...@@ -1233,6 +1247,7 @@ test "@ceil f16" {
1233}1247}
12341248
1235test "@ceil f32/f64" {1249test "@ceil f32/f64" {
1250 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1238 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1253 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1246,7 +1261,7 @@ test "@ceil f32/f64" {...@@ -1246,7 +1261,7 @@ test "@ceil f32/f64" {
1246test "@ceil f80/f128/c_longdouble" {1261test "@ceil f80/f128/c_longdouble" {
1247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1249 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1264 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1250 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1265 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12511266
1252 try testCeil(f80);1267 try testCeil(f80);
...@@ -1260,7 +1275,7 @@ test "@ceil f80/f128/c_longdouble" {...@@ -1260,7 +1275,7 @@ test "@ceil f80/f128/c_longdouble" {
1260test "@ceil f80 maxInt(u64)" {1275test "@ceil f80 maxInt(u64)" {
1261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1263 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1278 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1264 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12651280
1266 var x: u64 = std.math.maxInt(u64);1281 var x: u64 = std.math.maxInt(u64);
...@@ -1300,6 +1315,7 @@ fn testCeil(comptime T: type) !void {...@@ -1300,6 +1315,7 @@ fn testCeil(comptime T: type) !void {
1300}1315}
13011316
1302test "@ceil with vectors" {1317test "@ceil with vectors" {
1318 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1305 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1321 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1319,6 +1335,7 @@ fn testCeilWithVectors() !void {...@@ -1319,6 +1335,7 @@ fn testCeilWithVectors() !void {
1319}1335}
13201336
1321test "@trunc f16" {1337test "@trunc f16" {
1338 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1324 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1341 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1328,6 +1345,7 @@ test "@trunc f16" {...@@ -1328,6 +1345,7 @@ test "@trunc f16" {
1328}1345}
13291346
1330test "@trunc f32/f64" {1347test "@trunc f32/f64" {
1348 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1331 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1350 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1351 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1341,7 +1359,7 @@ test "@trunc f32/f64" {...@@ -1341,7 +1359,7 @@ test "@trunc f32/f64" {
1341test "@trunc f80/f128/c_longdouble" {1359test "@trunc f80/f128/c_longdouble" {
1342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1344 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1362 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1345 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1363 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13461364
1347 try testTrunc(f80);1365 try testTrunc(f80);
...@@ -1383,6 +1401,7 @@ fn testTrunc(comptime T: type) !void {...@@ -1383,6 +1401,7 @@ fn testTrunc(comptime T: type) !void {
1383}1401}
13841402
1385test "@trunc with vectors" {1403test "@trunc with vectors" {
1404 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1388 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1407 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1402,6 +1421,7 @@ fn testTruncWithVectors() !void {...@@ -1402,6 +1421,7 @@ fn testTruncWithVectors() !void {
1402}1421}
14031422
1404test "neg f16" {1423test "neg f16" {
1424 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1407 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1427 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1411,6 +1431,7 @@ test "neg f16" {...@@ -1411,6 +1431,7 @@ test "neg f16" {
1411}1431}
14121432
1413test "neg f32/f64" {1433test "neg f32/f64" {
1434 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1435 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1436 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1416 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1437 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1424,7 +1445,7 @@ test "neg f32/f64" {...@@ -1424,7 +1445,7 @@ test "neg f32/f64" {
1424test "neg f80/f128/c_longdouble" {1445test "neg f80/f128/c_longdouble" {
1425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1447 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1427 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1448 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1428 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1449 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14291450
1430 try testNeg(f80);1451 try testNeg(f80);
...@@ -1505,7 +1526,7 @@ fn testNeg(comptime T: type) !void {...@@ -1505,7 +1526,7 @@ fn testNeg(comptime T: type) !void {
1505}1526}
15061527
1507test "negate f80" {1528test "negate f80" {
1508 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1529 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15091530
1510 var f: f80 = 0.0;1531 var f: f80 = 0.0;
1511 const a: u80 = @bitCast(f);1532 const a: u80 = @bitCast(f);
...@@ -1539,7 +1560,7 @@ test "f128 at compile time is lossy" {...@@ -1539,7 +1560,7 @@ test "f128 at compile time is lossy" {
1539test "comptime fixed-width float zero divided by zero produces NaN" {1560test "comptime fixed-width float zero divided by zero produces NaN" {
1540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1562 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1542 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1563 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1543 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1564 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15441565
1545 inline for (.{ f16, f32, f64, f80, f128 }) |F| {1566 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
...@@ -1548,6 +1569,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {...@@ -1548,6 +1569,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
1548}1569}
15491570
1550test "comptime fixed-width float non-zero divided by zero produces signed Inf" {1571test "comptime fixed-width float non-zero divided by zero produces signed Inf" {
1572 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1551 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1573 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1552 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1574 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15531575
...@@ -1691,7 +1713,7 @@ test "comptime calls are only memoized when float arguments are bit-for-bit equa...@@ -1691,7 +1713,7 @@ test "comptime calls are only memoized when float arguments are bit-for-bit equa
1691test "result location forwarded through unary float builtins" {1713test "result location forwarded through unary float builtins" {
1692 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1693 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1715 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1694 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1716 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16951717
1696 const S = struct {1718 const S = struct {
1697 var x: u32 = 10;1719 var x: u32 = 10;
test/behavior/fn.zig+35-13
...@@ -21,6 +21,8 @@ fn testLocVars(b: i32) void {...@@ -21,6 +21,8 @@ fn testLocVars(b: i32) void {
21}21}
2222
23test "mutable local variables" {23test "mutable local variables" {
24 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
25
24 var zero: i32 = 0;26 var zero: i32 = 0;
25 _ = &zero;27 _ = &zero;
26 try expect(zero == 0);28 try expect(zero == 0);
...@@ -70,13 +72,14 @@ fn outer(y: u32) *const fn (u32) u32 {...@@ -70,13 +72,14 @@ fn outer(y: u32) *const fn (u32) u32 {
70}72}
7173
72test "return inner function which references comptime variable of outer function" {74test "return inner function which references comptime variable of outer function" {
73 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;75 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7476
75 const func = outer(10);77 const func = outer(10);
76 try expect(func(3) == 7);78 try expect(func(3) == 7);
77}79}
7880
79test "discard the result of a function that returns a struct" {81test "discard the result of a function that returns a struct" {
82 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
80 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8285
...@@ -101,7 +104,7 @@ test "discard the result of a function that returns a struct" {...@@ -101,7 +104,7 @@ test "discard the result of a function that returns a struct" {
101test "inline function call that calls optional function pointer, return pointer at callsite interacts correctly with callsite return type" {104test "inline function call that calls optional function pointer, return pointer at callsite interacts correctly with callsite return type" {
102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
104 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;107 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
105108
106 const S = struct {109 const S = struct {
107 field: u32,110 field: u32,
...@@ -147,7 +150,7 @@ fn fnWithUnreachable() noreturn {...@@ -147,7 +150,7 @@ fn fnWithUnreachable() noreturn {
147150
148test "extern struct with stdcallcc fn pointer" {151test "extern struct with stdcallcc fn pointer" {
149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;153 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
151154
152 const S = extern struct {155 const S = extern struct {
153 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .{ .x86_stdcall = .{} } else .c) i32,156 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .{ .x86_stdcall = .{} } else .c) i32,
...@@ -175,6 +178,7 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {...@@ -175,6 +178,7 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {
175}178}
176179
177test "function with complex callconv and return type expressions" {180test "function with complex callconv and return type expressions" {
181 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180184
...@@ -182,6 +186,7 @@ test "function with complex callconv and return type expressions" {...@@ -182,6 +186,7 @@ test "function with complex callconv and return type expressions" {
182}186}
183187
184test "pass by non-copying value" {188test "pass by non-copying value" {
189 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
186191
187 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);192 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
...@@ -197,6 +202,7 @@ fn addPointCoords(pt: Point) i32 {...@@ -197,6 +202,7 @@ fn addPointCoords(pt: Point) i32 {
197}202}
198203
199test "pass by non-copying value through var arg" {204test "pass by non-copying value through var arg" {
205 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
201207
202 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);208 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
...@@ -208,6 +214,7 @@ fn addPointCoordsVar(pt: anytype) !i32 {...@@ -208,6 +214,7 @@ fn addPointCoordsVar(pt: anytype) !i32 {
208}214}
209215
210test "pass by non-copying value as method" {216test "pass by non-copying value as method" {
217 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212219
213 var pt = Point2{ .x = 1, .y = 2 };220 var pt = Point2{ .x = 1, .y = 2 };
...@@ -224,6 +231,7 @@ const Point2 = struct {...@@ -224,6 +231,7 @@ const Point2 = struct {
224};231};
225232
226test "pass by non-copying value as method, which is generic" {233test "pass by non-copying value as method, which is generic" {
234 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228236
229 var pt = Point3{ .x = 1, .y = 2 };237 var pt = Point3{ .x = 1, .y = 2 };
...@@ -252,7 +260,7 @@ test "pass by non-copying value as method, at comptime" {...@@ -252,7 +260,7 @@ test "pass by non-copying value as method, at comptime" {
252test "implicit cast fn call result to optional in field result" {260test "implicit cast fn call result to optional in field result" {
253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
254 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;263 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
256264
257 const S = struct {265 const S = struct {
258 fn entry() !void {266 fn entry() !void {
...@@ -290,6 +298,7 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void {...@@ -290,6 +298,7 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void {
290}298}
291299
292test "call function with empty string" {300test "call function with empty string" {
301 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
293 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
294303
295 acceptsString("");304 acceptsString("");
...@@ -302,7 +311,7 @@ fn acceptsString(foo: []u8) void {...@@ -302,7 +311,7 @@ fn acceptsString(foo: []u8) void {
302test "function pointers" {311test "function pointers" {
303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;314 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
306315
307 const fns = [_]*const @TypeOf(fn1){316 const fns = [_]*const @TypeOf(fn1){
308 &fn1,317 &fn1,
...@@ -337,6 +346,7 @@ fn numberLiteralArg(a: anytype) !void {...@@ -337,6 +346,7 @@ fn numberLiteralArg(a: anytype) !void {
337}346}
338347
339test "function call with anon list literal" {348test "function call with anon list literal" {
349 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO350 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342352
...@@ -356,6 +366,7 @@ test "function call with anon list literal" {...@@ -356,6 +366,7 @@ test "function call with anon list literal" {
356}366}
357367
358test "function call with anon list literal - 2D" {368test "function call with anon list literal - 2D" {
369 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO370 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
360 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO371 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
361372
...@@ -394,6 +405,8 @@ test "ability to give comptime types and non comptime types to same parameter" {...@@ -394,6 +405,8 @@ test "ability to give comptime types and non comptime types to same parameter" {
394}405}
395406
396test "function with inferred error set but returning no error" {407test "function with inferred error set but returning no error" {
408 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
409
397 const S = struct {410 const S = struct {
398 fn foo() !void {}411 fn foo() !void {}
399 };412 };
...@@ -404,7 +417,7 @@ test "function with inferred error set but returning no error" {...@@ -404,7 +417,7 @@ test "function with inferred error set but returning no error" {
404417
405test "import passed byref to function in return type" {418test "import passed byref to function in return type" {
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;420 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
408421
409 const S = struct {422 const S = struct {
410 fn get() @import("std").ArrayList(i32) {423 fn get() @import("std").ArrayList(i32) {
...@@ -418,7 +431,7 @@ test "import passed byref to function in return type" {...@@ -418,7 +431,7 @@ test "import passed byref to function in return type" {
418431
419test "implicit cast function to function ptr" {432test "implicit cast function to function ptr" {
420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;434 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
422435
423 const S1 = struct {436 const S1 = struct {
424 export fn someFunctionThatReturnsAValue() c_int {437 export fn someFunctionThatReturnsAValue() c_int {
...@@ -439,7 +452,7 @@ test "implicit cast function to function ptr" {...@@ -439,7 +452,7 @@ test "implicit cast function to function ptr" {
439test "method call with optional and error union first param" {452test "method call with optional and error union first param" {
440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
441 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;455 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
443456
444 const S = struct {457 const S = struct {
445 x: i32 = 1234,458 x: i32 = 1234,
...@@ -459,7 +472,7 @@ test "method call with optional and error union first param" {...@@ -459,7 +472,7 @@ test "method call with optional and error union first param" {
459test "method call with optional pointer first param" {472test "method call with optional pointer first param" {
460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO473 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO474 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
462 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;475 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
463476
464 const S = struct {477 const S = struct {
465 x: i32 = 1234,478 x: i32 = 1234,
...@@ -477,7 +490,7 @@ test "method call with optional pointer first param" {...@@ -477,7 +490,7 @@ test "method call with optional pointer first param" {
477test "using @ptrCast on function pointers" {490test "using @ptrCast on function pointers" {
478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO492 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;493 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
481494
482 const S = struct {495 const S = struct {
483 const A = struct { data: [4]u8 };496 const A = struct { data: [4]u8 };
...@@ -514,6 +527,8 @@ test "function returns function returning type" {...@@ -514,6 +527,8 @@ test "function returns function returning type" {
514}527}
515528
516test "peer type resolution of inferred error set with non-void payload" {529test "peer type resolution of inferred error set with non-void payload" {
530 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
531
517 const S = struct {532 const S = struct {
518 fn openDataFile(mode: enum { read, write }) !u32 {533 fn openDataFile(mode: enum { read, write }) !u32 {
519 return switch (mode) {534 return switch (mode) {
...@@ -532,6 +547,8 @@ test "peer type resolution of inferred error set with non-void payload" {...@@ -532,6 +547,8 @@ test "peer type resolution of inferred error set with non-void payload" {
532}547}
533548
534test "lazy values passed to anytype parameter" {549test "lazy values passed to anytype parameter" {
550 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
551
535 const A = struct {552 const A = struct {
536 a: u32,553 a: u32,
537 fn foo(comptime a: anytype) !void {554 fn foo(comptime a: anytype) !void {
...@@ -570,7 +587,7 @@ test "pass and return comptime-only types" {...@@ -570,7 +587,7 @@ test "pass and return comptime-only types" {
570587
571test "pointer to alias behaves same as pointer to function" {588test "pointer to alias behaves same as pointer to function" {
572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
573 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;590 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
574591
575 const S = struct {592 const S = struct {
576 fn foo() u32 {593 fn foo() u32 {
...@@ -593,6 +610,7 @@ test "comptime parameters don't have to be marked comptime if only called at com...@@ -593,6 +610,7 @@ test "comptime parameters don't have to be marked comptime if only called at com
593}610}
594611
595test "inline function with comptime-known comptime-only return type called at runtime" {612test "inline function with comptime-known comptime-only return type called at runtime" {
613 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
596 const S = struct {614 const S = struct {
597 inline fn foo(x: *i32, y: *const i32) type {615 inline fn foo(x: *i32, y: *const i32) type {
598 x.* = y.*;616 x.* = y.*;
...@@ -607,7 +625,7 @@ test "inline function with comptime-known comptime-only return type called at ru...@@ -607,7 +625,7 @@ test "inline function with comptime-known comptime-only return type called at ru
607}625}
608626
609test "address of function parameter is consistent" {627test "address of function parameter is consistent" {
610 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;628 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
611629
612 const S = struct {630 const S = struct {
613 fn paramAddrMatch(x: u8) bool {631 fn paramAddrMatch(x: u8) bool {
...@@ -635,6 +653,8 @@ test "address of function parameter is consistent in function return type" {...@@ -635,6 +653,8 @@ test "address of function parameter is consistent in function return type" {
635}653}
636654
637test "function parameter self equality" {655test "function parameter self equality" {
656 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
657
638 const S = struct {658 const S = struct {
639 fn equal(x: u32) bool {659 fn equal(x: u32) bool {
640 return x == x;660 return x == x;
...@@ -664,6 +684,8 @@ test "function parameter self equality" {...@@ -664,6 +684,8 @@ test "function parameter self equality" {
664}684}
665685
666test "inline call propagates comptime-known argument to generic parameter and return types" {686test "inline call propagates comptime-known argument to generic parameter and return types" {
687 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
688
667 const S = struct {689 const S = struct {
668 inline fn f(x: bool, y: if (x) u8 else u16) if (x) bool else u32 {690 inline fn f(x: bool, y: if (x) u8 else u16) if (x) bool else u32 {
669 if (x) {691 if (x) {
...@@ -744,7 +766,7 @@ test "coerce generic function making generic parameter concrete" {...@@ -744,7 +766,7 @@ test "coerce generic function making generic parameter concrete" {
744}766}
745767
746test "return undefined pointer from function, directly and by expired local" {768test "return undefined pointer from function, directly and by expired local" {
747 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;769 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
748770
749 const S = struct {771 const S = struct {
750 var global: i32 = 1;772 var global: i32 = 1;
test/behavior/fn_delegation.zig+1
...@@ -32,6 +32,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {...@@ -32,6 +32,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
32}32}
3333
34test "fn delegation" {34test "fn delegation" {
35 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3738
test/behavior/fn_in_struct_in_comptime.zig+1-1
...@@ -12,7 +12,7 @@ fn get_foo() fn (*u8) usize {...@@ -12,7 +12,7 @@ fn get_foo() fn (*u8) usize {
12}12}
1313
14test "define a function in an anonymous struct in comptime" {14test "define a function in an anonymous struct in comptime" {
15 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;15 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1616
17 const foo = get_foo();17 const foo = get_foo();
18 try expect(foo(@as(*u8, @ptrFromInt(12345))) == 12345);18 try expect(foo(@as(*u8, @ptrFromInt(12345))) == 12345);
test/behavior/for.zig+20-11
...@@ -5,6 +5,7 @@ const expectEqual = std.testing.expectEqual;...@@ -5,6 +5,7 @@ const expectEqual = std.testing.expectEqual;
5const mem = std.mem;5const mem = std.mem;
66
7test "continue in for loop" {7test "continue in for loop" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 const array = [_]i32{ 1, 2, 3, 4, 5 };11 const array = [_]i32{ 1, 2, 3, 4, 5 };
...@@ -67,7 +68,7 @@ test "ignore lval with underscore (for loop)" {...@@ -67,7 +68,7 @@ test "ignore lval with underscore (for loop)" {
67test "basic for loop" {68test "basic for loop" {
68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;71 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7172
72 const expected_result: [24]u8 = .{73 const expected_result: [24]u8 = .{
73 9, 8, 7, 6, 0, 1, 2, 3,74 9, 8, 7, 6, 0, 1, 2, 3,
...@@ -114,7 +115,7 @@ test "basic for loop" {...@@ -114,7 +115,7 @@ test "basic for loop" {
114test "for with null and T peer types and inferred result location type" {115test "for with null and T peer types and inferred result location type" {
115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;118 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
118119
119 const S = struct {120 const S = struct {
120 fn doTheTest(slice: []const u8) !void {121 fn doTheTest(slice: []const u8) !void {
...@@ -133,6 +134,7 @@ test "for with null and T peer types and inferred result location type" {...@@ -133,6 +134,7 @@ test "for with null and T peer types and inferred result location type" {
133}134}
134135
135test "2 break statements and an else" {136test "2 break statements and an else" {
137 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137139
138 const S = struct {140 const S = struct {
...@@ -154,7 +156,7 @@ test "2 break statements and an else" {...@@ -154,7 +156,7 @@ test "2 break statements and an else" {
154test "for loop with pointer elem var" {156test "for loop with pointer elem var" {
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;159 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
158160
159 const source = "abcdefg";161 const source = "abcdefg";
160 var target: [source.len]u8 = undefined;162 var target: [source.len]u8 = undefined;
...@@ -179,6 +181,7 @@ fn mangleString(s: []u8) void {...@@ -179,6 +181,7 @@ fn mangleString(s: []u8) void {
179}181}
180182
181test "for copies its payload" {183test "for copies its payload" {
184 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
183186
184 const S = struct {187 const S = struct {
...@@ -198,7 +201,7 @@ test "for copies its payload" {...@@ -198,7 +201,7 @@ test "for copies its payload" {
198test "for on slice with allowzero ptr" {201test "for on slice with allowzero ptr" {
199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
201 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;204 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
202205
203 const S = struct {206 const S = struct {
204 fn doTheTest(slice: []const u8) !void {207 fn doTheTest(slice: []const u8) !void {
...@@ -213,7 +216,7 @@ test "for on slice with allowzero ptr" {...@@ -213,7 +216,7 @@ test "for on slice with allowzero ptr" {
213216
214test "else continue outer for" {217test "else continue outer for" {
215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;219 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
217220
218 var i: usize = 6;221 var i: usize = 6;
219 var buf: [5]u8 = undefined;222 var buf: [5]u8 = undefined;
...@@ -226,6 +229,7 @@ test "else continue outer for" {...@@ -226,6 +229,7 @@ test "else continue outer for" {
226}229}
227230
228test "for loop with else branch" {231test "for loop with else branch" {
232 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
229 {233 {
230 var x = [_]u32{ 1, 2 };234 var x = [_]u32{ 1, 2 };
231 _ = &x;235 _ = &x;
...@@ -272,6 +276,7 @@ test "two counters" {...@@ -272,6 +276,7 @@ test "two counters" {
272}276}
273277
274test "1-based counter and ptr to array" {278test "1-based counter and ptr to array" {
279 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO280 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
277282
...@@ -306,7 +311,7 @@ test "1-based counter and ptr to array" {...@@ -306,7 +311,7 @@ test "1-based counter and ptr to array" {
306test "slice and two counters, one is offset and one is runtime" {311test "slice and two counters, one is offset and one is runtime" {
307 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;314 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
310315
311 const slice: []const u8 = "blah";316 const slice: []const u8 = "blah";
312 var start: usize = 0;317 var start: usize = 0;
...@@ -335,7 +340,7 @@ test "slice and two counters, one is offset and one is runtime" {...@@ -335,7 +340,7 @@ test "slice and two counters, one is offset and one is runtime" {
335test "two slices, one captured by-ref" {340test "two slices, one captured by-ref" {
336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;343 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
339344
340 var buf: [10]u8 = undefined;345 var buf: [10]u8 = undefined;
341 const slice1: []const u8 = "blah";346 const slice1: []const u8 = "blah";
...@@ -354,7 +359,7 @@ test "two slices, one captured by-ref" {...@@ -354,7 +359,7 @@ test "two slices, one captured by-ref" {
354test "raw pointer and slice" {359test "raw pointer and slice" {
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO360 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;362 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
358363
359 var buf: [10]u8 = undefined;364 var buf: [10]u8 = undefined;
360 const slice: []const u8 = "blah";365 const slice: []const u8 = "blah";
...@@ -373,7 +378,7 @@ test "raw pointer and slice" {...@@ -373,7 +378,7 @@ test "raw pointer and slice" {
373test "raw pointer and counter" {378test "raw pointer and counter" {
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO379 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
376 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;381 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
377382
378 var buf: [10]u8 = undefined;383 var buf: [10]u8 = undefined;
379 const ptr: [*]u8 = &buf;384 const ptr: [*]u8 = &buf;
...@@ -391,7 +396,7 @@ test "raw pointer and counter" {...@@ -391,7 +396,7 @@ test "raw pointer and counter" {
391test "inline for with slice as the comptime-known" {396test "inline for with slice as the comptime-known" {
392 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;399 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
395400
396 const comptime_slice = "hello";401 const comptime_slice = "hello";
397 var runtime_i: usize = 3;402 var runtime_i: usize = 3;
...@@ -422,7 +427,7 @@ test "inline for with slice as the comptime-known" {...@@ -422,7 +427,7 @@ test "inline for with slice as the comptime-known" {
422test "inline for with counter as the comptime-known" {427test "inline for with counter as the comptime-known" {
423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;430 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
426431
427 var runtime_slice = "hello";432 var runtime_slice = "hello";
428 var runtime_i: usize = 3;433 var runtime_i: usize = 3;
...@@ -451,6 +456,7 @@ test "inline for with counter as the comptime-known" {...@@ -451,6 +456,7 @@ test "inline for with counter as the comptime-known" {
451}456}
452457
453test "inline for on tuple pointer" {458test "inline for on tuple pointer" {
459 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO460 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
456462
...@@ -465,6 +471,7 @@ test "inline for on tuple pointer" {...@@ -465,6 +471,7 @@ test "inline for on tuple pointer" {
465}471}
466472
467test "ref counter that starts at zero" {473test "ref counter that starts at zero" {
474 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
470477
...@@ -479,6 +486,7 @@ test "ref counter that starts at zero" {...@@ -479,6 +486,7 @@ test "ref counter that starts at zero" {
479}486}
480487
481test "inferred alloc ptr of for loop" {488test "inferred alloc ptr of for loop" {
489 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO490 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
484492
...@@ -501,6 +509,7 @@ test "inferred alloc ptr of for loop" {...@@ -501,6 +509,7 @@ test "inferred alloc ptr of for loop" {
501}509}
502510
503test "for loop results in a bool" {511test "for loop results in a bool" {
512 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
505514
506 try std.testing.expect(for ([1]u8{0}) |x| {515 try std.testing.expect(for ([1]u8{0}) |x| {
test/behavior/generics.zig+27-12
...@@ -5,6 +5,8 @@ const expect = testing.expect;...@@ -5,6 +5,8 @@ const expect = testing.expect;
5const expectEqual = testing.expectEqual;5const expectEqual = testing.expectEqual;
66
7test "one param, explicit comptime" {7test "one param, explicit comptime" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
9
8 var x: usize = 0;10 var x: usize = 0;
9 x += checkSize(i32);11 x += checkSize(i32);
10 x += checkSize(bool);12 x += checkSize(bool);
...@@ -17,6 +19,7 @@ fn checkSize(comptime T: type) usize {...@@ -17,6 +19,7 @@ fn checkSize(comptime T: type) usize {
17}19}
1820
19test "simple generic fn" {21test "simple generic fn" {
22 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2124
22 try expect(max(i32, 3, -1) == 3);25 try expect(max(i32, 3, -1) == 3);
...@@ -51,6 +54,7 @@ fn sameButWithFloats(a: f64, b: f64) f64 {...@@ -51,6 +54,7 @@ fn sameButWithFloats(a: f64, b: f64) f64 {
51}54}
5255
53test "fn with comptime args" {56test "fn with comptime args" {
57 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5660
...@@ -86,7 +90,7 @@ fn max_f64(a: f64, b: f64) f64 {...@@ -86,7 +90,7 @@ fn max_f64(a: f64, b: f64) f64 {
86test "type constructed by comptime function call" {90test "type constructed by comptime function call" {
87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
89 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;93 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9094
91 var l: SimpleList(10) = undefined;95 var l: SimpleList(10) = undefined;
92 l.array[0] = 10;96 l.array[0] = 10;
...@@ -108,6 +112,7 @@ fn SimpleList(comptime L: usize) type {...@@ -108,6 +112,7 @@ fn SimpleList(comptime L: usize) type {
108}112}
109113
110test "function with return type type" {114test "function with return type type" {
115 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
113118
...@@ -150,7 +155,7 @@ fn aGenericFn(comptime T: type, comptime a: T, b: T) T {...@@ -150,7 +155,7 @@ fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
150test "generic fn with implicit cast" {155test "generic fn with implicit cast" {
151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;158 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
154159
155 try expect(getFirstByte(u8, &[_]u8{13}) == 13);160 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
156 try expect(getFirstByte(u16, &[_]u16{161 try expect(getFirstByte(u16, &[_]u16{
...@@ -169,7 +174,7 @@ test "generic fn keeps non-generic parameter types" {...@@ -169,7 +174,7 @@ test "generic fn keeps non-generic parameter types" {
169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;176 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;177 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
173178
174 const A = 128;179 const A = 128;
175180
...@@ -204,7 +209,7 @@ fn foo2(arg: anytype) bool {...@@ -204,7 +209,7 @@ fn foo2(arg: anytype) bool {
204209
205test "generic struct" {210test "generic struct" {
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;212 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
208213
209 var a1 = GenNode(i32){214 var a1 = GenNode(i32){
210 .value = 13,215 .value = 13,
...@@ -245,7 +250,7 @@ test "function parameter is generic" {...@@ -245,7 +250,7 @@ test "function parameter is generic" {
245test "generic function instantiation turns into comptime call" {250test "generic function instantiation turns into comptime call" {
246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;253 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
249254
250 const S = struct {255 const S = struct {
251 fn doTheTest() !void {256 fn doTheTest() !void {
...@@ -273,6 +278,7 @@ test "generic function instantiation turns into comptime call" {...@@ -273,6 +278,7 @@ test "generic function instantiation turns into comptime call" {
273}278}
274279
275test "generic function with void and comptime parameter" {280test "generic function with void and comptime parameter" {
281 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
277283
278 const S = struct { x: i32 };284 const S = struct { x: i32 };
...@@ -288,6 +294,7 @@ test "generic function with void and comptime parameter" {...@@ -288,6 +294,7 @@ test "generic function with void and comptime parameter" {
288}294}
289295
290test "anonymous struct return type referencing comptime parameter" {296test "anonymous struct return type referencing comptime parameter" {
297 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO298 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
292299
293 const S = struct {300 const S = struct {
...@@ -306,7 +313,7 @@ test "anonymous struct return type referencing comptime parameter" {...@@ -306,7 +313,7 @@ test "anonymous struct return type referencing comptime parameter" {
306test "generic function instantiation non-duplicates" {313test "generic function instantiation non-duplicates" {
307 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
308 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO315 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;316 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
310317
311 const S = struct {318 const S = struct {
312 fn copy(comptime T: type, dest: []T, source: []const T) void {319 fn copy(comptime T: type, dest: []T, source: []const T) void {
...@@ -339,7 +346,7 @@ test "generic instantiation of tagged union with only one field" {...@@ -339,7 +346,7 @@ test "generic instantiation of tagged union with only one field" {
339}346}
340347
341test "generic parameter type is function type" {348test "generic parameter type is function type" {
342 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;349 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
343350
344 const S = struct {351 const S = struct {
345 fn foo(comptime T: type, callback: *const fn (user_data: T) anyerror!void, data: T) anyerror!void {352 fn foo(comptime T: type, callback: *const fn (user_data: T) anyerror!void, data: T) anyerror!void {
...@@ -374,6 +381,7 @@ test "extern function used as generic parameter" {...@@ -374,6 +381,7 @@ test "extern function used as generic parameter" {
374}381}
375382
376test "generic struct as parameter type" {383test "generic struct as parameter type" {
384 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
378386
379 const S = struct {387 const S = struct {
...@@ -389,7 +397,7 @@ test "generic struct as parameter type" {...@@ -389,7 +397,7 @@ test "generic struct as parameter type" {
389}397}
390398
391test "slice as parameter type" {399test "slice as parameter type" {
392 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;400 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
393 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO401 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
394402
395 const S = struct {403 const S = struct {
...@@ -406,7 +414,7 @@ test "slice as parameter type" {...@@ -406,7 +414,7 @@ test "slice as parameter type" {
406}414}
407415
408test "null sentinel pointer passed as generic argument" {416test "null sentinel pointer passed as generic argument" {
409 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;417 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
410418
411 const S = struct {419 const S = struct {
412 fn doTheTest(a: anytype) !void {420 fn doTheTest(a: anytype) !void {
...@@ -417,6 +425,8 @@ test "null sentinel pointer passed as generic argument" {...@@ -417,6 +425,8 @@ test "null sentinel pointer passed as generic argument" {
417}425}
418426
419test "generic function passed as comptime argument" {427test "generic function passed as comptime argument" {
428 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
429
420 const S = struct {430 const S = struct {
421 fn doMath(comptime f: fn (comptime type, i32, i32) error{Overflow}!i32, a: i32, b: i32) !void {431 fn doMath(comptime f: fn (comptime type, i32, i32) error{Overflow}!i32, a: i32, b: i32) !void {
422 const result = try f(i32, a, b);432 const result = try f(i32, a, b);
...@@ -427,7 +437,7 @@ test "generic function passed as comptime argument" {...@@ -427,7 +437,7 @@ test "generic function passed as comptime argument" {
427}437}
428438
429test "return type of generic function is function pointer" {439test "return type of generic function is function pointer" {
430 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;440 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
431441
432 const S = struct {442 const S = struct {
433 fn b(comptime T: type) ?*const fn () error{}!T {443 fn b(comptime T: type) ?*const fn () error{}!T {
...@@ -439,6 +449,8 @@ test "return type of generic function is function pointer" {...@@ -439,6 +449,8 @@ test "return type of generic function is function pointer" {
439}449}
440450
441test "coerced function body has inequal value with its uncoerced body" {451test "coerced function body has inequal value with its uncoerced body" {
452 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
453
442 const S = struct {454 const S = struct {
443 const A = B(i32, c);455 const A = B(i32, c);
444 fn c() !i32 {456 fn c() !i32 {
...@@ -485,7 +497,9 @@ test "union in struct captures argument" {...@@ -485,7 +497,9 @@ test "union in struct captures argument" {
485}497}
486498
487test "function argument tuple used as struct field" {499test "function argument tuple used as struct field" {
500 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
502
489 const S = struct {503 const S = struct {
490 fn DeleagateWithContext(comptime Function: type) type {504 fn DeleagateWithContext(comptime Function: type) type {
491 const ArgArgs = std.meta.ArgsTuple(Function);505 const ArgArgs = std.meta.ArgsTuple(Function);
...@@ -516,7 +530,7 @@ test "comptime callconv(.c) function ptr uses comptime type argument" {...@@ -516,7 +530,7 @@ test "comptime callconv(.c) function ptr uses comptime type argument" {
516}530}
517531
518test "call generic function with from function called by the generic function" {532test "call generic function with from function called by the generic function" {
519 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;533 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
520 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
521 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -559,6 +573,7 @@ fn StructCapture(comptime T: type) type {...@@ -559,6 +573,7 @@ fn StructCapture(comptime T: type) type {
559}573}
560574
561test "call generic function that uses capture from function declaration's scope" {575test "call generic function that uses capture from function declaration's scope" {
576 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
562 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;577 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
563578
564 const S = StructCapture(f64);579 const S = StructCapture(f64);
...@@ -573,7 +588,7 @@ comptime {...@@ -573,7 +588,7 @@ comptime {
573}588}
574589
575test "generic parameter resolves to comptime-only type but is not marked comptime" {590test "generic parameter resolves to comptime-only type but is not marked comptime" {
576 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;591 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
577592
578 const S = struct {593 const S = struct {
579 fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T {594 fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T {
test/behavior/globals.zig+12-8
...@@ -4,7 +4,7 @@ const expect = std.testing.expect;...@@ -4,7 +4,7 @@ const expect = std.testing.expect;
44
5var pos = [2]f32{ 0.0, 0.0 };5var pos = [2]f32{ 0.0, 0.0 };
6test "store to global array" {6test "store to global array" {
7 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;7 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1010
...@@ -15,7 +15,7 @@ test "store to global array" {...@@ -15,7 +15,7 @@ test "store to global array" {
1515
16var vpos = @Vector(2, f32){ 0.0, 0.0 };16var vpos = @Vector(2, f32){ 0.0, 0.0 };
17test "store to global vector" {17test "store to global vector" {
18 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;18 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2121
...@@ -27,7 +27,7 @@ test "store to global vector" {...@@ -27,7 +27,7 @@ test "store to global vector" {
27test "slices pointing at the same address as global array." {27test "slices pointing at the same address as global array." {
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;30 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3131
32 const S = struct {32 const S = struct {
33 const a = [_]u8{ 1, 2, 3 };33 const a = [_]u8{ 1, 2, 3 };
...@@ -44,7 +44,7 @@ test "slices pointing at the same address as global array." {...@@ -44,7 +44,7 @@ test "slices pointing at the same address as global array." {
44}44}
4545
46test "global loads can affect liveness" {46test "global loads can affect liveness" {
47 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;47 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5050
...@@ -68,6 +68,8 @@ test "global loads can affect liveness" {...@@ -68,6 +68,8 @@ test "global loads can affect liveness" {
68}68}
6969
70test "global const can be self-referential" {70test "global const can be self-referential" {
71 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
72
71 const S = struct {73 const S = struct {
72 self: *const @This(),74 self: *const @This(),
73 x: u32,75 x: u32,
...@@ -83,7 +85,7 @@ test "global const can be self-referential" {...@@ -83,7 +85,7 @@ test "global const can be self-referential" {
83}85}
8486
85test "global var can be self-referential" {87test "global var can be self-referential" {
86 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;88 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8789
88 const S = struct {90 const S = struct {
89 self: *@This(),91 self: *@This(),
...@@ -112,6 +114,8 @@ test "global var can be self-referential" {...@@ -112,6 +114,8 @@ test "global var can be self-referential" {
112}114}
113115
114test "global const can be indirectly self-referential" {116test "global const can be indirectly self-referential" {
117 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
118
115 const S = struct {119 const S = struct {
116 other: *const @This(),120 other: *const @This(),
117 x: u32,121 x: u32,
...@@ -136,7 +140,7 @@ test "global const can be indirectly self-referential" {...@@ -136,7 +140,7 @@ test "global const can be indirectly self-referential" {
136}140}
137141
138test "global var can be indirectly self-referential" {142test "global var can be indirectly self-referential" {
139 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;143 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
140144
141 const S = struct {145 const S = struct {
142 other: *@This(),146 other: *@This(),
...@@ -175,7 +179,7 @@ var callbacks: Callbacks = undefined;...@@ -175,7 +179,7 @@ var callbacks: Callbacks = undefined;
175var callbacks_loaded: bool = false;179var callbacks_loaded: bool = false;
176180
177test "function pointer field call on global extern struct, conditional on global" {181test "function pointer field call on global extern struct, conditional on global" {
178 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;182 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
179183
180 if (callbacks_loaded) {184 if (callbacks_loaded) {
181 try std.testing.expectEqual(42, callbacks.key_callback(42));185 try std.testing.expectEqual(42, callbacks.key_callback(42));
...@@ -184,7 +188,7 @@ test "function pointer field call on global extern struct, conditional on global...@@ -184,7 +188,7 @@ test "function pointer field call on global extern struct, conditional on global
184188
185test "function pointer field call on global extern struct" {189test "function pointer field call on global extern struct" {
186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
187 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;191 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
188192
189 const S = struct {193 const S = struct {
190 fn keyCallback(key: i32) callconv(.c) i32 {194 fn keyCallback(key: i32) callconv(.c) i32 {
test/behavior/hasdecl.zig+2
...@@ -12,6 +12,7 @@ pub const Bar = struct {...@@ -12,6 +12,7 @@ pub const Bar = struct {
12};12};
1313
14test "@hasDecl" {14test "@hasDecl" {
15 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1617
17 try expect(@hasDecl(Foo, "public_thing"));18 try expect(@hasDecl(Foo, "public_thing"));
...@@ -24,6 +25,7 @@ test "@hasDecl" {...@@ -24,6 +25,7 @@ test "@hasDecl" {
24}25}
2526
26test "@hasDecl using a sliced string literal" {27test "@hasDecl using a sliced string literal" {
28 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2830
29 try expect(@hasDecl(@This(), "Bar") == true);31 try expect(@hasDecl(@This(), "Bar") == true);
test/behavior/hasfield.zig+2
...@@ -2,6 +2,8 @@ const expect = @import("std").testing.expect;...@@ -2,6 +2,8 @@ const expect = @import("std").testing.expect;
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4test "@hasField" {4test "@hasField" {
5 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
6
5 const struc = struct {7 const struc = struct {
6 a: i32,8 a: i32,
7 b: []u8,9 b: []u8,
test/behavior/if.zig+10-2
...@@ -4,6 +4,8 @@ const expect = std.testing.expect;...@@ -4,6 +4,8 @@ const expect = std.testing.expect;
4const expectEqual = std.testing.expectEqual;4const expectEqual = std.testing.expectEqual;
55
6test "if statements" {6test "if statements" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8
7 shouldBeEqual(1, 1);9 shouldBeEqual(1, 1);
8 firstEqlThird(2, 1, 2);10 firstEqlThird(2, 1, 2);
9}11}
...@@ -44,7 +46,7 @@ var global_with_val: anyerror!u32 = 0;...@@ -44,7 +46,7 @@ var global_with_val: anyerror!u32 = 0;
44var global_with_err: anyerror!u32 = error.SomeError;46var global_with_err: anyerror!u32 = error.SomeError;
4547
46test "unwrap mutable global var" {48test "unwrap mutable global var" {
47 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;49 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4951
50 if (global_with_val) |v| {52 if (global_with_val) |v| {
...@@ -94,6 +96,7 @@ test "const result loc, runtime if cond, else unreachable" {...@@ -94,6 +96,7 @@ test "const result loc, runtime if cond, else unreachable" {
94}96}
9597
96test "if copies its payload" {98test "if copies its payload" {
99 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99102
...@@ -131,7 +134,7 @@ test "if prongs cast to expected type instead of peer type resolution" {...@@ -131,7 +134,7 @@ test "if prongs cast to expected type instead of peer type resolution" {
131test "if peer expressions inferred optional type" {134test "if peer expressions inferred optional type" {
132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;135 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;137 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
135138
136 var self: []const u8 = "abcdef";139 var self: []const u8 = "abcdef";
137 var index: usize = 0;140 var index: usize = 0;
...@@ -147,6 +150,7 @@ test "if peer expressions inferred optional type" {...@@ -147,6 +150,7 @@ test "if peer expressions inferred optional type" {
147}150}
148151
149test "if-else expression with runtime condition result location is inferred optional" {152test "if-else expression with runtime condition result location is inferred optional" {
153 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
152156
...@@ -158,6 +162,8 @@ test "if-else expression with runtime condition result location is inferred opti...@@ -158,6 +162,8 @@ test "if-else expression with runtime condition result location is inferred opti
158}162}
159163
160test "result location with inferred type ends up being pointer to comptime_int" {164test "result location with inferred type ends up being pointer to comptime_int" {
165 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
166
161 var a: ?u32 = 1234;167 var a: ?u32 = 1234;
162 var b: u32 = 2000;168 var b: u32 = 2000;
163 _ = .{ &a, &b };169 _ = .{ &a, &b };
...@@ -186,6 +192,7 @@ fn returnTrue() bool {...@@ -186,6 +192,7 @@ fn returnTrue() bool {
186}192}
187193
188test "if value shouldn't be load-elided if used later (structs)" {194test "if value shouldn't be load-elided if used later (structs)" {
195 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
190197
191 const Foo = struct { x: i32 };198 const Foo = struct { x: i32 };
...@@ -205,6 +212,7 @@ test "if value shouldn't be load-elided if used later (structs)" {...@@ -205,6 +212,7 @@ test "if value shouldn't be load-elided if used later (structs)" {
205}212}
206213
207test "if value shouldn't be load-elided if used later (optionals)" {214test "if value shouldn't be load-elided if used later (optionals)" {
215 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
209217
210 var a: ?i32 = 1;218 var a: ?i32 = 1;
test/behavior/import_c_keywords.zig+1-1
...@@ -29,7 +29,7 @@ extern fn an_alias_of_some_non_c_keyword_function() Id;...@@ -29,7 +29,7 @@ extern fn an_alias_of_some_non_c_keyword_function() Id;
29test "import c keywords" {29test "import c keywords" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;32 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3535
test/behavior/incomplete_struct_param_tld.zig+1-1
...@@ -23,7 +23,7 @@ fn foo(a: A) i32 {...@@ -23,7 +23,7 @@ fn foo(a: A) i32 {
2323
24test "incomplete struct param top level declaration" {24test "incomplete struct param top level declaration" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;26 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2727
28 const a = A{28 const a = A{
29 .b = B{29 .b = B{
test/behavior/inline_switch.zig+6
...@@ -3,6 +3,7 @@ const expect = std.testing.expect;...@@ -3,6 +3,7 @@ const expect = std.testing.expect;
3const builtin = @import("builtin");3const builtin = @import("builtin");
44
5test "inline scalar prongs" {5test "inline scalar prongs" {
6 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78
8 var x: usize = 0;9 var x: usize = 0;
...@@ -42,6 +43,7 @@ test "inline switch enums" {...@@ -42,6 +43,7 @@ test "inline switch enums" {
4243
43const U = union(E) { a: void, b: u2, c: u3, d: u4 };44const U = union(E) { a: void, b: u2, c: u3, d: u4 };
44test "inline switch unions" {45test "inline switch unions" {
46 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 var x: U = .a;49 var x: U = .a;
...@@ -67,6 +69,7 @@ test "inline switch unions" {...@@ -67,6 +69,7 @@ test "inline switch unions" {
67}69}
6870
69test "inline else bool" {71test "inline else bool" {
72 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
71 var a = true;74 var a = true;
72 _ = &a;75 _ = &a;
...@@ -89,6 +92,7 @@ test "inline else error" {...@@ -89,6 +92,7 @@ test "inline else error" {
89}92}
9093
91test "inline else enum" {94test "inline else enum" {
95 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9397
94 const E2 = enum(u8) { a = 2, b = 3, c = 4, d = 5 };98 const E2 = enum(u8) { a = 2, b = 3, c = 4, d = 5 };
...@@ -134,6 +138,8 @@ test "inline else int all values" {...@@ -134,6 +138,8 @@ test "inline else int all values" {
134}138}
135139
136test "inline switch capture is set when switch operand is comptime known" {140test "inline switch capture is set when switch operand is comptime known" {
141 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
142
137 const U2 = union(enum) {143 const U2 = union(enum) {
138 a: u32,144 a: u32,
139 };145 };
test/behavior/int128.zig+5-2
...@@ -5,6 +5,7 @@ const minInt = std.math.minInt;...@@ -5,6 +5,7 @@ const minInt = std.math.minInt;
5const builtin = @import("builtin");5const builtin = @import("builtin");
66
7test "uint128" {7test "uint128" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -25,7 +26,7 @@ test "uint128" {...@@ -25,7 +26,7 @@ test "uint128" {
25test "undefined 128 bit int" {26test "undefined 128 bit int" {
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;29 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3031
31 @setRuntimeSafety(true);32 @setRuntimeSafety(true);
...@@ -42,6 +43,7 @@ test "undefined 128 bit int" {...@@ -42,6 +43,7 @@ test "undefined 128 bit int" {
42}43}
4344
44test "int128" {45test "int128" {
46 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -66,7 +68,7 @@ test "int128" {...@@ -66,7 +68,7 @@ test "int128" {
66test "truncate int128" {68test "truncate int128" {
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;71 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;72 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7173
72 {74 {
...@@ -87,6 +89,7 @@ test "truncate int128" {...@@ -87,6 +89,7 @@ test "truncate int128" {
87}89}
8890
89test "shift int128" {91test "shift int128" {
92 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
91 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;95 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
test/behavior/int_comparison_elision.zig+2-1
...@@ -4,6 +4,7 @@ const maxInt = std.math.maxInt;...@@ -4,6 +4,7 @@ const maxInt = std.math.maxInt;
4const builtin = @import("builtin");4const builtin = @import("builtin");
55
6test "int comparison elision" {6test "int comparison elision" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
89
9 testIntEdges(u0);10 testIntEdges(u0);
...@@ -14,7 +15,7 @@ test "int comparison elision" {...@@ -14,7 +15,7 @@ test "int comparison elision" {
1415
15 // TODO: support int types > 128 bits wide in other backends16 // TODO: support int types > 128 bits wide in other backends
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;18 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1819
19 // TODO: panic: integer overflow with int types > 65528 bits wide20 // TODO: panic: integer overflow with int types > 65528 bits wide
20 // TODO: LLVM generates too many parameters for wasmtime when splitting up int > 64000 bits wide21 // TODO: LLVM generates too many parameters for wasmtime when splitting up int > 64000 bits wide
test/behavior/ir_block_deps.zig+1
...@@ -18,6 +18,7 @@ fn getErrInt() anyerror!i32 {...@@ -18,6 +18,7 @@ fn getErrInt() anyerror!i32 {
18}18}
1919
20test "ir block deps" {20test "ir block deps" {
21 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
test/behavior/lower_strlit_to_vector.zig+1-1
...@@ -4,7 +4,7 @@ const builtin = @import("builtin");...@@ -4,7 +4,7 @@ const builtin = @import("builtin");
4test "strlit to vector" {4test "strlit to vector" {
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;7 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
88
9 const strlit = "0123456789abcdef0123456789ABCDEF";9 const strlit = "0123456789abcdef0123456789ABCDEF";
10 const vec_from_strlit: @Vector(32, u8) = strlit.*;10 const vec_from_strlit: @Vector(32, u8) = strlit.*;
test/behavior/math.zig+82-47
...@@ -10,6 +10,7 @@ const mem = std.mem;...@@ -10,6 +10,7 @@ const mem = std.mem;
10const math = std.math;10const math = std.math;
1111
12test "assignment operators" {12test "assignment operators" {
13 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -40,6 +41,8 @@ test "assignment operators" {...@@ -40,6 +41,8 @@ test "assignment operators" {
40}41}
4142
42test "three expr in a row" {43test "three expr in a row" {
44 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
45
43 try testThreeExprInARow(false, true);46 try testThreeExprInARow(false, true);
44 try comptime testThreeExprInARow(false, true);47 try comptime testThreeExprInARow(false, true);
45}48}
...@@ -64,7 +67,7 @@ fn assertFalse(b: bool) !void {...@@ -64,7 +67,7 @@ fn assertFalse(b: bool) !void {
64test "@clz small" {67test "@clz small" {
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;70 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
6972
70 try testClzSmall();73 try testClzSmall();
...@@ -82,7 +85,7 @@ fn testClzSmall() !void {...@@ -82,7 +85,7 @@ fn testClzSmall() !void {
82test "@clz big ints" {85test "@clz big ints" {
83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;88 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;89 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8790
88 try testClzBigInts();91 try testClzBigInts();
...@@ -102,7 +105,7 @@ test "@clz vectors" {...@@ -102,7 +105,7 @@ test "@clz vectors" {
102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;108 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
107110
108 try testClzVectors();111 try testClzVectors();
...@@ -143,7 +146,7 @@ test "@ctz small" {...@@ -143,7 +146,7 @@ test "@ctz small" {
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO146 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;149 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
147150
148 try testCtzSmall();151 try testCtzSmall();
149 try comptime testCtzSmall();152 try comptime testCtzSmall();
...@@ -165,7 +168,7 @@ fn testOneCtz(comptime T: type, x: T) u32 {...@@ -165,7 +168,7 @@ fn testOneCtz(comptime T: type, x: T) u32 {
165test "@ctz 128-bit integers" {168test "@ctz 128-bit integers" {
166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;171 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
169 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;172 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
170173
171 try testCtz128();174 try testCtz128();
...@@ -184,7 +187,7 @@ test "@ctz vectors" {...@@ -184,7 +187,7 @@ test "@ctz vectors" {
184 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
187 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;190 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
188191
189 try testCtzVectors();192 try testCtzVectors();
190 try comptime testCtzVectors();193 try comptime testCtzVectors();
...@@ -258,6 +261,8 @@ test "quad hex float literal parsing in range" {...@@ -258,6 +261,8 @@ test "quad hex float literal parsing in range" {
258}261}
259262
260test "underscore separator parsing" {263test "underscore separator parsing" {
264 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
265
261 try expect(1_234_567 == 1234567);266 try expect(1_234_567 == 1234567);
262 try expect(1_234_567 == 1234567);267 try expect(1_234_567 == 1234567);
263 try expect(1_2_3_4_5_6_7 == 1234567);268 try expect(1_2_3_4_5_6_7 == 1234567);
...@@ -334,6 +339,7 @@ test "comptime_int multi-limb partial shift right" {...@@ -334,6 +339,7 @@ test "comptime_int multi-limb partial shift right" {
334}339}
335340
336test "xor" {341test "xor" {
342 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;343 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
338344
339 try test_xor();345 try test_xor();
...@@ -382,6 +388,7 @@ fn not(comptime T: type, a: T) T {...@@ -382,6 +388,7 @@ fn not(comptime T: type, a: T) T {
382}388}
383389
384test "binary not" {390test "binary not" {
391 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;392 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
386393
387 try expect(not(u0, 0) == 0);394 try expect(not(u0, 0) == 0);
...@@ -421,6 +428,7 @@ test "binary not" {...@@ -421,6 +428,7 @@ test "binary not" {
421}428}
422429
423test "binary not big int <= 128 bits" {430test "binary not big int <= 128 bits" {
431 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
426 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;434 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -456,7 +464,8 @@ test "division" {...@@ -456,7 +464,8 @@ test "division" {
456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;466 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
459 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;467 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
468
460 try testIntDivision();469 try testIntDivision();
461 try comptime testIntDivision();470 try comptime testIntDivision();
462471
...@@ -629,7 +638,7 @@ test "large integer division" {...@@ -629,7 +638,7 @@ test "large integer division" {
629 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;638 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
630 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;639 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;640 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
632 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;641 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;642 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
634643
635 {644 {
...@@ -650,7 +659,7 @@ test "division half-precision floats" {...@@ -650,7 +659,7 @@ test "division half-precision floats" {
650 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO659 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
651 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO660 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
652 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;661 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
653 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;662 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
654663
655 try testDivisionFP16();664 try testDivisionFP16();
656 try comptime testDivisionFP16();665 try comptime testDivisionFP16();
...@@ -737,6 +746,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {...@@ -737,6 +746,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {
737}746}
738747
739test "negation wrapping" {748test "negation wrapping" {
749 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
740 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO750 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
741 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;751 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
742752
...@@ -750,6 +760,7 @@ fn negateWrap(comptime T: type, x: T) T {...@@ -750,6 +760,7 @@ fn negateWrap(comptime T: type, x: T) T {
750}760}
751761
752test "unsigned 64-bit division" {762test "unsigned 64-bit division" {
763 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO764 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
754 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO765 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
755766
...@@ -791,7 +802,7 @@ fn testShrTrunc(x: u16) !void {...@@ -791,7 +802,7 @@ fn testShrTrunc(x: u16) !void {
791test "f128" {802test "f128" {
792 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO803 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
793 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO804 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
794 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;805 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
795 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;806 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
796807
797 try test_f128();808 try test_f128();
...@@ -817,6 +828,7 @@ fn should_not_be_zero(x: f128) !void {...@@ -817,6 +828,7 @@ fn should_not_be_zero(x: f128) !void {
817}828}
818829
819test "umax wrapped squaring" {830test "umax wrapped squaring" {
831 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
820 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;832 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
821 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;833 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
822834
...@@ -873,6 +885,7 @@ test "umax wrapped squaring" {...@@ -873,6 +885,7 @@ test "umax wrapped squaring" {
873}885}
874886
875test "128-bit multiplication" {887test "128-bit multiplication" {
888 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
876 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO889 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
877 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO890 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
878 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;891 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -905,6 +918,7 @@ fn testAddWithOverflow(comptime T: type, a: T, b: T, add: T, bit: u1) !void {...@@ -905,6 +918,7 @@ fn testAddWithOverflow(comptime T: type, a: T, b: T, add: T, bit: u1) !void {
905}918}
906919
907test "@addWithOverflow" {920test "@addWithOverflow" {
921 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
908 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO922 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
909 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO923 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO924 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -923,6 +937,7 @@ test "@addWithOverflow" {...@@ -923,6 +937,7 @@ test "@addWithOverflow" {
923}937}
924938
925test "@addWithOverflow <= 128 bits" {939test "@addWithOverflow <= 128 bits" {
940 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
926 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
927 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO942 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
928 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;943 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -968,7 +983,7 @@ test "@addWithOverflow > 128 bits" {...@@ -968,7 +983,7 @@ test "@addWithOverflow > 128 bits" {
968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO983 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO984 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
970 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;985 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
971 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO986 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
972987
973 try testAddWithOverflow(u129, 4, 105, 109, 0);988 try testAddWithOverflow(u129, 4, 105, 109, 0);
974 try testAddWithOverflow(u129, 1000, 100, 1100, 0);989 try testAddWithOverflow(u129, 1000, 100, 1100, 0);
...@@ -1008,6 +1023,7 @@ test "@addWithOverflow > 128 bits" {...@@ -1008,6 +1023,7 @@ test "@addWithOverflow > 128 bits" {
1008}1023}
10091024
1010test "small int addition" {1025test "small int addition" {
1026 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1011 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1027 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1012 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1028 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1013 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1029 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -1036,6 +1052,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {...@@ -1036,6 +1052,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {
1036}1052}
10371053
1038test "basic @mulWithOverflow" {1054test "basic @mulWithOverflow" {
1055 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1039 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1056 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1040 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1057 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1041 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1058 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -1048,6 +1065,7 @@ test "basic @mulWithOverflow" {...@@ -1048,6 +1065,7 @@ test "basic @mulWithOverflow" {
1048}1065}
10491066
1050test "extensive @mulWithOverflow" {1067test "extensive @mulWithOverflow" {
1068 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1051 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1069 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1052 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1053 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1071 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1087,6 +1105,7 @@ test "extensive @mulWithOverflow" {...@@ -1087,6 +1105,7 @@ test "extensive @mulWithOverflow" {
1087}1105}
10881106
1089test "@mulWithOverflow bitsize > 32" {1107test "@mulWithOverflow bitsize > 32" {
1108 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1090 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1091 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1092 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1111 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1123,6 +1142,7 @@ fn testMutiplyUnwrap(comptime T: type, wrapped_a: anyerror!T, comptime b: T, exp...@@ -1123,6 +1142,7 @@ fn testMutiplyUnwrap(comptime T: type, wrapped_a: anyerror!T, comptime b: T, exp
1123}1142}
11241143
1125test "Multiply unwrap error * immediate" {1144test "Multiply unwrap error * immediate" {
1145 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1139,7 +1159,7 @@ test "@mulWithOverflow bitsize 128 bits" {...@@ -1139,7 +1159,7 @@ test "@mulWithOverflow bitsize 128 bits" {
1139 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1159 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1142 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1162 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
11431163
1144 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);1164 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);
1145 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);1165 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);
...@@ -1162,7 +1182,7 @@ test "@mulWithOverflow bitsize 128 bits" {...@@ -1162,7 +1182,7 @@ test "@mulWithOverflow bitsize 128 bits" {
11621182
1163test "@mulWithOverflow > 128 bits" {1183test "@mulWithOverflow > 128 bits" {
1164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1165 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1185 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11661186
1167 try testMulWithOverflow(u140, 0, maxInt(u140), 0, 0);1187 try testMulWithOverflow(u140, 0, maxInt(u140), 0, 0);
1168 try testMulWithOverflow(u140, 1, maxInt(u140), maxInt(u140), 0);1188 try testMulWithOverflow(u140, 1, maxInt(u140), maxInt(u140), 0);
...@@ -1191,7 +1211,7 @@ test "@mulWithOverflow > 128 bits" {...@@ -1191,7 +1211,7 @@ test "@mulWithOverflow > 128 bits" {
11911211
1192test "@mulWithOverflow bitsize 256 bits" {1212test "@mulWithOverflow bitsize 256 bits" {
1193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1194 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1214 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1195 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1215 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11961216
1197 {1217 {
...@@ -1235,6 +1255,7 @@ fn testSubWithOverflow(comptime T: type, a: T, b: T, sub: T, bit: u1) !void {...@@ -1235,6 +1255,7 @@ fn testSubWithOverflow(comptime T: type, a: T, b: T, sub: T, bit: u1) !void {
1235}1255}
12361256
1237test "@subWithOverflow" {1257test "@subWithOverflow" {
1258 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12401261
...@@ -1251,6 +1272,7 @@ test "@subWithOverflow" {...@@ -1251,6 +1272,7 @@ test "@subWithOverflow" {
1251}1272}
12521273
1253test "@subWithOverflow <= 128 bits" {1274test "@subWithOverflow <= 128 bits" {
1275 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1256 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1278 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1294,7 +1316,7 @@ test "@subWithOverflow > 128 bits" {...@@ -1294,7 +1316,7 @@ test "@subWithOverflow > 128 bits" {
1294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1296 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1318 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1297 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1319 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
12981320
1299 try testSubWithOverflow(u129, 4, 105, maxInt(u129) - 100, 1);1321 try testSubWithOverflow(u129, 4, 105, maxInt(u129) - 100, 1);
1300 try testSubWithOverflow(u129, 1000, 100, 900, 0);1322 try testSubWithOverflow(u129, 1000, 100, 900, 0);
...@@ -1340,7 +1362,7 @@ fn testShlWithOverflow(comptime T: type, a: T, b: math.Log2Int(T), shl: T, bit:...@@ -1340,7 +1362,7 @@ fn testShlWithOverflow(comptime T: type, a: T, b: math.Log2Int(T), shl: T, bit:
1340test "@shlWithOverflow" {1362test "@shlWithOverflow" {
1341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1343 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1365 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1344 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1366 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13451367
1346 try testShlWithOverflow(u4, 2, 1, 4, 0);1368 try testShlWithOverflow(u4, 2, 1, 4, 0);
...@@ -1359,7 +1381,7 @@ test "@shlWithOverflow" {...@@ -1359,7 +1381,7 @@ test "@shlWithOverflow" {
1359test "@shlWithOverflow > 64 bits" {1381test "@shlWithOverflow > 64 bits" {
1360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1384 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1363 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13641386
1365 try testShlWithOverflow(u65, 0x0_0100_0000_0000_0000, 7, 0x0_8000_0000_0000_0000, 0);1387 try testShlWithOverflow(u65, 0x0_0100_0000_0000_0000, 7, 0x0_8000_0000_0000_0000, 0);
...@@ -1385,7 +1407,7 @@ test "@shlWithOverflow > 64 bits" {...@@ -1385,7 +1407,7 @@ test "@shlWithOverflow > 64 bits" {
13851407
1386test "@shlWithOverflow > 128 bits" {1408test "@shlWithOverflow > 128 bits" {
1387 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1388 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1410 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13891411
1390 try testShlWithOverflow(u140, 1 << 100, 20, 1 << 120, 0);1412 try testShlWithOverflow(u140, 1 << 100, 20, 1 << 120, 0);
1391 try testShlWithOverflow(u140, 1 << 100, 40, 0, 1);1413 try testShlWithOverflow(u140, 1 << 100, 40, 0, 1);
...@@ -1413,6 +1435,7 @@ fn testAnd(comptime T: type, a: T, b: T, expected: T) !void {...@@ -1413,6 +1435,7 @@ fn testAnd(comptime T: type, a: T, b: T, expected: T) !void {
1413}1435}
14141436
1415test "and > 128 bits" {1437test "and > 128 bits" {
1438 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1439 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14171440
1418 try testAnd(u140, (1 << 139) | (1 << 70) | 0xaa, (1 << 139) | (1 << 69) | 0xcc, (1 << 139) | 0x88);1441 try testAnd(u140, (1 << 139) | (1 << 70) | 0xaa, (1 << 139) | (1 << 69) | 0xcc, (1 << 139) | 0x88);
...@@ -1441,6 +1464,7 @@ fn testOr(comptime T: type, a: T, b: T, expected: T) !void {...@@ -1441,6 +1464,7 @@ fn testOr(comptime T: type, a: T, b: T, expected: T) !void {
1441}1464}
14421465
1443test "or > 128 bits" {1466test "or > 128 bits" {
1467 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14451469
1446 try testOr(u140, 0, 1 << 139, 1 << 139);1470 try testOr(u140, 0, 1 << 139, 1 << 139);
...@@ -1469,6 +1493,7 @@ fn testXor(comptime T: type, a: T, b: T, expected: T) !void {...@@ -1469,6 +1493,7 @@ fn testXor(comptime T: type, a: T, b: T, expected: T) !void {
1469}1493}
14701494
1471test "xor > 128 bits" {1495test "xor > 128 bits" {
1496 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1497 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14731498
1474 try testXor(u140, 0, maxInt(u140), maxInt(u140));1499 try testXor(u140, 0, maxInt(u140), maxInt(u140));
...@@ -1497,6 +1522,7 @@ fn testNot(comptime T: type, a: T, expected: T) !void {...@@ -1497,6 +1522,7 @@ fn testNot(comptime T: type, a: T, expected: T) !void {
1497}1522}
14981523
1499test "not > 128 bits" {1524test "not > 128 bits" {
1525 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1500 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1526 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15011527
1502 try testNot(u140, 0, maxInt(u140));1528 try testNot(u140, 0, maxInt(u140));
...@@ -1525,6 +1551,7 @@ fn testShl(comptime T: type, a: T, b: std.math.Log2Int(T), expected: T) !void {...@@ -1525,6 +1551,7 @@ fn testShl(comptime T: type, a: T, b: std.math.Log2Int(T), expected: T) !void {
1525}1551}
15261552
1527test "shl > 128 bits" {1553test "shl > 128 bits" {
1554 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1555 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15291556
1530 try testShl(u140, 1 << 5, 10, 1 << 15);1557 try testShl(u140, 1 << 5, 10, 1 << 15);
...@@ -1553,6 +1580,7 @@ fn testShr(comptime T: type, a: T, b: std.math.Log2Int(T), expected: T) !void {...@@ -1553,6 +1580,7 @@ fn testShr(comptime T: type, a: T, b: std.math.Log2Int(T), expected: T) !void {
1553}1580}
15541581
1555test "shr > 128 bits" {1582test "shr > 128 bits" {
1583 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15571585
1558 try testShr(u140, 1 << 139, 39, 1 << 100);1586 try testShr(u140, 1 << 139, 39, 1 << 100);
...@@ -1582,7 +1610,7 @@ fn testClz(comptime T: type, a: T, expected: u16) !void {...@@ -1582,7 +1610,7 @@ fn testClz(comptime T: type, a: T, expected: u16) !void {
15821610
1583test "@clz > 128 bits" {1611test "@clz > 128 bits" {
1584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1612 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1585 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1613 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15861614
1587 try testClz(u140, 0, 140);1615 try testClz(u140, 0, 140);
1588 try testClz(u140, 1 << 139, 0);1616 try testClz(u140, 1 << 139, 0);
...@@ -1611,7 +1639,7 @@ fn testCtz(comptime T: type, a: T, expected: u16) !void {...@@ -1611,7 +1639,7 @@ fn testCtz(comptime T: type, a: T, expected: u16) !void {
16111639
1612test "@ctz > 128 bits" {1640test "@ctz > 128 bits" {
1613 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1614 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1642 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16151643
1616 try testCtz(u140, 0, 140);1644 try testCtz(u140, 0, 140);
1617 try testCtz(u140, 1 << 139, 139);1645 try testCtz(u140, 1 << 139, 139);
...@@ -1640,7 +1668,7 @@ fn testPopCount(comptime T: type, a: T, expected: u16) !void {...@@ -1640,7 +1668,7 @@ fn testPopCount(comptime T: type, a: T, expected: u16) !void {
16401668
1641test "@popCount > 128 bits" {1669test "@popCount > 128 bits" {
1642 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1643 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1671 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16441672
1645 try testPopCount(u140, 0, 0);1673 try testPopCount(u140, 0, 0);
1646 try testPopCount(u140, maxInt(u140), 140);1674 try testPopCount(u140, maxInt(u140), 140);
...@@ -1669,7 +1697,7 @@ fn testBitReverse(comptime T: type, a: T, expected: T) !void {...@@ -1669,7 +1697,7 @@ fn testBitReverse(comptime T: type, a: T, expected: T) !void {
16691697
1670test "@bitReverse > 128 bits" {1698test "@bitReverse > 128 bits" {
1671 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1699 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1672 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1700 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16731701
1674 try testBitReverse(u140, 1 << 139, 1);1702 try testBitReverse(u140, 1 << 139, 1);
1675 try testBitReverse(u140, 1 << 70, 1 << 69);1703 try testBitReverse(u140, 1 << 70, 1 << 69);
...@@ -1698,7 +1726,7 @@ fn testByteSwap(comptime T: type, a: T, expected: T) !void {...@@ -1698,7 +1726,7 @@ fn testByteSwap(comptime T: type, a: T, expected: T) !void {
16981726
1699test "@byteSwap > 128 bits" {1727test "@byteSwap > 128 bits" {
1700 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1701 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1729 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17021730
1703 try testByteSwap(u144, 1 << 136, 1);1731 try testByteSwap(u144, 1 << 136, 1);
1704 try testByteSwap(u144, 1, 1 << 136);1732 try testByteSwap(u144, 1, 1 << 136);
...@@ -1727,7 +1755,7 @@ fn testMax(comptime T: type, a: T, b: T, expected: T) !void {...@@ -1727,7 +1755,7 @@ fn testMax(comptime T: type, a: T, b: T, expected: T) !void {
17271755
1728test "@max > 128 bits" {1756test "@max > 128 bits" {
1729 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1730 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1758 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17311759
1732 try testMax(u140, 0, maxInt(u140), maxInt(u140));1760 try testMax(u140, 0, maxInt(u140), maxInt(u140));
1733 try testMax(u140, 1 << 139, 1 << 138, 1 << 139);1761 try testMax(u140, 1 << 139, 1 << 138, 1 << 139);
...@@ -1756,7 +1784,7 @@ fn testMin(comptime T: type, a: T, b: T, expected: T) !void {...@@ -1756,7 +1784,7 @@ fn testMin(comptime T: type, a: T, b: T, expected: T) !void {
17561784
1757test "@min > 128 bits" {1785test "@min > 128 bits" {
1758 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1786 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1759 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1787 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17601788
1761 try testMin(u140, 0, maxInt(u140), 0);1789 try testMin(u140, 0, maxInt(u140), 0);
1762 try testMin(u140, 1 << 139, 1 << 138, 1 << 138);1790 try testMin(u140, 1 << 139, 1 << 138, 1 << 138);
...@@ -1784,6 +1812,7 @@ fn testAbs(comptime T: type, a: T, expected: anytype) !void {...@@ -1784,6 +1812,7 @@ fn testAbs(comptime T: type, a: T, expected: anytype) !void {
1784}1812}
17851813
1786test "@abs > 128 bits" {1814test "@abs > 128 bits" {
1815 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1787 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1816 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17881817
1789 try testAbs(u140, 0, 0);1818 try testAbs(u140, 0, 0);
...@@ -1808,7 +1837,7 @@ fn testRem(comptime T: type, numerator: T, denominator: T, expected: T) !void {...@@ -1808,7 +1837,7 @@ fn testRem(comptime T: type, numerator: T, denominator: T, expected: T) !void {
18081837
1809test "@rem > 128 bits" {1838test "@rem > 128 bits" {
1810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1811 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1840 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18121841
1813 try testRem(u140, 0, maxInt(u140), 0);1842 try testRem(u140, 0, maxInt(u140), 0);
1814 try testRem(u140, maxInt(u140), maxInt(u140), 0);1843 try testRem(u140, maxInt(u140), maxInt(u140), 0);
...@@ -1835,7 +1864,7 @@ fn testMod(comptime T: type, numerator: T, denominator: T, expected: T) !void {...@@ -1835,7 +1864,7 @@ fn testMod(comptime T: type, numerator: T, denominator: T, expected: T) !void {
18351864
1836test "@mod > 128 bits" {1865test "@mod > 128 bits" {
1837 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1866 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1838 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1867 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18391868
1840 try testMod(u140, 0, maxInt(u140), 0);1869 try testMod(u140, 0, maxInt(u140), 0);
1841 try testMod(u140, maxInt(u140), maxInt(u140), 0);1870 try testMod(u140, maxInt(u140), maxInt(u140), 0);
...@@ -1862,7 +1891,7 @@ fn testDivFloor(comptime T: type, numerator: T, denominator: T, expected: T) !vo...@@ -1862,7 +1891,7 @@ fn testDivFloor(comptime T: type, numerator: T, denominator: T, expected: T) !vo
18621891
1863test "@divFloor > 128 bits" {1892test "@divFloor > 128 bits" {
1864 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1893 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1865 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1894 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18661895
1867 try testDivFloor(u140, 0, maxInt(u140), 0);1896 try testDivFloor(u140, 0, maxInt(u140), 0);
1868 try testDivFloor(u140, maxInt(u140), maxInt(u140), 1);1897 try testDivFloor(u140, maxInt(u140), maxInt(u140), 1);
...@@ -1890,7 +1919,7 @@ fn testDivCeil(comptime T: type, numerator: T, denominator: T, expected: T) !voi...@@ -1890,7 +1919,7 @@ fn testDivCeil(comptime T: type, numerator: T, denominator: T, expected: T) !voi
18901919
1891test "@divCeil > 128 bits" {1920test "@divCeil > 128 bits" {
1892 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1921 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1893 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1922 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18941923
1895 try testDivCeil(u140, 0, maxInt(u140), 0);1924 try testDivCeil(u140, 0, maxInt(u140), 0);
1896 try testDivCeil(u140, maxInt(u140), maxInt(u140), 1);1925 try testDivCeil(u140, maxInt(u140), maxInt(u140), 1);
...@@ -1918,7 +1947,7 @@ fn testDivTrunc(comptime T: type, numerator: T, denominator: T, expected: T) !vo...@@ -1918,7 +1947,7 @@ fn testDivTrunc(comptime T: type, numerator: T, denominator: T, expected: T) !vo
19181947
1919test "@divTrunc > 128 bits" {1948test "@divTrunc > 128 bits" {
1920 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1949 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1921 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1950 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19221951
1923 try testDivTrunc(u140, 0, maxInt(u140), 0);1952 try testDivTrunc(u140, 0, maxInt(u140), 0);
1924 try testDivTrunc(u140, maxInt(u140), maxInt(u140), 1);1953 try testDivTrunc(u140, maxInt(u140), maxInt(u140), 1);
...@@ -1941,6 +1970,8 @@ test "@divTrunc > 128 bits" {...@@ -1941,6 +1970,8 @@ test "@divTrunc > 128 bits" {
1941}1970}
19421971
1943test "overflow arithmetic with u0 values" {1972test "overflow arithmetic with u0 values" {
1973 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1974
1944 {1975 {
1945 var a: u0 = 0;1976 var a: u0 = 0;
1946 _ = &a;1977 _ = &a;
...@@ -1972,6 +2003,8 @@ test "overflow arithmetic with u0 values" {...@@ -1972,6 +2003,8 @@ test "overflow arithmetic with u0 values" {
1972}2003}
19732004
1974test "allow signed integer division/remainder when values are comptime-known and positive or exact" {2005test "allow signed integer division/remainder when values are comptime-known and positive or exact" {
2006 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2007
1975 try expect(5 / 3 == 1);2008 try expect(5 / 3 == 1);
1976 try expect(-5 / -3 == 1);2009 try expect(-5 / -3 == 1);
1977 try expect(-6 / 3 == -2);2010 try expect(-6 / 3 == -2);
...@@ -1983,7 +2016,7 @@ test "allow signed integer division/remainder when values are comptime-known and...@@ -1983,7 +2016,7 @@ test "allow signed integer division/remainder when values are comptime-known and
1983test "quad hex float literal parsing accurate" {2016test "quad hex float literal parsing accurate" {
1984 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2017 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1985 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1986 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2019 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1987 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2020 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19882021
1989 const a: f128 = 0x1.1111222233334444555566667777p+0;2022 const a: f128 = 0x1.1111222233334444555566667777p+0;
...@@ -2089,6 +2122,7 @@ fn testShlTrunc(x: u16) !void {...@@ -2089,6 +2122,7 @@ fn testShlTrunc(x: u16) !void {
2089}2122}
20902123
2091test "exact shift left" {2124test "exact shift left" {
2125 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2092 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2126 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20932127
2094 try testShlExact(0b00110101);2128 try testShlExact(0b00110101);
...@@ -2141,7 +2175,7 @@ test "remainder division" {...@@ -2141,7 +2175,7 @@ test "remainder division" {
2141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2144 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2178 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2179 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
21462180
2147 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;2181 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;
...@@ -2174,7 +2208,7 @@ fn remdivOne(comptime T: type, a: T, b: T, c: T) !void {...@@ -2174,7 +2208,7 @@ fn remdivOne(comptime T: type, a: T, b: T, c: T) !void {
2174test "float remainder division using @rem" {2208test "float remainder division using @rem" {
2175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2177 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2211 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2178 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2212 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
21792213
2180 try comptime frem(f16);2214 try comptime frem(f16);
...@@ -2216,7 +2250,7 @@ test "float modulo division using @mod" {...@@ -2216,7 +2250,7 @@ test "float modulo division using @mod" {
2216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2250 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2219 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2253 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2220 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2254 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
22212255
2222 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;2256 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;
...@@ -2284,7 +2318,7 @@ test "@round f32/f64" {...@@ -2284,7 +2318,7 @@ test "@round f32/f64" {
2284test "@round f80" {2318test "@round f80" {
2285 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2287 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2321 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2288 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2322 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
22892323
2290 try testRound(f80, 12.0);2324 try testRound(f80, 12.0);
...@@ -2294,7 +2328,7 @@ test "@round f80" {...@@ -2294,7 +2328,7 @@ test "@round f80" {
2294test "@round f128" {2328test "@round f128" {
2295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2330 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2297 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2331 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2298 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2332 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
22992333
2300 try testRound(f128, 12.0);2334 try testRound(f128, 12.0);
...@@ -2312,7 +2346,7 @@ test "vector integer addition" {...@@ -2312,7 +2346,7 @@ test "vector integer addition" {
2312 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2313 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2314 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2348 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2315 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2349 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
23162350
2317 const S = struct {2351 const S = struct {
2318 fn doTheTest() !void {2352 fn doTheTest() !void {
...@@ -2332,7 +2366,7 @@ test "vector integer addition" {...@@ -2332,7 +2366,7 @@ test "vector integer addition" {
2332test "NaN comparison" {2366test "NaN comparison" {
2333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2335 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2369 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2336 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2370 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
23372371
2338 try testNanEqNan(f16);2372 try testNanEqNan(f16);
...@@ -2348,7 +2382,7 @@ test "NaN comparison" {...@@ -2348,7 +2382,7 @@ test "NaN comparison" {
2348test "NaN comparison f80" {2382test "NaN comparison f80" {
2349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2350 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2351 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2385 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2352 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2386 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
23532387
2354 try testNanEqNan(f80);2388 try testNanEqNan(f80);
...@@ -2372,7 +2406,7 @@ test "vector comparison" {...@@ -2372,7 +2406,7 @@ test "vector comparison" {
2372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2374 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2375 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2409 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
23762410
2377 const S = struct {2411 const S = struct {
2378 fn doTheTest() !void {2412 fn doTheTest() !void {
...@@ -2401,7 +2435,7 @@ test "compare undefined literal with comptime_int" {...@@ -2401,7 +2435,7 @@ test "compare undefined literal with comptime_int" {
2401test "signed zeros are represented properly" {2435test "signed zeros are represented properly" {
2402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2404 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2438 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2405 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2439 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24062440
2407 const S = struct {2441 const S = struct {
...@@ -2463,7 +2497,7 @@ test "@clz works on both vector and scalar inputs" {...@@ -2463,7 +2497,7 @@ test "@clz works on both vector and scalar inputs" {
2463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2497 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2498 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2465 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2499 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2466 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2500 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
24672501
2468 var x: u32 = 0x1;2502 var x: u32 = 0x1;
2469 _ = &x;2503 _ = &x;
...@@ -2478,7 +2512,7 @@ test "@clz works on both vector and scalar inputs" {...@@ -2478,7 +2512,7 @@ test "@clz works on both vector and scalar inputs" {
2478test "runtime comparison to NaN is comptime-known" {2512test "runtime comparison to NaN is comptime-known" {
2479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2513 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2514 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2481 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2515 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2482 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2516 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24832517
2484 const S = struct {2518 const S = struct {
...@@ -2534,7 +2568,7 @@ test "float divide by zero" {...@@ -2534,7 +2568,7 @@ test "float divide by zero" {
2534 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2568 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2535 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2569 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2570 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2537 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2571 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
25382572
2539 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;2573 if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff and builtin.abi != .gnu) return error.SkipZigTest;
25402574
...@@ -2569,7 +2603,7 @@ test "partially-runtime integer vector division would be illegal if vector eleme...@@ -2569,7 +2603,7 @@ test "partially-runtime integer vector division would be illegal if vector eleme
2569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2603 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2570 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2571 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2605 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2572 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2606 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2573 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;2607 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
25742608
2575 var lhs: @Vector(2, i8) = .{ -128, 5 };2609 var lhs: @Vector(2, i8) = .{ -128, 5 };
...@@ -2593,6 +2627,7 @@ test "partially-runtime integer vector division would be illegal if vector eleme...@@ -2593,6 +2627,7 @@ test "partially-runtime integer vector division would be illegal if vector eleme
2593}2627}
25942628
2595test "float vector division of comptime zero by runtime nan is nan" {2629test "float vector division of comptime zero by runtime nan is nan" {
2630 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2596 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2597 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2632 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2598 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -2613,7 +2648,7 @@ test "float vector multiplication of comptime zero by runtime nan is nan" {...@@ -2613,7 +2648,7 @@ test "float vector multiplication of comptime zero by runtime nan is nan" {
2613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2648 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2614 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2615 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2650 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2616 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe2651 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
26172652
2618 const ct_zero: @Vector(1, f32) = .{0};2653 const ct_zero: @Vector(1, f32) = .{0};
2619 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};2654 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};
...@@ -2650,7 +2685,7 @@ test "comptime float vector multiplication of zero by nan is nan" {...@@ -2650,7 +2685,7 @@ test "comptime float vector multiplication of zero by nan is nan" {
2650}2685}
26512686
2652test "i96 operations" {2687test "i96 operations" {
2653 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2688 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
26542689
2655 // This is coverage for some stuff used by std.Io timestamps, to catch2690 // This is coverage for some stuff used by std.Io timestamps, to catch
2656 // issues earlier than bootstrapping.2691 // issues earlier than bootstrapping.
test/behavior/maximum_minimum.zig+16-8
...@@ -6,6 +6,7 @@ const expect = std.testing.expect;...@@ -6,6 +6,7 @@ const expect = std.testing.expect;
6const expectEqual = std.testing.expectEqual;6const expectEqual = std.testing.expectEqual;
77
8test "@max" {8test "@max" {
9 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -31,7 +32,7 @@ test "@max on vectors" {...@@ -31,7 +32,7 @@ test "@max on vectors" {
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;35 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3536
36 const S = struct {37 const S = struct {
37 fn doTheTest() !void {38 fn doTheTest() !void {
...@@ -62,7 +63,7 @@ test "@min" {...@@ -62,7 +63,7 @@ test "@min" {
62 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Fails on lavapipe66 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Fails on lavapipe
6667
67 const S = struct {68 const S = struct {
68 fn doTheTest() !void {69 fn doTheTest() !void {
...@@ -85,7 +86,7 @@ test "@min for vectors" {...@@ -85,7 +86,7 @@ test "@min for vectors" {
85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;88 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;89 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8990
90 const S = struct {91 const S = struct {
91 fn doTheTest() !void {92 fn doTheTest() !void {
...@@ -115,7 +116,7 @@ test "@min for vectors" {...@@ -115,7 +116,7 @@ test "@min for vectors" {
115test "@min/max for floats" {116test "@min/max for floats" {
116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;119 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
120121
121 const S = struct {122 const S = struct {
...@@ -152,6 +153,8 @@ test "@min/@max on lazy values" {...@@ -152,6 +153,8 @@ test "@min/@max on lazy values" {
152}153}
153154
154test "@min/@max more than two arguments" {155test "@min/@max more than two arguments" {
156 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
157
155 const x: u32 = 30;158 const x: u32 = 30;
156 const y: u32 = 10;159 const y: u32 = 10;
157 const z: u32 = 20;160 const z: u32 = 20;
...@@ -160,7 +163,7 @@ test "@min/@max more than two arguments" {...@@ -160,7 +163,7 @@ test "@min/@max more than two arguments" {
160}163}
161164
162test "@min/@max more than two vector arguments" {165test "@min/@max more than two vector arguments" {
163 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;166 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO168 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -174,6 +177,7 @@ test "@min/@max more than two vector arguments" {...@@ -174,6 +177,7 @@ test "@min/@max more than two vector arguments" {
174}177}
175178
176test "@min/@max notices bounds" {179test "@min/@max notices bounds" {
180 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
177 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179183
...@@ -190,7 +194,7 @@ test "@min/@max notices bounds" {...@@ -190,7 +194,7 @@ test "@min/@max notices bounds" {
190}194}
191195
192test "@min/@max notices vector bounds" {196test "@min/@max notices vector bounds" {
193 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;197 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -222,6 +226,7 @@ test "@min/@max on comptime_int" {...@@ -222,6 +226,7 @@ test "@min/@max on comptime_int" {
222}226}
223227
224test "@min/@max notices bounds from types" {228test "@min/@max notices bounds from types" {
229 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
227232
...@@ -241,7 +246,7 @@ test "@min/@max notices bounds from types" {...@@ -241,7 +246,7 @@ test "@min/@max notices bounds from types" {
241}246}
242247
243test "@min/@max notices bounds from vector types" {248test "@min/@max notices bounds from vector types" {
244 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;249 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;250 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -282,6 +287,7 @@ test "@min/@max notices bounds from types when comptime-known value is undef" {...@@ -282,6 +287,7 @@ test "@min/@max notices bounds from types when comptime-known value is undef" {
282}287}
283288
284test "@min/@max notices bounds from vector types when element of comptime-known vector is undef" {289test "@min/@max notices bounds from vector types when element of comptime-known vector is undef" {
290 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
285 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO293 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -304,6 +310,8 @@ test "@min/@max notices bounds from vector types when element of comptime-known...@@ -304,6 +310,8 @@ test "@min/@max notices bounds from vector types when element of comptime-known
304}310}
305311
306test "@min/@max of signed and unsigned runtime integers" {312test "@min/@max of signed and unsigned runtime integers" {
313 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
314
307 var x: i32 = -1;315 var x: i32 = -1;
308 var y: u31 = 1;316 var y: u31 = 1;
309 _ = .{ &x, &y };317 _ = .{ &x, &y };
...@@ -349,7 +357,7 @@ test "@min/@max with runtime signed and unsigned integers of same size" {...@@ -349,7 +357,7 @@ test "@min/@max with runtime signed and unsigned integers of same size" {
349}357}
350358
351test "@min/@max with runtime vectors of signed and unsigned integers of same size" {359test "@min/@max with runtime vectors of signed and unsigned integers of same size" {
352 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;360 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;361 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO362 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/member_func.zig+2-2
...@@ -29,7 +29,7 @@ const HasFuncs = struct {...@@ -29,7 +29,7 @@ const HasFuncs = struct {
29test "standard field calls" {29test "standard field calls" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;32 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3333
34 try expect(HasFuncs.one(0) == 1);34 try expect(HasFuncs.one(0) == 1);
35 try expect(HasFuncs.two(0) == 2);35 try expect(HasFuncs.two(0) == 2);
...@@ -72,7 +72,7 @@ test "standard field calls" {...@@ -72,7 +72,7 @@ test "standard field calls" {
72test "@field field calls" {72test "@field field calls" {
73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;75 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7676
77 try expect(@field(HasFuncs, "one")(0) == 1);77 try expect(@field(HasFuncs, "one")(0) == 1);
78 try expect(@field(HasFuncs, "two")(0) == 2);78 try expect(@field(HasFuncs, "two")(0) == 2);
test/behavior/memcpy.zig+8-8
...@@ -6,7 +6,7 @@ const assert = std.debug.assert;...@@ -6,7 +6,7 @@ const assert = std.debug.assert;
6test "memcpy and memset intrinsics" {6test "memcpy and memset intrinsics" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1010
11 try testMemcpyMemset();11 try testMemcpyMemset();
12 try comptime testMemcpyMemset();12 try comptime testMemcpyMemset();
...@@ -27,7 +27,7 @@ fn testMemcpyMemset() !void {...@@ -27,7 +27,7 @@ fn testMemcpyMemset() !void {
27test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {27test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;30 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3131
32 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();32 try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
33 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();33 try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
...@@ -47,7 +47,7 @@ fn testMemcpyBothSinglePtrArrayOneIsNullTerminated() !void {...@@ -47,7 +47,7 @@ fn testMemcpyBothSinglePtrArrayOneIsNullTerminated() !void {
47test "@memcpy dest many pointer" {47test "@memcpy dest many pointer" {
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;50 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5151
52 try testMemcpyDestManyPtr();52 try testMemcpyDestManyPtr();
53 try comptime testMemcpyDestManyPtr();53 try comptime testMemcpyDestManyPtr();
...@@ -69,7 +69,7 @@ fn testMemcpyDestManyPtr() !void {...@@ -69,7 +69,7 @@ fn testMemcpyDestManyPtr() !void {
69test "@memcpy C pointer" {69test "@memcpy C pointer" {
70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;72 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7373
74 try testMemcpyCPointer();74 try testMemcpyCPointer();
75 try comptime testMemcpyCPointer();75 try comptime testMemcpyCPointer();
...@@ -90,7 +90,7 @@ test "@memcpy slice" {...@@ -90,7 +90,7 @@ test "@memcpy slice" {
90 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;90 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;93 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9494
95 try testMemcpySlice();95 try testMemcpySlice();
96 try comptime testMemcpySlice();96 try comptime testMemcpySlice();
...@@ -133,7 +133,7 @@ test "@memcpy comptime-only type" {...@@ -133,7 +133,7 @@ test "@memcpy comptime-only type" {
133}133}
134134
135test "@memcpy zero-bit type with aliasing" {135test "@memcpy zero-bit type with aliasing" {
136 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;136 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
137137
138 const S = struct {138 const S = struct {
139 fn doTheTest() void {139 fn doTheTest() void {
...@@ -153,7 +153,7 @@ test "@memcpy zero-bit type with aliasing" {...@@ -153,7 +153,7 @@ test "@memcpy zero-bit type with aliasing" {
153153
154test "@memcpy with sentinel" {154test "@memcpy with sentinel" {
155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;156 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
157157
158 const S = struct {158 const S = struct {
159 fn doTheTest() void {159 fn doTheTest() void {
...@@ -182,7 +182,7 @@ test "@memcpy no sentinel source into sentinel destination" {...@@ -182,7 +182,7 @@ test "@memcpy no sentinel source into sentinel destination" {
182}182}
183183
184test "@memcpy a global array" {184test "@memcpy a global array" {
185 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;185 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
186186
187 const S = struct {187 const S = struct {
188 var array_u8: [1]u8 = .{1};188 var array_u8: [1]u8 = .{1};
test/behavior/memmove.zig+5-5
...@@ -5,7 +5,7 @@ const expect = std.testing.expect;...@@ -5,7 +5,7 @@ const expect = std.testing.expect;
5test "memmove and memset intrinsics" {5test "memmove and memset intrinsics" {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;8 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1010
11 try testMemmoveMemset();11 try testMemmoveMemset();
...@@ -32,7 +32,7 @@ fn testMemmoveMemset() !void {...@@ -32,7 +32,7 @@ fn testMemmoveMemset() !void {
32test "@memmove with both operands single-ptr-to-array, one is null-terminated" {32test "@memmove with both operands single-ptr-to-array, one is null-terminated" {
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;35 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;36 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3737
38 try testMemmoveBothSinglePtrArrayOneIsNullTerminated();38 try testMemmoveBothSinglePtrArrayOneIsNullTerminated();
...@@ -75,7 +75,7 @@ fn testMemmoveBothSinglePtrArrayOneIsNullTerminated() !void {...@@ -75,7 +75,7 @@ fn testMemmoveBothSinglePtrArrayOneIsNullTerminated() !void {
75test "@memmove dest many pointer" {75test "@memmove dest many pointer" {
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
78 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;78 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
79 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;79 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8080
81 try testMemmoveDestManyPtr();81 try testMemmoveDestManyPtr();
...@@ -117,7 +117,7 @@ test "@memmove slice" {...@@ -117,7 +117,7 @@ test "@memmove slice" {
117 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;117 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
120 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;120 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
122122
123 try testMemmoveSlice();123 try testMemmoveSlice();
...@@ -172,7 +172,7 @@ comptime {...@@ -172,7 +172,7 @@ comptime {
172}172}
173173
174test "@memmove a global array" {174test "@memmove a global array" {
175 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;175 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
176176
177 const S = struct {177 const S = struct {
178 var array_u8: [1]u8 = .{1};178 var array_u8: [1]u8 = .{1};
test/behavior/memset.zig+12-12
...@@ -5,7 +5,7 @@ const expect = std.testing.expect;...@@ -5,7 +5,7 @@ const expect = std.testing.expect;
5test "@memset on array pointers" {5test "@memset on array pointers" {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;8 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
99
10 try testMemsetArray();10 try testMemsetArray();
11 try comptime testMemsetArray();11 try comptime testMemsetArray();
...@@ -33,7 +33,7 @@ fn testMemsetArray() !void {...@@ -33,7 +33,7 @@ fn testMemsetArray() !void {
33test "@memset preserves array sentinel" {33test "@memset preserves array sentinel" {
34 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;36 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3737
38 try testMemsetArraySentinel();38 try testMemsetArraySentinel();
39 try comptime testMemsetArraySentinel();39 try comptime testMemsetArraySentinel();
...@@ -55,7 +55,7 @@ fn testMemsetArraySentinel() !void {...@@ -55,7 +55,7 @@ fn testMemsetArraySentinel() !void {
55test "@memset on slices" {55test "@memset on slices" {
56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
58 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;58 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6060
61 try testMemsetSlice();61 try testMemsetSlice();
...@@ -90,7 +90,7 @@ fn testMemsetSlice() !void {...@@ -90,7 +90,7 @@ fn testMemsetSlice() !void {
90test "memset with bool element" {90test "memset with bool element" {
91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;93 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9494
95 var buf: [5]bool = undefined;95 var buf: [5]bool = undefined;
96 @memset(&buf, true);96 @memset(&buf, true);
...@@ -101,7 +101,7 @@ test "memset with bool element" {...@@ -101,7 +101,7 @@ test "memset with bool element" {
101test "memset with 1-byte struct element" {101test "memset with 1-byte struct element" {
102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;104 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
105105
106 const S = struct { x: bool };106 const S = struct { x: bool };
107 var buf: [5]S = undefined;107 var buf: [5]S = undefined;
...@@ -113,7 +113,7 @@ test "memset with 1-byte struct element" {...@@ -113,7 +113,7 @@ test "memset with 1-byte struct element" {
113test "memset with 1-byte array element" {113test "memset with 1-byte array element" {
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;116 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
117117
118 const A = [1]bool;118 const A = [1]bool;
119 var buf: [5]A = undefined;119 var buf: [5]A = undefined;
...@@ -126,7 +126,7 @@ test "memset with large array element, runtime known" {...@@ -126,7 +126,7 @@ test "memset with large array element, runtime known" {
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
129 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;129 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;130 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
131131
132 const A = [128]u64;132 const A = [128]u64;
...@@ -144,7 +144,7 @@ test "memset with large array element, runtime known" {...@@ -144,7 +144,7 @@ test "memset with large array element, runtime known" {
144test "memset with large array element, comptime known" {144test "memset with large array element, comptime known" {
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;147 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
149149
150 const A = [128]u64;150 const A = [128]u64;
...@@ -161,7 +161,7 @@ test "memset with large array element, comptime known" {...@@ -161,7 +161,7 @@ test "memset with large array element, comptime known" {
161test "@memset provides result type" {161test "@memset provides result type" {
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;164 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;165 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
166166
167 const S = struct { x: u32 };167 const S = struct { x: u32 };
...@@ -179,7 +179,7 @@ test "@memset provides result type" {...@@ -179,7 +179,7 @@ test "@memset provides result type" {
179test "zero keys with @memset" {179test "zero keys with @memset" {
180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
182 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;182 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
183183
184 const Keys = struct {184 const Keys = struct {
185 up: bool,185 up: bool,
...@@ -201,7 +201,7 @@ test "@memset with zero-length array" {...@@ -201,7 +201,7 @@ test "@memset with zero-length array" {
201}201}
202202
203test "@memset a global array" {203test "@memset a global array" {
204 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;204 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
205205
206 const S = struct {206 const S = struct {
207 var array_u8: [1]u8 = .{1};207 var array_u8: [1]u8 = .{1};
...@@ -232,7 +232,7 @@ test "@memset a global array" {...@@ -232,7 +232,7 @@ test "@memset a global array" {
232}232}
233233
234test "@memset array of booleans" {234test "@memset array of booleans" {
235 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;235 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
236236
237 const S = struct {237 const S = struct {
238 var x: bool = false;238 var x: bool = false;
test/behavior/merge_error_sets.zig+1
...@@ -12,6 +12,7 @@ fn foo() C!void {...@@ -12,6 +12,7 @@ fn foo() C!void {
12}12}
1313
14test "merge error sets" {14test "merge error sets" {
15 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
17 if (foo()) {18 if (foo()) {
test/behavior/muladd.zig+7-4
...@@ -48,7 +48,7 @@ fn testMulAdd16() !void {...@@ -48,7 +48,7 @@ fn testMulAdd16() !void {
48test "@mulAdd f80" {48test "@mulAdd f80" {
49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;51 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5353
54 try comptime testMulAdd80();54 try comptime testMulAdd80();
...@@ -66,7 +66,7 @@ fn testMulAdd80() !void {...@@ -66,7 +66,7 @@ fn testMulAdd80() !void {
66test "@mulAdd f128" {66test "@mulAdd f128" {
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;69 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7171
72 try comptime testMulAdd128();72 try comptime testMulAdd128();
...@@ -95,6 +95,7 @@ fn vector16() !void {...@@ -95,6 +95,7 @@ fn vector16() !void {
95}95}
9696
97test "vector f16" {97test "vector f16" {
98 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -118,6 +119,7 @@ fn vector32() !void {...@@ -118,6 +119,7 @@ fn vector32() !void {
118}119}
119120
120test "vector f32" {121test "vector f32" {
122 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -141,6 +143,7 @@ fn vector64() !void {...@@ -141,6 +143,7 @@ fn vector64() !void {
141}143}
142144
143test "vector f64" {145test "vector f64" {
146 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -166,7 +169,7 @@ test "vector f80" {...@@ -166,7 +169,7 @@ test "vector f80" {
166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
167 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
169 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;172 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;173 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
171174
172 try comptime vector80();175 try comptime vector80();
...@@ -190,7 +193,7 @@ test "vector f128" {...@@ -190,7 +193,7 @@ test "vector f128" {
190 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;196 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;197 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
195198
196 try comptime vector128();199 try comptime vector128();
test/behavior/multiple_externs_with_conflicting_types.zig+2-2
...@@ -5,7 +5,7 @@ const A = extern struct {...@@ -5,7 +5,7 @@ const A = extern struct {
5extern fn issue529(?*A) void;5extern fn issue529(?*A) void;
66
7comptime {7comptime {
8 if (builtin.zig_backend != .stage2_spirv) {8 if (!builtin.cpu.arch.isSpirv()) {
9 _ = @import("conflicting_externs/b.zig");9 _ = @import("conflicting_externs/b.zig");
10 }10 }
11}11}
...@@ -15,7 +15,7 @@ const builtin = @import("builtin");...@@ -15,7 +15,7 @@ const builtin = @import("builtin");
15test "call extern function defined with conflicting type" {15test "call extern function defined with conflicting type" {
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;18 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2020
21 @import("conflicting_externs/a.zig").issue529(null);21 @import("conflicting_externs/a.zig").issue529(null);
test/behavior/nan.zig+1-1
...@@ -24,7 +24,7 @@ const snan_f128: f128 = math.snan(f128);...@@ -24,7 +24,7 @@ const snan_f128: f128 = math.snan(f128);
24test "nan memory equality" {24test "nan memory equality" {
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
26 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;26 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;27 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2828
29 // signaled29 // signaled
30 try testing.expect(mem.eql(u8, mem.asBytes(&snan_u16), mem.asBytes(&snan_f16)));30 try testing.expect(mem.eql(u8, mem.asBytes(&snan_u16), mem.asBytes(&snan_f16)));
test/behavior/null.zig+6-2
...@@ -29,6 +29,7 @@ test "optional type" {...@@ -29,6 +29,7 @@ test "optional type" {
29}29}
3030
31test "test maybe object and get a pointer to the inner value" {31test "test maybe object and get a pointer to the inner value" {
32 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -50,6 +51,7 @@ test "rhs maybe unwrap return" {...@@ -50,6 +51,7 @@ test "rhs maybe unwrap return" {
50}51}
5152
52test "maybe return" {53test "maybe return" {
54 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
...@@ -69,6 +71,7 @@ fn foo(x: ?i32) ?bool {...@@ -69,6 +71,7 @@ fn foo(x: ?i32) ?bool {
69}71}
7072
71test "test null runtime" {73test "test null runtime" {
74 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7477
...@@ -130,7 +133,7 @@ test "null with default unwrap" {...@@ -130,7 +133,7 @@ test "null with default unwrap" {
130133
131test "optional pointer to 0 bit type null value at runtime" {134test "optional pointer to 0 bit type null value at runtime" {
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;136 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
134137
135 const EmptyStruct = struct {};138 const EmptyStruct = struct {};
136 var x: ?*EmptyStruct = null;139 var x: ?*EmptyStruct = null;
...@@ -139,6 +142,7 @@ test "optional pointer to 0 bit type null value at runtime" {...@@ -139,6 +142,7 @@ test "optional pointer to 0 bit type null value at runtime" {
139}142}
140143
141test "if var maybe pointer" {144test "if var maybe pointer" {
145 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -183,7 +187,7 @@ const SillyStruct = struct {...@@ -183,7 +187,7 @@ const SillyStruct = struct {
183const here_is_a_null_literal = SillyStruct{ .context = null };187const here_is_a_null_literal = SillyStruct{ .context = null };
184188
185test "unwrap optional which is field of global var" {189test "unwrap optional which is field of global var" {
186 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;190 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189193
test/behavior/optional.zig+28-14
...@@ -7,6 +7,7 @@ const expectEqual = testing.expectEqual;...@@ -7,6 +7,7 @@ const expectEqual = testing.expectEqual;
7const expectEqualStrings = std.testing.expectEqualStrings;7const expectEqualStrings = std.testing.expectEqualStrings;
88
9test "passing an optional integer as a parameter" {9test "passing an optional integer as a parameter" {
10 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
...@@ -28,7 +29,7 @@ pub const EmptyStruct = struct {};...@@ -28,7 +29,7 @@ pub const EmptyStruct = struct {};
2829
29test "optional pointer to size zero struct" {30test "optional pointer to size zero struct" {
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;32 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3233
33 var e = EmptyStruct{};34 var e = EmptyStruct{};
34 const o: ?*EmptyStruct = &e;35 const o: ?*EmptyStruct = &e;
...@@ -36,7 +37,7 @@ test "optional pointer to size zero struct" {...@@ -36,7 +37,7 @@ test "optional pointer to size zero struct" {
36}37}
3738
38test "equality compare optional pointers" {39test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;40 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4041
41 try testNullPtrsEql();42 try testNullPtrsEql();
42 try comptime testNullPtrsEql();43 try comptime testNullPtrsEql();
...@@ -94,7 +95,7 @@ test "optional error equality" {...@@ -94,7 +95,7 @@ test "optional error equality" {
9495
95test "optional with zero-bit type" {96test "optional with zero-bit type" {
96 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;98 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9899
99 const S = struct {100 const S = struct {
100 fn doTheTest(comptime ZeroBit: type, comptime zero_bit: ZeroBit) !void {101 fn doTheTest(comptime ZeroBit: type, comptime zero_bit: ZeroBit) !void {
...@@ -147,7 +148,7 @@ test "address of unwrap optional" {...@@ -147,7 +148,7 @@ test "address of unwrap optional" {
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;151 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
151152
152 const S = struct {153 const S = struct {
153 const Foo = struct {154 const Foo = struct {
...@@ -166,6 +167,7 @@ test "address of unwrap optional" {...@@ -166,6 +167,7 @@ test "address of unwrap optional" {
166}167}
167168
168test "nested optional field in struct" {169test "nested optional field in struct" {
170 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO172 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
171173
...@@ -183,6 +185,7 @@ test "nested optional field in struct" {...@@ -183,6 +185,7 @@ test "nested optional field in struct" {
183}185}
184186
185test "equality compare optionals and non-optionals" {187test "equality compare optionals and non-optionals" {
188 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;191 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -242,6 +245,7 @@ test "equality compare optionals and non-optionals" {...@@ -242,6 +245,7 @@ test "equality compare optionals and non-optionals" {
242}245}
243246
244test "compare optionals with modified payloads" {247test "compare optionals with modified payloads" {
248 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
245 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;249 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
246250
247 var lhs: ?bool = false;251 var lhs: ?bool = false;
...@@ -269,7 +273,7 @@ test "compare optionals with modified payloads" {...@@ -269,7 +273,7 @@ test "compare optionals with modified payloads" {
269273
270test "unwrap function call with optional pointer return value" {274test "unwrap function call with optional pointer return value" {
271 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
272 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;276 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
273 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
274278
275 const S = struct {279 const S = struct {
...@@ -290,6 +294,7 @@ test "unwrap function call with optional pointer return value" {...@@ -290,6 +294,7 @@ test "unwrap function call with optional pointer return value" {
290}294}
291295
292test "nested orelse" {296test "nested orelse" {
297 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
294 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295300
...@@ -318,7 +323,7 @@ test "nested orelse" {...@@ -318,7 +323,7 @@ test "nested orelse" {
318test "self-referential struct through a slice of optional" {323test "self-referential struct through a slice of optional" {
319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;326 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
322327
323 const S = struct {328 const S = struct {
324 const Node = struct {329 const Node = struct {
...@@ -351,6 +356,7 @@ test "assigning to an unwrapped optional field in an inline loop" {...@@ -351,6 +356,7 @@ test "assigning to an unwrapped optional field in an inline loop" {
351}356}
352357
353test "coerce an anon struct literal to optional struct" {358test "coerce an anon struct literal to optional struct" {
359 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
356362
...@@ -369,6 +375,7 @@ test "coerce an anon struct literal to optional struct" {...@@ -369,6 +375,7 @@ test "coerce an anon struct literal to optional struct" {
369}375}
370376
371test "0-bit child type coerced to optional return ptr result location" {377test "0-bit child type coerced to optional return ptr result location" {
378 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
374 const S = struct {381 const S = struct {
...@@ -395,7 +402,7 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -395,7 +402,7 @@ test "0-bit child type coerced to optional return ptr result location" {
395test "0-bit child type coerced to optional" {402test "0-bit child type coerced to optional" {
396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;405 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
399 const S = struct {406 const S = struct {
400 fn doTheTest() !void {407 fn doTheTest() !void {
401 var it: Foo = .{408 var it: Foo = .{
...@@ -419,6 +426,7 @@ test "0-bit child type coerced to optional" {...@@ -419,6 +426,7 @@ test "0-bit child type coerced to optional" {
419}426}
420427
421test "array of optional unaligned types" {428test "array of optional unaligned types" {
429 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
422 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO431 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
424432
...@@ -454,6 +462,7 @@ test "array of optional unaligned types" {...@@ -454,6 +462,7 @@ test "array of optional unaligned types" {
454}462}
455463
456test "optional pointer to zero bit optional payload" {464test "optional pointer to zero bit optional payload" {
465 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -475,7 +484,7 @@ test "optional pointer to zero bit optional payload" {...@@ -475,7 +484,7 @@ test "optional pointer to zero bit optional payload" {
475test "optional pointer to zero bit error union payload" {484test "optional pointer to zero bit error union payload" {
476 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO485 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
478 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;487 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
479 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;488 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
480489
481 const B = struct {490 const B = struct {
...@@ -509,7 +518,7 @@ const NoReturn = struct {...@@ -509,7 +518,7 @@ const NoReturn = struct {
509};518};
510519
511test "optional of noreturn used with if" {520test "optional of noreturn used with if" {
512 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;521 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
514523
515 NoReturn.a = 64;524 NoReturn.a = 64;
...@@ -521,7 +530,7 @@ test "optional of noreturn used with if" {...@@ -521,7 +530,7 @@ test "optional of noreturn used with if" {
521}530}
522531
523test "optional of noreturn used with orelse" {532test "optional of noreturn used with orelse" {
524 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;533 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
526535
527 NoReturn.a = 64;536 NoReturn.a = 64;
...@@ -551,6 +560,7 @@ test "orelse on C pointer" {...@@ -551,6 +560,7 @@ test "orelse on C pointer" {
551}560}
552561
553test "alignment of wrapping an optional payload" {562test "alignment of wrapping an optional payload" {
563 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
556 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO566 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -571,7 +581,7 @@ test "alignment of wrapping an optional payload" {...@@ -571,7 +581,7 @@ test "alignment of wrapping an optional payload" {
571test "Optional slice size is optimized" {581test "Optional slice size is optimized" {
572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO583 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;584 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
575585
576 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));586 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
577 var a: ?[]const u8 = null;587 var a: ?[]const u8 = null;
...@@ -584,7 +594,7 @@ test "Optional slice passed to function" {...@@ -584,7 +594,7 @@ test "Optional slice passed to function" {
584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;594 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
585 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO595 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO596 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
587 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;597 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
588598
589 const S = struct {599 const S = struct {
590 fn foo(a: ?[]const u8) !void {600 fn foo(a: ?[]const u8) !void {
...@@ -599,6 +609,7 @@ test "Optional slice passed to function" {...@@ -599,6 +609,7 @@ test "Optional slice passed to function" {
599}609}
600610
601test "peer type resolution in nested if expressions" {611test "peer type resolution in nested if expressions" {
612 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
603614
604 const Thing = struct { n: i32 };615 const Thing = struct { n: i32 };
...@@ -626,7 +637,7 @@ test "peer type resolution in nested if expressions" {...@@ -626,7 +637,7 @@ test "peer type resolution in nested if expressions" {
626test "cast slice to const slice nested in error union and optional" {637test "cast slice to const slice nested in error union and optional" {
627 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;638 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
628 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;639 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
629 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;640 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
630 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
631642
632 const S = struct {643 const S = struct {
...@@ -647,6 +658,7 @@ test "variable of optional of noreturn" {...@@ -647,6 +658,7 @@ test "variable of optional of noreturn" {
647}658}
648659
649test "copied optional doesn't alias source" {660test "copied optional doesn't alias source" {
661 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
650 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;662 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
651 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
652 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -664,7 +676,7 @@ test "result location initialization of optional with OPV payload" {...@@ -664,7 +676,7 @@ test "result location initialization of optional with OPV payload" {
664 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;676 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
665 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO677 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO678 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
667 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;679 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
668 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO680 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
669681
670 const S = struct {682 const S = struct {
...@@ -697,6 +709,8 @@ test "global comptime only optional" {...@@ -697,6 +709,8 @@ test "global comptime only optional" {
697}709}
698710
699test "optional ptr payload alignment" {711test "optional ptr payload alignment" {
712 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
713
700 const S = struct {714 const S = struct {
701 fn doTheTest(p: *align(1) ?u32) !void {715 fn doTheTest(p: *align(1) ?u32) !void {
702 comptime assert(@TypeOf(&p.*.?) == *align(1) u32);716 comptime assert(@TypeOf(&p.*.?) == *align(1) u32);
test/behavior/overlapping_assign.zig+1-1
...@@ -3,7 +3,7 @@ const std = @import("std");...@@ -3,7 +3,7 @@ const std = @import("std");
3const expect = std.testing.expect;3const expect = std.testing.expect;
44
5test "assignment to overlapping memory" {5test "assignment to overlapping memory" {
6 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;6 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
77
8 try theTest();8 try theTest();
9 try comptime theTest();9 try comptime theTest();
test/behavior/packed-struct.zig+30-26
...@@ -119,6 +119,7 @@ test "consistent size of packed structs" {...@@ -119,6 +119,7 @@ test "consistent size of packed structs" {
119}119}
120120
121test "correct sizeOf and offsets in packed structs" {121test "correct sizeOf and offsets in packed structs" {
122 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
124125
...@@ -183,6 +184,7 @@ test "correct sizeOf and offsets in packed structs" {...@@ -183,6 +184,7 @@ test "correct sizeOf and offsets in packed structs" {
183}184}
184185
185test "nested packed structs" {186test "nested packed structs" {
187 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188190
...@@ -225,7 +227,7 @@ test "nested packed structs" {...@@ -225,7 +227,7 @@ test "nested packed structs" {
225}227}
226228
227test "regular in irregular packed struct" {229test "regular in irregular packed struct" {
228 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;230 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
...@@ -248,7 +250,8 @@ test "nested packed struct unaligned" {...@@ -248,7 +250,8 @@ test "nested packed struct unaligned" {
248 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;250 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
249 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
251 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;253 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
254
252 const S1 = packed struct {255 const S1 = packed struct {
253 a: u4,256 a: u4,
254 b: u4,257 b: u4,
...@@ -317,7 +320,7 @@ test "nested packed struct unaligned" {...@@ -317,7 +320,7 @@ test "nested packed struct unaligned" {
317test "byte-aligned field pointer offsets" {320test "byte-aligned field pointer offsets" {
318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
320 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;323 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
322325
323 const S = struct {326 const S = struct {
...@@ -404,7 +407,7 @@ test "nested packed struct field pointers" {...@@ -404,7 +407,7 @@ test "nested packed struct field pointers" {
404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO409 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;410 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO411 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
409 const S2 = packed struct {412 const S2 = packed struct {
410 base: u8,413 base: u8,
...@@ -439,7 +442,7 @@ test "nested packed struct field pointers" {...@@ -439,7 +442,7 @@ test "nested packed struct field pointers" {
439test "@intFromPtr on a packed struct field" {442test "@intFromPtr on a packed struct field" {
440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
441 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO444 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;445 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
443446
444 const S = struct {447 const S = struct {
445 const P = packed struct {448 const P = packed struct {
...@@ -460,7 +463,7 @@ test "@intFromPtr on a packed struct field" {...@@ -460,7 +463,7 @@ test "@intFromPtr on a packed struct field" {
460test "@intFromPtr on a packed struct field unaligned and nested" {463test "@intFromPtr on a packed struct field unaligned and nested" {
461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
462 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
463 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;466 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
464467
465 const S1 = packed struct {468 const S1 = packed struct {
466 a: u4,469 a: u4,
...@@ -556,7 +559,7 @@ test "packed struct fields modification" {...@@ -556,7 +559,7 @@ test "packed struct fields modification" {
556 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;559 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
557560
558 // Originally reported at https://github.com/ziglang/zig/issues/16615561 // Originally reported at https://github.com/ziglang/zig/issues/16615
559 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;562 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
560563
561 const Small = packed struct(u16) {564 const Small = packed struct(u16) {
562 val: u8 = 0,565 val: u8 = 0,
...@@ -581,7 +584,7 @@ test "packed struct fields modification" {...@@ -581,7 +584,7 @@ test "packed struct fields modification" {
581test "nested packed struct field access test" {584test "nested packed struct field access test" {
582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO585 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
583 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
584 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;587 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
585 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;588 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
587590
...@@ -699,7 +702,7 @@ test "nested packed struct field access test" {...@@ -699,7 +702,7 @@ test "nested packed struct field access test" {
699702
700test "nested packed struct at non-zero offset" {703test "nested packed struct at non-zero offset" {
701 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
702 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;705 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
703 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;706 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
704707
705 const Pair = packed struct(u24) {708 const Pair = packed struct(u24) {
...@@ -731,7 +734,7 @@ test "nested packed struct at non-zero offset 2" {...@@ -731,7 +734,7 @@ test "nested packed struct at non-zero offset 2" {
731 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;734 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
732 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;735 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
733 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO736 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
734 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;737 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
735 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;738 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
736739
737 const S = struct {740 const S = struct {
...@@ -793,7 +796,7 @@ test "nested packed struct at non-zero offset 2" {...@@ -793,7 +796,7 @@ test "nested packed struct at non-zero offset 2" {
793}796}
794797
795test "runtime init of unnamed packed struct type" {798test "runtime init of unnamed packed struct type" {
796 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;799 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
797 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
798 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
799802
...@@ -812,7 +815,7 @@ test "packed struct passed to callconv(.c) function" {...@@ -812,7 +815,7 @@ test "packed struct passed to callconv(.c) function" {
812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;815 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO816 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
814 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;817 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
815 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;818 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
816819
817 const S = struct {820 const S = struct {
818 const Packed = packed struct(u64) {821 const Packed = packed struct(u64) {
...@@ -837,7 +840,7 @@ test "packed struct passed to callconv(.c) function" {...@@ -837,7 +840,7 @@ test "packed struct passed to callconv(.c) function" {
837test "overaligned pointer to packed struct" {840test "overaligned pointer to packed struct" {
838 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
840 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;843 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
841 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;844 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
842845
843 const S = packed struct { a: u32, b: u32 };846 const S = packed struct { a: u32, b: u32 };
...@@ -864,7 +867,7 @@ test "pointer to container level packed struct field" {...@@ -864,7 +867,7 @@ test "pointer to container level packed struct field" {
864 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;867 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
865 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
866 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO869 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
867 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;870 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
868 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO871 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
869872
870 const S = packed struct(u32) {873 const S = packed struct(u32) {
...@@ -887,7 +890,7 @@ test "pointer to container level packed struct field" {...@@ -887,7 +890,7 @@ test "pointer to container level packed struct field" {
887}890}
888891
889test "store undefined to packed result location" {892test "store undefined to packed result location" {
890 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;893 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;894 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
892 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;895 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
893 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;896 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -910,7 +913,7 @@ test "bitcast back and forth" {...@@ -910,7 +913,7 @@ test "bitcast back and forth" {
910913
911// Originally reported at https://github.com/ziglang/zig/issues/14200914// Originally reported at https://github.com/ziglang/zig/issues/14200
912test "field access of packed struct smaller than its abi size inside struct initialized with rls" {915test "field access of packed struct smaller than its abi size inside struct initialized with rls" {
913 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;916 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
914 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;917 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
915 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO918 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
916919
...@@ -933,7 +936,7 @@ test "modify nested packed struct aligned field" {...@@ -933,7 +936,7 @@ test "modify nested packed struct aligned field" {
933 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;936 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
934 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;937 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
935 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
936 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;939 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
937940
938 const Options = packed struct {941 const Options = packed struct {
939 foo: bool = false,942 foo: bool = false,
...@@ -962,7 +965,7 @@ test "modify nested packed struct aligned field" {...@@ -962,7 +965,7 @@ test "modify nested packed struct aligned field" {
962test "assigning packed struct inside another packed struct" {965test "assigning packed struct inside another packed struct" {
963 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;966 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
964 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;967 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
965 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;968 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
966969
967 const S = struct {970 const S = struct {
968 const Inner = packed struct {971 const Inner = packed struct {
...@@ -1005,7 +1008,7 @@ test "packed struct acts as a namespace" {...@@ -1005,7 +1008,7 @@ test "packed struct acts as a namespace" {
1005}1008}
10061009
1007test "assignment to non-byte-aligned field in packed struct" {1010test "assignment to non-byte-aligned field in packed struct" {
1008 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1011 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1009 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1012 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1013 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1011 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1014 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -1028,7 +1031,7 @@ test "assignment to non-byte-aligned field in packed struct" {...@@ -1028,7 +1031,7 @@ test "assignment to non-byte-aligned field in packed struct" {
1028test "packed struct field pointer aligned properly" {1031test "packed struct field pointer aligned properly" {
1029 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1032 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1030 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1033 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1031 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1034 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
10321035
1033 const Foo = packed struct {1036 const Foo = packed struct {
1034 a: i32,1037 a: i32,
...@@ -1044,7 +1047,7 @@ test "packed struct field pointer aligned properly" {...@@ -1044,7 +1047,7 @@ test "packed struct field pointer aligned properly" {
1044}1047}
10451048
1046test "load flag from packed struct in union" {1049test "load flag from packed struct in union" {
1047 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1050 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1048 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1051 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1049 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1052 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1050 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1053 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -1122,7 +1125,7 @@ test "2-byte packed struct argument in C calling convention" {...@@ -1122,7 +1125,7 @@ test "2-byte packed struct argument in C calling convention" {
1122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1125 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1128 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11261129
1127 const S = packed struct(u16) {1130 const S = packed struct(u16) {
1128 x: u15 = 0,1131 x: u15 = 0,
...@@ -1168,7 +1171,7 @@ test "packed struct equality" {...@@ -1168,7 +1171,7 @@ test "packed struct equality" {
1168}1171}
11691172
1170test "packed struct equality ignores padding bits" {1173test "packed struct equality ignores padding bits" {
1171 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1174 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11731176
1174 const S = packed struct { b: bool };1177 const S = packed struct { b: bool };
...@@ -1179,7 +1182,7 @@ test "packed struct equality ignores padding bits" {...@@ -1179,7 +1182,7 @@ test "packed struct equality ignores padding bits" {
1179}1182}
11801183
1181test "packed struct with signed field" {1184test "packed struct with signed field" {
1182 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1185 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11841187
1185 var s: packed struct {1188 var s: packed struct {
...@@ -1192,7 +1195,7 @@ test "packed struct with signed field" {...@@ -1192,7 +1195,7 @@ test "packed struct with signed field" {
1192}1195}
11931196
1194test "assign packed struct initialized with RLS to packed struct literal field" {1197test "assign packed struct initialized with RLS to packed struct literal field" {
1195 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1198 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1197 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1200 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11981201
...@@ -1209,7 +1212,7 @@ test "assign packed struct initialized with RLS to packed struct literal field"...@@ -1209,7 +1212,7 @@ test "assign packed struct initialized with RLS to packed struct literal field"
1209}1212}
12101213
1211test "packed struct store of comparison result" {1214test "packed struct store of comparison result" {
1212 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1215 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1214 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1217 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
12151218
...@@ -1260,6 +1263,7 @@ test "convert from/to backing int" {...@@ -1260,6 +1263,7 @@ test "convert from/to backing int" {
1260}1263}
12611264
1262test "equality with wide backing integer" {1265test "equality with wide backing integer" {
1266 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1263 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/359821267 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/35982
12641268
1265 const S = packed struct(i200) {1269 const S = packed struct(i200) {
test/behavior/packed-union.zig+8-8
...@@ -8,7 +8,7 @@ test "flags in packed union" {...@@ -8,7 +8,7 @@ test "flags in packed union" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;11 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1313
14 try testFlagsInPackedUnion();14 try testFlagsInPackedUnion();
...@@ -51,7 +51,7 @@ test "flags in packed union at offset" {...@@ -51,7 +51,7 @@ test "flags in packed union at offset" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;54 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
5656
57 try testFlagsInPackedUnionAtOffset();57 try testFlagsInPackedUnionAtOffset();
...@@ -107,7 +107,7 @@ fn testFlagsInPackedUnionAtOffset() !void {...@@ -107,7 +107,7 @@ fn testFlagsInPackedUnionAtOffset() !void {
107test "packed union in packed struct" {107test "packed union in packed struct" {
108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
109 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
110 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;110 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
111111
112 try testPackedUnionInPackedStruct();112 try testPackedUnionInPackedStruct();
113 try comptime testPackedUnionInPackedStruct();113 try comptime testPackedUnionInPackedStruct();
...@@ -144,7 +144,7 @@ test "packed union initialized with a runtime value" {...@@ -144,7 +144,7 @@ test "packed union initialized with a runtime value" {
144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;146 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;147 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
148148
149 const Fields = packed struct {149 const Fields = packed struct {
150 timestamp: u50,150 timestamp: u50,
...@@ -182,7 +182,7 @@ test "assigning to non-active field at comptime" {...@@ -182,7 +182,7 @@ test "assigning to non-active field at comptime" {
182test "packed union with explicit backing integer" {182test "packed union with explicit backing integer" {
183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
184 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
185 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;185 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
186186
187 const U = packed union(i32) {187 const U = packed union(i32) {
188 raw: i32,188 raw: i32,
...@@ -201,7 +201,7 @@ test "packed union with explicit backing integer" {...@@ -201,7 +201,7 @@ test "packed union with explicit backing integer" {
201}201}
202202
203test "packed union equality" {203test "packed union equality" {
204 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;204 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
205205
206 const Foo = packed union {206 const Foo = packed union {
207 a: u4,207 a: u4,
...@@ -229,7 +229,7 @@ test "initialize packed union field to undefined at comptime" {...@@ -229,7 +229,7 @@ test "initialize packed union field to undefined at comptime" {
229}229}
230230
231test "convert from/to backing int" {231test "convert from/to backing int" {
232 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;232 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
233233
234 const U = packed union(u10) {234 const U = packed union(u10) {
235 a: i10,235 a: i10,
...@@ -246,7 +246,7 @@ test "convert from/to backing int" {...@@ -246,7 +246,7 @@ test "convert from/to backing int" {
246246
247test "equality with wide backing integer" {247test "equality with wide backing integer" {
248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/35982248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/35982
249 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;249 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
250250
251 const U = packed union(i200) {251 const U = packed union(i200) {
252 x: u200,252 x: u200,
test/behavior/packed_struct_explicit_backing_int.zig+1
...@@ -5,6 +5,7 @@ const expectEqual = std.testing.expectEqual;...@@ -5,6 +5,7 @@ const expectEqual = std.testing.expectEqual;
5const native_endian = builtin.cpu.arch.endian();5const native_endian = builtin.cpu.arch.endian();
66
7test "packed struct explicit backing integer" {7test "packed struct explicit backing integer" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
test/behavior/pointers.zig+36-28
...@@ -20,7 +20,7 @@ fn testDerefPtr() !void {...@@ -20,7 +20,7 @@ fn testDerefPtr() !void {
20test "pointer-integer arithmetic" {20test "pointer-integer arithmetic" {
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;23 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2424
25 var ptr: [*]const u8 = "abcd";25 var ptr: [*]const u8 = "abcd";
2626
...@@ -45,7 +45,7 @@ test "pointer-integer arithmetic" {...@@ -45,7 +45,7 @@ test "pointer-integer arithmetic" {
4545
46test "pointer subtraction" {46test "pointer subtraction" {
47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO48 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
4949
50 {50 {
51 const a: *u8 = @ptrFromInt(100);51 const a: *u8 = @ptrFromInt(100);
...@@ -100,7 +100,7 @@ test "pointer subtraction" {...@@ -100,7 +100,7 @@ test "pointer subtraction" {
100}100}
101101
102test "pointer arithmetic with non-trivial RHS" {102test "pointer arithmetic with non-trivial RHS" {
103 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;103 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
104104
105 var t: bool = undefined;105 var t: bool = undefined;
106 t = true;106 t = true;
...@@ -126,7 +126,7 @@ fn PtrOf(comptime T: type) type {...@@ -126,7 +126,7 @@ fn PtrOf(comptime T: type) type {
126126
127test "implicit cast single item pointer to C pointer and back" {127test "implicit cast single item pointer to C pointer and back" {
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;129 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
130130
131 var y: u8 = 11;131 var y: u8 = 11;
132 const x: [*c]u8 = &y;132 const x: [*c]u8 = &y;
...@@ -143,7 +143,7 @@ test "initialize const optional C pointer to null" {...@@ -143,7 +143,7 @@ test "initialize const optional C pointer to null" {
143143
144test "assigning integer to C pointer" {144test "assigning integer to C pointer" {
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
147 var x: i32 = 0;147 var x: i32 = 0;
148 var y: i32 = 1;148 var y: i32 = 1;
149 var ptr: [*c]u8 = 0;149 var ptr: [*c]u8 = 0;
...@@ -160,7 +160,7 @@ test "assigning integer to C pointer" {...@@ -160,7 +160,7 @@ test "assigning integer to C pointer" {
160160
161test "C pointer comparison and arithmetic" {161test "C pointer comparison and arithmetic" {
162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;163 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
164164
165 const S = struct {165 const S = struct {
166 fn doTheTest() !void {166 fn doTheTest() !void {
...@@ -204,7 +204,7 @@ fn testDerefPtrOneVal() !void {...@@ -204,7 +204,7 @@ fn testDerefPtrOneVal() !void {
204}204}
205205
206test "peer type resolution with C pointers" {206test "peer type resolution with C pointers" {
207 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;207 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
208208
209 const ptr_one: *u8 = undefined;209 const ptr_one: *u8 = undefined;
210 const ptr_many: [*]u8 = undefined;210 const ptr_many: [*]u8 = undefined;
...@@ -222,6 +222,7 @@ test "peer type resolution with C pointers" {...@@ -222,6 +222,7 @@ test "peer type resolution with C pointers" {
222}222}
223223
224test "peer type resolution with C pointer and const pointer" {224test "peer type resolution with C pointer and const pointer" {
225 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
225 var ptr_c: [*c]u8 = undefined;226 var ptr_c: [*c]u8 = undefined;
226 var ptr_const: *const u8 = &undefined;227 var ptr_const: *const u8 = &undefined;
227 _ = .{ &ptr_c, &ptr_const };228 _ = .{ &ptr_c, &ptr_const };
...@@ -232,7 +233,7 @@ test "implicit casting between C pointer and optional non-C pointer" {...@@ -232,7 +233,7 @@ test "implicit casting between C pointer and optional non-C pointer" {
232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;235 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
235 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;236 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
236237
237 var slice: []const u8 = "aoeu";238 var slice: []const u8 = "aoeu";
238 _ = &slice;239 _ = &slice;
...@@ -247,7 +248,7 @@ test "implicit casting between C pointer and optional non-C pointer" {...@@ -247,7 +248,7 @@ test "implicit casting between C pointer and optional non-C pointer" {
247test "implicit cast error unions with non-optional to optional pointer" {248test "implicit cast error unions with non-optional to optional pointer" {
248 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO249 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
250 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;251 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
251 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;252 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
252253
253 const S = struct {254 const S = struct {
...@@ -276,7 +277,7 @@ test "allowzero pointer and slice" {...@@ -276,7 +277,7 @@ test "allowzero pointer and slice" {
276 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;277 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;278 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO279 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;280 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
280281
281 var ptr: [*]allowzero i32 = @ptrFromInt(0);282 var ptr: [*]allowzero i32 = @ptrFromInt(0);
282 const opt_ptr: ?[*]allowzero i32 = ptr;283 const opt_ptr: ?[*]allowzero i32 = ptr;
...@@ -295,7 +296,7 @@ test "allowzero pointer and slice" {...@@ -295,7 +296,7 @@ test "allowzero pointer and slice" {
295test "assign null directly to C pointer and test null equality" {296test "assign null directly to C pointer and test null equality" {
296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO297 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO298 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
298 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;299 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
299300
300 var x: [*c]i32 = null;301 var x: [*c]i32 = null;
301 _ = &x;302 _ = &x;
...@@ -353,6 +354,8 @@ test "assign null directly to C pointer and test null equality" {...@@ -353,6 +354,8 @@ test "assign null directly to C pointer and test null equality" {
353}354}
354355
355test "array initialization types" {356test "array initialization types" {
357 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
358
356 const E = enum { A, B, C };359 const E = enum { A, B, C };
357 try expect(@TypeOf([_]u8{}) == [0]u8);360 try expect(@TypeOf([_]u8{}) == [0]u8);
358 try expect(@TypeOf([_:0]u8{}) == [0:0]u8);361 try expect(@TypeOf([_:0]u8{}) == [0:0]u8);
...@@ -362,7 +365,7 @@ test "array initialization types" {...@@ -362,7 +365,7 @@ test "array initialization types" {
362365
363test "null terminated pointer" {366test "null terminated pointer" {
364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;368 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
366369
367 const S = struct {370 const S = struct {
368 fn doTheTest() !void {371 fn doTheTest() !void {
...@@ -380,7 +383,7 @@ test "null terminated pointer" {...@@ -380,7 +383,7 @@ test "null terminated pointer" {
380test "allow any sentinel" {383test "allow any sentinel" {
381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
383 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;386 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
384387
385 const S = struct {388 const S = struct {
386 fn doTheTest() !void {389 fn doTheTest() !void {
...@@ -396,7 +399,7 @@ test "allow any sentinel" {...@@ -396,7 +399,7 @@ test "allow any sentinel" {
396test "pointer sentinel with enums" {399test "pointer sentinel with enums" {
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;401 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
399 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;402 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
400403
401 const S = struct {404 const S = struct {
402 const Number = enum {405 const Number = enum {
...@@ -419,7 +422,7 @@ test "pointer sentinel with optional element" {...@@ -419,7 +422,7 @@ test "pointer sentinel with optional element" {
419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;424 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
422 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;425 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
423426
424 const S = struct {427 const S = struct {
425 fn doTheTest() !void {428 fn doTheTest() !void {
...@@ -436,7 +439,7 @@ test "pointer sentinel with +inf" {...@@ -436,7 +439,7 @@ test "pointer sentinel with +inf" {
436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO439 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
437 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO440 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;441 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
439 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;442 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
440443
441 const S = struct {444 const S = struct {
442 fn doTheTest() !void {445 fn doTheTest() !void {
...@@ -458,7 +461,7 @@ test "pointer to array at fixed address" {...@@ -458,7 +461,7 @@ test "pointer to array at fixed address" {
458}461}
459462
460test "pointer-integer arithmetic affects the alignment" {463test "pointer-integer arithmetic affects the alignment" {
461 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;464 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
462465
463 {466 {
464 var ptr: [*]align(8) u32 = undefined;467 var ptr: [*]align(8) u32 = undefined;
...@@ -507,7 +510,7 @@ test "@intFromPtr on null optional at comptime" {...@@ -507,7 +510,7 @@ test "@intFromPtr on null optional at comptime" {
507test "indexing array with sentinel returns correct type" {510test "indexing array with sentinel returns correct type" {
508 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;513 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
511514
512 var s: [:0]const u8 = "abc";515 var s: [:0]const u8 = "abc";
513 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));516 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
...@@ -515,7 +518,7 @@ test "indexing array with sentinel returns correct type" {...@@ -515,7 +518,7 @@ test "indexing array with sentinel returns correct type" {
515518
516test "element pointer to slice" {519test "element pointer to slice" {
517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO520 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;521 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
519522
520 const S = struct {523 const S = struct {
521 fn doTheTest() !void {524 fn doTheTest() !void {
...@@ -537,7 +540,7 @@ test "element pointer to slice" {...@@ -537,7 +540,7 @@ test "element pointer to slice" {
537540
538test "element pointer arithmetic to slice" {541test "element pointer arithmetic to slice" {
539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;543 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
541544
542 const S = struct {545 const S = struct {
543 fn doTheTest() !void {546 fn doTheTest() !void {
...@@ -562,7 +565,7 @@ test "element pointer arithmetic to slice" {...@@ -562,7 +565,7 @@ test "element pointer arithmetic to slice" {
562565
563test "array slicing to slice" {566test "array slicing to slice" {
564 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
565 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;568 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
566569
567 const S = struct {570 const S = struct {
568 fn doTheTest() !void {571 fn doTheTest() !void {
...@@ -592,7 +595,7 @@ test "pointer to constant decl preserves alignment" {...@@ -592,7 +595,7 @@ test "pointer to constant decl preserves alignment" {
592test "ptrCast comptime known slice to C pointer" {595test "ptrCast comptime known slice to C pointer" {
593 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO596 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO597 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;598 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
596599
597 const s: [:0]const u8 = "foo";600 const s: [:0]const u8 = "foo";
598 var p: [*c]const u8 = @ptrCast(s);601 var p: [*c]const u8 = @ptrCast(s);
...@@ -611,7 +614,7 @@ test "pointer alignment and element type include call expression" {...@@ -611,7 +614,7 @@ test "pointer alignment and element type include call expression" {
611}614}
612615
613test "pointer to array has explicit alignment" {616test "pointer to array has explicit alignment" {
614 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;617 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
615618
616 const S = struct {619 const S = struct {
617 const Base = extern struct { a: u8 };620 const Base = extern struct { a: u8 };
...@@ -636,6 +639,8 @@ test "result type preserved through multiple references" {...@@ -636,6 +639,8 @@ test "result type preserved through multiple references" {
636}639}
637640
638test "result type found through optional pointer" {641test "result type found through optional pointer" {
642 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
643
639 const ptr1: ?*const u32 = &@intCast(123);644 const ptr1: ?*const u32 = &@intCast(123);
640 const ptr2: ?[]const u8 = &.{ @intCast(123), @truncate(0xABCD) };645 const ptr2: ?[]const u8 = &.{ @intCast(123), @truncate(0xABCD) };
641 try expect(ptr1.?.* == 123);646 try expect(ptr1.?.* == 123);
...@@ -688,14 +693,15 @@ fn constant() !void {...@@ -688,14 +693,15 @@ fn constant() !void {
688693
689test "pointer-to-array constness for zero-size elements, var" {694test "pointer-to-array constness for zero-size elements, var" {
690 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
691 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;696 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
697
692 try mutable();698 try mutable();
693 try comptime mutable();699 try comptime mutable();
694}700}
695701
696test "pointer-to-array constness for zero-size elements, const" {702test "pointer-to-array constness for zero-size elements, const" {
697 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
698 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;704 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
699705
700 try constant();706 try constant();
701 try comptime constant();707 try comptime constant();
...@@ -735,7 +741,7 @@ test "comptime pointer equality through distinct fields with well-defined layout...@@ -735,7 +741,7 @@ test "comptime pointer equality through distinct fields with well-defined layout
735}741}
736742
737test "comptime pointer equality through distinct elements with well-defined layout" {743test "comptime pointer equality through distinct elements with well-defined layout" {
738 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;744 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
739745
740 const buf: [2]u32 = .{ 123, 456 };746 const buf: [2]u32 = .{ 123, 456 };
741747
...@@ -749,7 +755,7 @@ test "comptime pointer equality through distinct elements with well-defined layo...@@ -749,7 +755,7 @@ test "comptime pointer equality through distinct elements with well-defined layo
749}755}
750756
751test "pointers to elements of slice of zero-bit type" {757test "pointers to elements of slice of zero-bit type" {
752 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;758 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
753759
754 var slice: []const u0 = undefined;760 var slice: []const u0 = undefined;
755 slice = &.{ 0, 0 };761 slice = &.{ 0, 0 };
...@@ -761,7 +767,7 @@ test "pointers to elements of slice of zero-bit type" {...@@ -761,7 +767,7 @@ test "pointers to elements of slice of zero-bit type" {
761}767}
762768
763test "pointers to elements of many-ptr to zero-bit type" {769test "pointers to elements of many-ptr to zero-bit type" {
764 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;770 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
765771
766 var many_ptr: [*]const u0 = undefined;772 var many_ptr: [*]const u0 = undefined;
767 many_ptr = &.{ 0, 0 };773 many_ptr = &.{ 0, 0 };
...@@ -773,6 +779,8 @@ test "pointers to elements of many-ptr to zero-bit type" {...@@ -773,6 +779,8 @@ test "pointers to elements of many-ptr to zero-bit type" {
773}779}
774780
775test "comptime C pointer to optional pointer" {781test "comptime C pointer to optional pointer" {
782 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
783
776 const opt: ?*u8 = @ptrFromInt(0x1000);784 const opt: ?*u8 = @ptrFromInt(0x1000);
777 const outer_ptr: [*c]const ?*u8 = &opt;785 const outer_ptr: [*c]const ?*u8 = &opt;
778 const inner_ptr = &outer_ptr.*.?;786 const inner_ptr = &outer_ptr.*.?;
test/behavior/popcount.zig+3-3
...@@ -6,7 +6,7 @@ const expectEqual = std.testing.expectEqual;...@@ -6,7 +6,7 @@ const expectEqual = std.testing.expectEqual;
6test "@popCount integers" {6test "@popCount integers" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1111
12 try comptime testPopCountIntegers();12 try comptime testPopCountIntegers();
...@@ -17,7 +17,7 @@ test "@popCount 128bit integer" {...@@ -17,7 +17,7 @@ test "@popCount 128bit integer" {
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;20 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2222
23 comptime {23 comptime {
...@@ -79,7 +79,7 @@ test "@popCount vectors" {...@@ -79,7 +79,7 @@ test "@popCount vectors" {
79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
80 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;82 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;83 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8484
85 try comptime testPopCountVectors();85 try comptime testPopCountVectors();
test/behavior/prefetch.zig+1-1
...@@ -2,7 +2,7 @@ const builtin = @import("builtin");...@@ -2,7 +2,7 @@ const builtin = @import("builtin");
2const std = @import("std");2const std = @import("std");
33
4test "@prefetch()" {4test "@prefetch()" {
5 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;5 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
66
7 var a: [2]u32 = .{ 42, 42 };7 var a: [2]u32 = .{ 42, 42 };
8 var a_len = a.len;8 var a_len = a.len;
test/behavior/ptrcast.zig+22-19
...@@ -6,7 +6,7 @@ const native_endian = builtin.target.cpu.arch.endian();...@@ -6,7 +6,7 @@ const native_endian = builtin.target.cpu.arch.endian();
66
7test "reinterpret bytes as integer with nonzero offset" {7test "reinterpret bytes as integer with nonzero offset" {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1010
11 try testReinterpretBytesAsInteger();11 try testReinterpretBytesAsInteger();
12 try comptime testReinterpretBytesAsInteger();12 try comptime testReinterpretBytesAsInteger();
...@@ -22,6 +22,7 @@ fn testReinterpretBytesAsInteger() !void {...@@ -22,6 +22,7 @@ fn testReinterpretBytesAsInteger() !void {
22}22}
2323
24test "reinterpret an array over multiple elements, with no well-defined layout" {24test "reinterpret an array over multiple elements, with no well-defined layout" {
25 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2728
...@@ -39,7 +40,7 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void {...@@ -39,7 +40,7 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void {
3940
40test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" {41test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" {
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;43 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4344
44 try testReinterpretStructWrappedBytesAsInteger();45 try testReinterpretStructWrappedBytesAsInteger();
45 try comptime testReinterpretStructWrappedBytesAsInteger();46 try comptime testReinterpretStructWrappedBytesAsInteger();
...@@ -57,7 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {...@@ -57,7 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
5758
58test "reinterpret bytes of an array into an extern struct" {59test "reinterpret bytes of an array into an extern struct" {
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;61 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6162
62 try testReinterpretBytesAsExternStruct();63 try testReinterpretBytesAsExternStruct();
63 try comptime testReinterpretBytesAsExternStruct();64 try comptime testReinterpretBytesAsExternStruct();
...@@ -171,7 +172,7 @@ test "lower reinterpreted comptime field ptr" {...@@ -171,7 +172,7 @@ test "lower reinterpreted comptime field ptr" {
171172
172test "reinterpret struct field at comptime" {173test "reinterpret struct field at comptime" {
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;175 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
175176
176 const numNative = comptime Bytes.init(0x12345678);177 const numNative = comptime Bytes.init(0x12345678);
177 if (native_endian != .little) {178 if (native_endian != .little) {
...@@ -194,7 +195,7 @@ const Bytes = struct {...@@ -194,7 +195,7 @@ const Bytes = struct {
194195
195test "ptrcast of const integer has the correct object size" {196test "ptrcast of const integer has the correct object size" {
196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;198 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
198199
199 const is_value = ~@as(isize, @intCast(std.math.minInt(isize)));200 const is_value = ~@as(isize, @intCast(std.math.minInt(isize)));
200 const is_bytes = @as([*]const u8, @ptrCast(&is_value))[0..@sizeOf(isize)];201 const is_bytes = @as([*]const u8, @ptrCast(&is_value))[0..@sizeOf(isize)];
...@@ -229,7 +230,7 @@ test "ptrcast of const integer has the correct object size" {...@@ -229,7 +230,7 @@ test "ptrcast of const integer has the correct object size" {
229test "implicit optional pointer to optional anyopaque pointer" {230test "implicit optional pointer to optional anyopaque pointer" {
230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;233 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
233234
234 var buf: [4]u8 = "aoeu".*;235 var buf: [4]u8 = "aoeu".*;
235 const x: ?[*]u8 = &buf;236 const x: ?[*]u8 = &buf;
...@@ -241,7 +242,7 @@ test "implicit optional pointer to optional anyopaque pointer" {...@@ -241,7 +242,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
241test "@ptrCast slice to slice" {242test "@ptrCast slice to slice" {
242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
244 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;245 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
245246
246 const S = struct {247 const S = struct {
247 fn foo(slice: []u32) []i32 {248 fn foo(slice: []u32) []i32 {
...@@ -281,6 +282,8 @@ test "@ptrCast undefined value at comptime" {...@@ -281,6 +282,8 @@ test "@ptrCast undefined value at comptime" {
281}282}
282283
283test "comptime @ptrCast with packed struct leaves value unmodified" {284test "comptime @ptrCast with packed struct leaves value unmodified" {
285 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
286
284 const S = packed struct { three: u3 };287 const S = packed struct { three: u3 };
285 const st: S = .{ .three = 6 };288 const st: S = .{ .three = 6 };
286 try expect(st.three == 6);289 try expect(st.three == 6);
...@@ -332,7 +335,7 @@ test "@ptrCast restructures comptime-only array" {...@@ -332,7 +335,7 @@ test "@ptrCast restructures comptime-only array" {
332}335}
333336
334test "@ptrCast restructures sliced comptime-only array" {337test "@ptrCast restructures sliced comptime-only array" {
335 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;338 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
336339
337 const a3a2: [4][2]comptime_int = .{340 const a3a2: [4][2]comptime_int = .{
338 .{ 1, 2 },341 .{ 1, 2 },
...@@ -351,7 +354,7 @@ test "@ptrCast restructures sliced comptime-only array" {...@@ -351,7 +354,7 @@ test "@ptrCast restructures sliced comptime-only array" {
351test "@ptrCast slice multiplying length" {354test "@ptrCast slice multiplying length" {
352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;357 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
355358
356 const S = struct {359 const S = struct {
357 fn doTheTest(zero: u32) !void {360 fn doTheTest(zero: u32) !void {
...@@ -368,7 +371,7 @@ test "@ptrCast slice multiplying length" {...@@ -368,7 +371,7 @@ test "@ptrCast slice multiplying length" {
368test "@ptrCast array pointer to slice multiplying length" {371test "@ptrCast array pointer to slice multiplying length" {
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;374 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
372375
373 const S = struct {376 const S = struct {
374 fn doTheTest(zero: u32) !void {377 fn doTheTest(zero: u32) !void {
...@@ -385,7 +388,7 @@ test "@ptrCast array pointer to slice multiplying length" {...@@ -385,7 +388,7 @@ test "@ptrCast array pointer to slice multiplying length" {
385test "@ptrCast slice dividing length" {388test "@ptrCast slice dividing length" {
386 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
388 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;391 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
389392
390 const S = struct {393 const S = struct {
391 fn doTheTest(zero: u8) !void {394 fn doTheTest(zero: u8) !void {
...@@ -402,7 +405,7 @@ test "@ptrCast slice dividing length" {...@@ -402,7 +405,7 @@ test "@ptrCast slice dividing length" {
402test "@ptrCast array pointer to slice dividing length" {405test "@ptrCast array pointer to slice dividing length" {
403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;408 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
406409
407 const S = struct {410 const S = struct {
408 fn doTheTest(zero: u8) !void {411 fn doTheTest(zero: u8) !void {
...@@ -419,7 +422,7 @@ test "@ptrCast array pointer to slice dividing length" {...@@ -419,7 +422,7 @@ test "@ptrCast array pointer to slice dividing length" {
419test "@ptrCast slice with complex length increase" {422test "@ptrCast slice with complex length increase" {
420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
422 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;425 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
423426
424 const TwoBytes = [2]u8;427 const TwoBytes = [2]u8;
425 const ThreeBytes = [3]u8;428 const ThreeBytes = [3]u8;
...@@ -439,7 +442,7 @@ test "@ptrCast slice with complex length increase" {...@@ -439,7 +442,7 @@ test "@ptrCast slice with complex length increase" {
439test "@ptrCast array pointer to slice with complex length increase" {442test "@ptrCast array pointer to slice with complex length increase" {
440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
441 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO444 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;445 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
443446
444 const TwoBytes = [2]u8;447 const TwoBytes = [2]u8;
445 const ThreeBytes = [3]u8;448 const ThreeBytes = [3]u8;
...@@ -459,7 +462,7 @@ test "@ptrCast array pointer to slice with complex length increase" {...@@ -459,7 +462,7 @@ test "@ptrCast array pointer to slice with complex length increase" {
459test "@ptrCast slice with complex length decrease" {462test "@ptrCast slice with complex length decrease" {
460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
462 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;465 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
463466
464 const TwoBytes = [2]u8;467 const TwoBytes = [2]u8;
465 const ThreeBytes = [3]u8;468 const ThreeBytes = [3]u8;
...@@ -479,7 +482,7 @@ test "@ptrCast slice with complex length decrease" {...@@ -479,7 +482,7 @@ test "@ptrCast slice with complex length decrease" {
479test "@ptrCast array pointer to slice with complex length decrease" {482test "@ptrCast array pointer to slice with complex length decrease" {
480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
481 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;485 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
483486
484 const TwoBytes = [2]u8;487 const TwoBytes = [2]u8;
485 const ThreeBytes = [3]u8;488 const ThreeBytes = [3]u8;
...@@ -499,7 +502,7 @@ test "@ptrCast array pointer to slice with complex length decrease" {...@@ -499,7 +502,7 @@ test "@ptrCast array pointer to slice with complex length decrease" {
499test "@ptrCast slice of zero-bit type to different slice" {502test "@ptrCast slice of zero-bit type to different slice" {
500 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
502 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;505 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
503506
504 const S = struct {507 const S = struct {
505 fn doTheTest(comptime T: type, zero_bits: []const T) !void {508 fn doTheTest(comptime T: type, zero_bits: []const T) !void {
...@@ -518,7 +521,7 @@ test "@ptrCast slice of zero-bit type to different slice" {...@@ -518,7 +521,7 @@ test "@ptrCast slice of zero-bit type to different slice" {
518test "@ptrCast single-item pointer to slice with length 1" {521test "@ptrCast single-item pointer to slice with length 1" {
519 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO522 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
520 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO523 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
521 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;524 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
522525
523 const S = struct {526 const S = struct {
524 fn doTheTest(comptime T: type, ptr: *const T) !void {527 fn doTheTest(comptime T: type, ptr: *const T) !void {
...@@ -538,7 +541,7 @@ test "@ptrCast single-item pointer to slice with length 1" {...@@ -538,7 +541,7 @@ test "@ptrCast single-item pointer to slice with length 1" {
538test "@ptrCast single-item pointer to slice of bytes" {541test "@ptrCast single-item pointer to slice of bytes" {
539 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO543 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;544 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
542545
543 const S = struct {546 const S = struct {
544 fn doTheTest(comptime T: type, ptr: *const T) !void {547 fn doTheTest(comptime T: type, ptr: *const T) !void {
test/behavior/ptrfromint.zig+4-3
...@@ -3,7 +3,7 @@ const builtin = @import("builtin");...@@ -3,7 +3,7 @@ const builtin = @import("builtin");
3const expectEqual = std.testing.expectEqual;3const expectEqual = std.testing.expectEqual;
44
5test "casting integer address to function pointer" {5test "casting integer address to function pointer" {
6 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;6 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
77
8 addressToFunction();8 addressToFunction();
9 comptime addressToFunction();9 comptime addressToFunction();
...@@ -18,7 +18,7 @@ fn addressToFunction() void {...@@ -18,7 +18,7 @@ fn addressToFunction() void {
18test "mutate through ptr initialized with constant ptrFromInt value" {18test "mutate through ptr initialized with constant ptrFromInt value" {
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;21 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2222
23 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);23 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
24}24}
...@@ -35,13 +35,14 @@ fn forceCompilerAnalyzeBranchHardCodedPtrDereference(x: bool) void {...@@ -35,13 +35,14 @@ fn forceCompilerAnalyzeBranchHardCodedPtrDereference(x: bool) void {
35test "@ptrFromInt creates null pointer" {35test "@ptrFromInt creates null pointer" {
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;38 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3939
40 const ptr = @as(?*u32, @ptrFromInt(0));40 const ptr = @as(?*u32, @ptrFromInt(0));
41 try expectEqual(@as(?*u32, null), ptr);41 try expectEqual(@as(?*u32, null), ptr);
42}42}
4343
44test "@ptrFromInt creates allowzero zero pointer" {44test "@ptrFromInt creates allowzero zero pointer" {
45 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;46 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4748
test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig+1-1
...@@ -7,7 +7,7 @@ var ok: bool = false;...@@ -7,7 +7,7 @@ var ok: bool = false;
7test "reference a variable in an if after an if in the 2nd switch prong" {7test "reference a variable in an if after an if in the 2nd switch prong" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1111
12 try foo(true, Num.Two, false, "aoeu");12 try foo(true, Num.Two, false, "aoeu");
13 try expect(!ok);13 try expect(!ok);
test/behavior/reflection.zig+1
...@@ -26,6 +26,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -26,6 +26,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
26}26}
2727
28test "reflection: @field" {28test "reflection: @field" {
29 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3031
31 var f = Foo{32 var f = Foo{
test/behavior/return_address.zig+1-1
...@@ -8,7 +8,7 @@ fn retAddr() usize {...@@ -8,7 +8,7 @@ fn retAddr() usize {
8test "return address" {8test "return address" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;11 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1212
13 _ = retAddr();13 _ = retAddr();
14 // TODO: #1493814 // TODO: #14938
test/behavior/saturating_arithmetic.zig+14-14
...@@ -16,7 +16,7 @@ test "saturating add" {...@@ -16,7 +16,7 @@ test "saturating add" {
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;19 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2121
22 const S = struct {22 const S = struct {
...@@ -55,7 +55,7 @@ test "saturating add 128bit" {...@@ -55,7 +55,7 @@ test "saturating add 128bit" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;58 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6060
61 const S = struct {61 const S = struct {
...@@ -82,7 +82,7 @@ test "saturating subtraction" {...@@ -82,7 +82,7 @@ test "saturating subtraction" {
82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;85 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8787
88 const S = struct {88 const S = struct {
...@@ -120,7 +120,7 @@ test "saturating subtraction 128bit" {...@@ -120,7 +120,7 @@ test "saturating subtraction 128bit" {
120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;123 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
125125
126 const S = struct {126 const S = struct {
...@@ -143,7 +143,7 @@ fn testSatMul(comptime T: type, a: T, b: T, expected: T) !void {...@@ -143,7 +143,7 @@ fn testSatMul(comptime T: type, a: T, b: T, expected: T) !void {
143test "saturating multiplication <= 32 bits" {143test "saturating multiplication <= 32 bits" {
144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;146 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
148148
149 try testSatMul(u8, 0, maxInt(u8), 0);149 try testSatMul(u8, 0, maxInt(u8), 0);
...@@ -207,7 +207,7 @@ test "saturating multiplication <= 32 bits" {...@@ -207,7 +207,7 @@ test "saturating multiplication <= 32 bits" {
207test "saturating mul i64, i128" {207test "saturating mul i64, i128" {
208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;209 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
210 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;210 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
211211
212 try testSatMul(i64, 0, maxInt(i64), 0);212 try testSatMul(i64, 0, maxInt(i64), 0);
213 try testSatMul(i64, 0, minInt(i64), 0);213 try testSatMul(i64, 0, minInt(i64), 0);
...@@ -236,7 +236,7 @@ test "saturating multiplication" {...@@ -236,7 +236,7 @@ test "saturating multiplication" {
236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;239 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
240 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;240 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
241241
242 const S = struct {242 const S = struct {
...@@ -276,7 +276,7 @@ test "saturating shift-left" {...@@ -276,7 +276,7 @@ test "saturating shift-left" {
276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;279 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
280 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;280 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
281281
282 const S = struct {282 const S = struct {
...@@ -312,7 +312,7 @@ test "saturating shift-left" {...@@ -312,7 +312,7 @@ test "saturating shift-left" {
312test "saturating shift-left large rhs" {312test "saturating shift-left large rhs" {
313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
314 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;314 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
315 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;315 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;316 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
317317
318 {318 {
...@@ -330,7 +330,7 @@ test "saturating shl uses the LHS type" {...@@ -330,7 +330,7 @@ test "saturating shl uses the LHS type" {
330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
331 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;333 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;334 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
335335
336 const lhs_const: u8 = 1;336 const lhs_const: u8 = 1;
...@@ -358,7 +358,7 @@ test "saturating shl uses the LHS type" {...@@ -358,7 +358,7 @@ test "saturating shl uses the LHS type" {
358358
359test "sat add > 128 bits" {359test "sat add > 128 bits" {
360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;361 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
362362
363 try testSatAdd(u140, 0, 0, 0);363 try testSatAdd(u140, 0, 0, 0);
364 try testSatAdd(u140, maxInt(u140), 1, maxInt(u140));364 try testSatAdd(u140, maxInt(u140), 1, maxInt(u140));
...@@ -373,7 +373,7 @@ test "sat add > 128 bits" {...@@ -373,7 +373,7 @@ test "sat add > 128 bits" {
373373
374test "sat sub > 128 bits" {374test "sat sub > 128 bits" {
375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;376 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
377377
378 try testSatSub(u140, 0, 1, 0);378 try testSatSub(u140, 0, 1, 0);
379 try testSatSub(u140, maxInt(u140), maxInt(u140), 0);379 try testSatSub(u140, maxInt(u140), maxInt(u140), 0);
...@@ -388,7 +388,7 @@ test "sat sub > 128 bits" {...@@ -388,7 +388,7 @@ test "sat sub > 128 bits" {
388388
389test "sat mul > 128 bits" {389test "sat mul > 128 bits" {
390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
391 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;391 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
392392
393 try testSatMul(u140, 0, maxInt(u140), 0);393 try testSatMul(u140, 0, maxInt(u140), 0);
394 try testSatMul(u140, 1 << 70, 1 << 69, 1 << 139);394 try testSatMul(u140, 1 << 70, 1 << 69, 1 << 139);
...@@ -403,7 +403,7 @@ test "sat mul > 128 bits" {...@@ -403,7 +403,7 @@ test "sat mul > 128 bits" {
403403
404test "sat shl > 128 bits" {404test "sat shl > 128 bits" {
405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;406 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
407407
408 try testSatShl(u140, 0, u8, 17, 0);408 try testSatShl(u140, 0, u8, 17, 0);
409 try testSatShl(u140, 1 << 100, u8, 20, 1 << 120);409 try testSatShl(u140, 1 << 100, u8, 20, 1 << 120);
test/behavior/select.zig+2-2
...@@ -8,7 +8,7 @@ test "@select vectors" {...@@ -8,7 +8,7 @@ test "@select vectors" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;11 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1212
13 try comptime selectVectors();13 try comptime selectVectors();
14 try selectVectors();14 try selectVectors();
...@@ -52,7 +52,7 @@ test "@select arrays" {...@@ -52,7 +52,7 @@ test "@select arrays" {
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;55 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5656
57 try comptime selectArrays();57 try comptime selectArrays();
58 try selectArrays();58 try selectArrays();
test/behavior/shuffle.zig+5-3
...@@ -9,7 +9,7 @@ test "@shuffle int" {...@@ -9,7 +9,7 @@ test "@shuffle int" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;12 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1313
14 const S = struct {14 const S = struct {
15 fn doTheTest() !void {15 fn doTheTest() !void {
...@@ -50,6 +50,7 @@ test "@shuffle int" {...@@ -50,6 +50,7 @@ test "@shuffle int" {
50}50}
5151
52test "@shuffle int strange sizes" {52test "@shuffle int strange sizes" {
53 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -133,7 +134,8 @@ test "@shuffle bool 1" {...@@ -133,7 +134,8 @@ test "@shuffle bool 1" {
133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
135 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;136 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;137 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
138
137 const S = struct {139 const S = struct {
138 fn doTheTest() !void {140 fn doTheTest() !void {
139 var x: @Vector(4, bool) = [4]bool{ false, true, false, true };141 var x: @Vector(4, bool) = [4]bool{ false, true, false, true };
...@@ -154,7 +156,7 @@ test "@shuffle bool 2" {...@@ -154,7 +156,7 @@ test "@shuffle bool 2" {
154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;158 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
157 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;159 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
158160
159 const S = struct {161 const S = struct {
160 fn doTheTest() !void {162 fn doTheTest() !void {
test/behavior/sizeof_and_typeof.zig+16-6
...@@ -12,6 +12,8 @@ const x: u16 = 13;...@@ -12,6 +12,8 @@ const x: u16 = 13;
12const z: @TypeOf(x) = 19;12const z: @TypeOf(x) = 19;
1313
14test "@TypeOf() with multiple arguments" {14test "@TypeOf() with multiple arguments" {
15 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
16
15 {17 {
16 var var_1: u32 = undefined;18 var var_1: u32 = undefined;
17 var var_2: u8 = undefined;19 var var_2: u8 = undefined;
...@@ -73,7 +75,7 @@ const P = packed struct {...@@ -73,7 +75,7 @@ const P = packed struct {
7375
74test "@offsetOf" {76test "@offsetOf" {
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;78 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7779
78 // Packed structs have fixed memory layout80 // Packed structs have fixed memory layout
79 try expect(@offsetOf(P, "a") == 0);81 try expect(@offsetOf(P, "a") == 0);
...@@ -100,6 +102,7 @@ test "@offsetOf" {...@@ -100,6 +102,7 @@ test "@offsetOf" {
100}102}
101103
102test "@bitOffsetOf" {104test "@bitOffsetOf" {
105 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
104107
105 // Packed structs have fixed memory layout108 // Packed structs have fixed memory layout
...@@ -134,7 +137,7 @@ test "@TypeOf() has no runtime side effects" {...@@ -134,7 +137,7 @@ test "@TypeOf() has no runtime side effects" {
134}137}
135138
136test "branching logic inside @TypeOf" {139test "branching logic inside @TypeOf" {
137 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;140 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
139142
140 const S = struct {143 const S = struct {
...@@ -150,6 +153,8 @@ test "branching logic inside @TypeOf" {...@@ -150,6 +153,8 @@ test "branching logic inside @TypeOf" {
150}153}
151154
152test "@bitSizeOf" {155test "@bitSizeOf" {
156 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
157
153 try expect(@bitSizeOf(u2) == 2);158 try expect(@bitSizeOf(u2) == 2);
154 try expect(@bitSizeOf(u8) == @sizeOf(u8) * 8);159 try expect(@bitSizeOf(u8) == @sizeOf(u8) * 8);
155 try expect(@bitSizeOf(packed struct {160 try expect(@bitSizeOf(packed struct {
...@@ -158,6 +163,8 @@ test "@bitSizeOf" {...@@ -158,6 +163,8 @@ test "@bitSizeOf" {
158}163}
159164
160test "@sizeOf comparison against zero" {165test "@sizeOf comparison against zero" {
166 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
167
161 const S0 = struct {168 const S0 = struct {
162 f: *@This(),169 f: *@This(),
163 };170 };
...@@ -240,6 +247,7 @@ test "lazy size cast to float" {...@@ -240,6 +247,7 @@ test "lazy size cast to float" {
240}247}
241248
242test "runtime instructions inside typeof in comptime only scope" {249test "runtime instructions inside typeof in comptime only scope" {
250 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
245253
...@@ -288,7 +296,8 @@ test "lazy abi size used in comparison" {...@@ -288,7 +296,8 @@ test "lazy abi size used in comparison" {
288296
289test "peer type resolution with @TypeOf doesn't trigger dependency loop check" {297test "peer type resolution with @TypeOf doesn't trigger dependency loop check" {
290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;299 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
300
292 const T = struct {301 const T = struct {
293 next: @TypeOf(null, @as(*const @This(), undefined)),302 next: @TypeOf(null, @as(*const @This(), undefined)),
294 };303 };
...@@ -327,11 +336,11 @@ const exp = struct {...@@ -327,11 +336,11 @@ const exp = struct {
327 }336 }
328};337};
329comptime {338comptime {
330 if (builtin.zig_backend != .stage2_spirv) _ = exp;339 if (!builtin.cpu.arch.isSpirv()) _ = exp;
331}340}
332341
333test "Extern function calls in @TypeOf" {342test "Extern function calls in @TypeOf" {
334 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;343 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
335344
336 const S = extern struct {345 const S = extern struct {
337 state: c_short,346 state: c_short,
...@@ -382,6 +391,7 @@ test "Peer resolution of extern function calls in @TypeOf" {...@@ -382,6 +391,7 @@ test "Peer resolution of extern function calls in @TypeOf" {
382}391}
383392
384test "Extern function calls, dereferences and field access in @TypeOf" {393test "Extern function calls, dereferences and field access in @TypeOf" {
394 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
386396
387 const Test = struct {397 const Test = struct {
...@@ -406,7 +416,7 @@ test "Extern function calls, dereferences and field access in @TypeOf" {...@@ -406,7 +416,7 @@ test "Extern function calls, dereferences and field access in @TypeOf" {
406}416}
407417
408test "@sizeOf struct is resolved when used as operand of slicing" {418test "@sizeOf struct is resolved when used as operand of slicing" {
409 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;419 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
410420
411 const dummy = struct {};421 const dummy = struct {};
412 const S = struct {422 const S = struct {
test/behavior/slice.zig+55-43
...@@ -30,7 +30,7 @@ comptime {...@@ -30,7 +30,7 @@ comptime {
3030
31test "slicing" {31test "slicing" {
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;33 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3434
35 var array: [20]i32 = undefined;35 var array: [20]i32 = undefined;
3636
...@@ -59,7 +59,7 @@ test "const slice" {...@@ -59,7 +59,7 @@ test "const slice" {
59}59}
6060
61test "comptime slice of undefined pointer of length 0" {61test "comptime slice of undefined pointer of length 0" {
62 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;62 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6363
64 const slice1 = @as([*]i32, undefined)[0..0];64 const slice1 = @as([*]i32, undefined)[0..0];
65 try expect(slice1.len == 0);65 try expect(slice1.len == 0);
...@@ -69,7 +69,7 @@ test "comptime slice of undefined pointer of length 0" {...@@ -69,7 +69,7 @@ test "comptime slice of undefined pointer of length 0" {
6969
70test "implicitly cast array of size 0 to slice" {70test "implicitly cast array of size 0 to slice" {
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;72 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7373
74 var msg = [_]u8{};74 var msg = [_]u8{};
75 try assertLenIsZero(&msg);75 try assertLenIsZero(&msg);
...@@ -81,7 +81,7 @@ fn assertLenIsZero(msg: []const u8) !void {...@@ -81,7 +81,7 @@ fn assertLenIsZero(msg: []const u8) !void {
8181
82test "access len index of sentinel-terminated slice" {82test "access len index of sentinel-terminated slice" {
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;84 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8585
86 const S = struct {86 const S = struct {
87 fn doTheTest() !void {87 fn doTheTest() !void {
...@@ -105,7 +105,7 @@ test "comptime slice of slice preserves comptime var" {...@@ -105,7 +105,7 @@ test "comptime slice of slice preserves comptime var" {
105105
106test "open slice of open slice with sentinel" {106test "open slice of open slice with sentinel" {
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;108 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
109109
110 var slice: [:0]const u8 = "hello";110 var slice: [:0]const u8 = "hello";
111 _ = &slice;111 _ = &slice;
...@@ -123,7 +123,7 @@ test "open slice of open slice with sentinel" {...@@ -123,7 +123,7 @@ test "open slice of open slice with sentinel" {
123123
124test "open slice with sentinel of slice with end index" {124test "open slice with sentinel of slice with end index" {
125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;126 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
127127
128 var slice: [:0]const u8 = "hello";128 var slice: [:0]const u8 = "hello";
129 _ = &slice;129 _ = &slice;
...@@ -162,6 +162,8 @@ test "slice of type" {...@@ -162,6 +162,8 @@ test "slice of type" {
162}162}
163163
164test "pass a slice of types to a function" {164test "pass a slice of types to a function" {
165 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
166
165 const S = struct {167 const S = struct {
166 fn checkTypesSlice(comptime types_slice: []const type) !void {168 fn checkTypesSlice(comptime types_slice: []const type) !void {
167 try expect(types_slice.len == 2);169 try expect(types_slice.len == 2);
...@@ -175,7 +177,7 @@ test "pass a slice of types to a function" {...@@ -175,7 +177,7 @@ test "pass a slice of types to a function" {
175177
176test "generic malloc free" {178test "generic malloc free" {
177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
178 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;180 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
179181
180 const a = memAlloc(u8, 10) catch unreachable;182 const a = memAlloc(u8, 10) catch unreachable;
181 memFree(u8, a);183 memFree(u8, a);
...@@ -189,7 +191,8 @@ fn memFree(comptime T: type, memory: []T) void {...@@ -189,7 +191,8 @@ fn memFree(comptime T: type, memory: []T) void {
189}191}
190192
191test "slice of hardcoded address to pointer" {193test "slice of hardcoded address to pointer" {
192 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;194 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
195
193 const S = struct {196 const S = struct {
194 fn doTheTest() !void {197 fn doTheTest() !void {
195 const pointer = @as([*]u8, @ptrFromInt(0x04))[0..2];198 const pointer = @as([*]u8, @ptrFromInt(0x04))[0..2];
...@@ -213,7 +216,7 @@ test "comptime slice of pointer preserves comptime var" {...@@ -213,7 +216,7 @@ test "comptime slice of pointer preserves comptime var" {
213}216}
214217
215test "comptime pointer cast array and then slice" {218test "comptime pointer cast array and then slice" {
216 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;219 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
217220
218 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };221 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
219222
...@@ -229,7 +232,8 @@ test "comptime pointer cast array and then slice" {...@@ -229,7 +232,8 @@ test "comptime pointer cast array and then slice" {
229232
230test "slicing zero length array" {233test "slicing zero length array" {
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;235 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
236
233 const s1 = ""[0..];237 const s1 = ""[0..];
234 const s2 = ([_]u32{})[0..];238 const s2 = ([_]u32{})[0..];
235 try expect(s1.len == 0);239 try expect(s1.len == 0);
...@@ -239,7 +243,7 @@ test "slicing zero length array" {...@@ -239,7 +243,7 @@ test "slicing zero length array" {
239}243}
240244
241test "slicing pointer by length" {245test "slicing pointer by length" {
242 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;246 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
243247
244 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };248 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
245 const ptr: [*]const u8 = @as([*]const u8, @ptrCast(&array));249 const ptr: [*]const u8 = @as([*]const u8, @ptrCast(&array));
...@@ -254,6 +258,8 @@ test "slicing pointer by length" {...@@ -254,6 +258,8 @@ test "slicing pointer by length" {
254const x = @as([*]i32, @ptrFromInt(0x1000))[0..0x500];258const x = @as([*]i32, @ptrFromInt(0x1000))[0..0x500];
255const y = x[0x100..];259const y = x[0x100..];
256test "compile time slice of pointer to hard coded address" {260test "compile time slice of pointer to hard coded address" {
261 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
262
257 try expect(@intFromPtr(x) == 0x1000);263 try expect(@intFromPtr(x) == 0x1000);
258 try expect(x.len == 0x500);264 try expect(x.len == 0x500);
259265
...@@ -262,7 +268,7 @@ test "compile time slice of pointer to hard coded address" {...@@ -262,7 +268,7 @@ test "compile time slice of pointer to hard coded address" {
262}268}
263269
264test "slice string literal has correct type" {270test "slice string literal has correct type" {
265 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;271 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
266272
267 comptime {273 comptime {
268 try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);274 try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);
...@@ -278,7 +284,7 @@ test "slice string literal has correct type" {...@@ -278,7 +284,7 @@ test "slice string literal has correct type" {
278284
279test "result location zero sized array inside struct field implicit cast to slice" {285test "result location zero sized array inside struct field implicit cast to slice" {
280 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
281 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;287 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
282288
283 const E = struct {289 const E = struct {
284 entries: []u32,290 entries: []u32,
...@@ -291,7 +297,7 @@ test "result location zero sized array inside struct field implicit cast to slic...@@ -291,7 +297,7 @@ test "result location zero sized array inside struct field implicit cast to slic
291test "runtime safety lets us slice from len..len" {297test "runtime safety lets us slice from len..len" {
292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
293 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
294 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;300 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
295301
296 var an_array = [_]u8{ 1, 2, 3 };302 var an_array = [_]u8{ 1, 2, 3 };
297 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));303 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
...@@ -303,7 +309,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {...@@ -303,7 +309,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
303309
304test "C pointer" {310test "C pointer" {
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;312 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
307313
308 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";314 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
309 var len: u32 = 10;315 var len: u32 = 10;
...@@ -315,7 +321,7 @@ test "C pointer" {...@@ -315,7 +321,7 @@ test "C pointer" {
315test "C pointer slice access" {321test "C pointer slice access" {
316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;324 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
319325
320 var buf: [10]u32 = @splat(42);326 var buf: [10]u32 = @splat(42);
321 const c_ptr = @as([*c]const u32, @ptrCast(&buf));327 const c_ptr = @as([*c]const u32, @ptrCast(&buf));
...@@ -345,7 +351,7 @@ fn sliceSum(comptime q: []const u8) i32 {...@@ -345,7 +351,7 @@ fn sliceSum(comptime q: []const u8) i32 {
345351
346test "slice type with custom alignment" {352test "slice type with custom alignment" {
347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
348 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;354 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
349355
350 const LazilyResolvedType = struct {356 const LazilyResolvedType = struct {
351 anything: i32,357 anything: i32,
...@@ -359,7 +365,7 @@ test "slice type with custom alignment" {...@@ -359,7 +365,7 @@ test "slice type with custom alignment" {
359365
360test "obtaining a null terminated slice" {366test "obtaining a null terminated slice" {
361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;368 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
363369
364 // here we have a normal array370 // here we have a normal array
365 var buf: [50]u8 = undefined;371 var buf: [50]u8 = undefined;
...@@ -385,6 +391,8 @@ test "obtaining a null terminated slice" {...@@ -385,6 +391,8 @@ test "obtaining a null terminated slice" {
385}391}
386392
387test "empty array to slice" {393test "empty array to slice" {
394 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
395
388 const S = struct {396 const S = struct {
389 fn doTheTest() !void {397 fn doTheTest() !void {
390 const empty: []align(16) u8 = &[_]u8{};398 const empty: []align(16) u8 = &[_]u8{};
...@@ -422,7 +430,7 @@ test "comptime-known slice of a global constant" {...@@ -422,7 +430,7 @@ test "comptime-known slice of a global constant" {
422430
423test "@ptrCast slice to pointer" {431test "@ptrCast slice to pointer" {
424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;433 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
426434
427 const S = struct {435 const S = struct {
428 fn doTheTest() !void {436 fn doTheTest() !void {
...@@ -439,7 +447,7 @@ test "@ptrCast slice to pointer" {...@@ -439,7 +447,7 @@ test "@ptrCast slice to pointer" {
439447
440test "slice multi-pointer without end" {448test "slice multi-pointer without end" {
441 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;449 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
442 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;450 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
443451
444 const S = struct {452 const S = struct {
445 fn doTheTest() !void {453 fn doTheTest() !void {
...@@ -477,7 +485,7 @@ test "slice multi-pointer without end" {...@@ -477,7 +485,7 @@ test "slice multi-pointer without end" {
477test "slice syntax resulting in pointer-to-array" {485test "slice syntax resulting in pointer-to-array" {
478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;488 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
481489
482 const S = struct {490 const S = struct {
483 fn doTheTest() !void {491 fn doTheTest() !void {
...@@ -692,7 +700,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -692,7 +700,7 @@ test "slice syntax resulting in pointer-to-array" {
692700
693test "slice pointer-to-array null terminated" {701test "slice pointer-to-array null terminated" {
694 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO702 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;703 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
696704
697 comptime {705 comptime {
698 var array = [5:0]u8{ 1, 2, 3, 4, 5 };706 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
...@@ -711,7 +719,7 @@ test "slice pointer-to-array null terminated" {...@@ -711,7 +719,7 @@ test "slice pointer-to-array null terminated" {
711719
712test "slice pointer-to-array zero length" {720test "slice pointer-to-array zero length" {
713 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO721 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
714 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;722 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
715723
716 comptime {724 comptime {
717 {725 {
...@@ -745,7 +753,7 @@ test "slice pointer-to-array zero length" {...@@ -745,7 +753,7 @@ test "slice pointer-to-array zero length" {
745test "type coercion of pointer to anon struct literal to pointer to slice" {753test "type coercion of pointer to anon struct literal to pointer to slice" {
746 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO754 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
747 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;756 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
749757
750 const S = struct {758 const S = struct {
751 const U = union {759 const U = union {
...@@ -792,7 +800,7 @@ test "array concat of slices gives ptr to array" {...@@ -792,7 +800,7 @@ test "array concat of slices gives ptr to array" {
792800
793test "slice bounds in comptime concatenation" {801test "slice bounds in comptime concatenation" {
794 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
795 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;803 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
796804
797 const bs = comptime blk: {805 const bs = comptime blk: {
798 const b = "........1........";806 const b = "........1........";
...@@ -808,6 +816,8 @@ test "slice bounds in comptime concatenation" {...@@ -808,6 +816,8 @@ test "slice bounds in comptime concatenation" {
808}816}
809817
810test "slice sentinel access at comptime" {818test "slice sentinel access at comptime" {
819 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
820
811 {821 {
812 const str0 = &[_:0]u8{ '1', '2', '3' };822 const str0 = &[_:0]u8{ '1', '2', '3' };
813 const slice0: [:0]const u8 = str0;823 const slice0: [:0]const u8 = str0;
...@@ -833,7 +843,8 @@ test "slice sentinel access at comptime" {...@@ -833,7 +843,8 @@ test "slice sentinel access at comptime" {
833843
834test "slicing array with sentinel as end index" {844test "slicing array with sentinel as end index" {
835 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO845 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
836 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;846 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
847
837 const S = struct {848 const S = struct {
838 fn do() !void {849 fn do() !void {
839 var array = [_:0]u8{ 1, 2, 3, 4 };850 var array = [_:0]u8{ 1, 2, 3, 4 };
...@@ -850,7 +861,7 @@ test "slicing array with sentinel as end index" {...@@ -850,7 +861,7 @@ test "slicing array with sentinel as end index" {
850861
851test "slicing slice with sentinel as end index" {862test "slicing slice with sentinel as end index" {
852 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
853 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;864 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
854865
855 const S = struct {866 const S = struct {
856 fn do() !void {867 fn do() !void {
...@@ -879,7 +890,8 @@ test "slice len modification at comptime" {...@@ -879,7 +890,8 @@ test "slice len modification at comptime" {
879}890}
880891
881test "slice field ptr const" {892test "slice field ptr const" {
882 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;893 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
894
883 const const_slice: []const u8 = "string";895 const const_slice: []const u8 = "string";
884896
885 const const_ptr_const_slice = &const_slice;897 const const_ptr_const_slice = &const_slice;
...@@ -909,7 +921,7 @@ test "global slice field access" {...@@ -909,7 +921,7 @@ test "global slice field access" {
909 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;921 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
910 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO922 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO923 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;924 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
913925
914 const S = struct {926 const S = struct {
915 var slice: []const u8 = undefined;927 var slice: []const u8 = undefined;
...@@ -921,7 +933,7 @@ test "global slice field access" {...@@ -921,7 +933,7 @@ test "global slice field access" {
921}933}
922934
923test "slice of void" {935test "slice of void" {
924 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;936 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
925937
926 var n: usize = 10;938 var n: usize = 10;
927 _ = &n;939 _ = &n;
...@@ -931,7 +943,7 @@ test "slice of void" {...@@ -931,7 +943,7 @@ test "slice of void" {
931}943}
932944
933test "slice with dereferenced value" {945test "slice with dereferenced value" {
934 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;946 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
935947
936 var a: usize = 0;948 var a: usize = 0;
937 const idx: *usize = &a;949 const idx: *usize = &a;
...@@ -947,7 +959,7 @@ test "slice with dereferenced value" {...@@ -947,7 +959,7 @@ test "slice with dereferenced value" {
947}959}
948960
949test "empty slice ptr is non null" {961test "empty slice ptr is non null" {
950 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // Test assumes `undefined` is non-zero962 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // Test assumes `undefined` is non-zero
951963
952 {964 {
953 const empty_slice: []u8 = &[_]u8{};965 const empty_slice: []u8 = &[_]u8{};
...@@ -965,7 +977,7 @@ test "empty slice ptr is non null" {...@@ -965,7 +977,7 @@ test "empty slice ptr is non null" {
965977
966test "slice decays to many pointer" {978test "slice decays to many pointer" {
967 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
968 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;980 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
969981
970 var buf: [8]u8 = "abcdefg\x00".*;982 var buf: [8]u8 = "abcdefg\x00".*;
971 const p: [*:0]const u8 = buf[0..7 :0];983 const p: [*:0]const u8 = buf[0..7 :0];
...@@ -975,7 +987,7 @@ test "slice decays to many pointer" {...@@ -975,7 +987,7 @@ test "slice decays to many pointer" {
975test "write through pointer to optional slice arg" {987test "write through pointer to optional slice arg" {
976 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;988 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
977 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;989 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
978 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;990 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
979991
980 const S = struct {992 const S = struct {
981 fn bar(foo: *?[]const u8) !void {993 fn bar(foo: *?[]const u8) !void {
...@@ -994,7 +1006,7 @@ test "write through pointer to optional slice arg" {...@@ -994,7 +1006,7 @@ test "write through pointer to optional slice arg" {
994test "modify slice length at comptime" {1006test "modify slice length at comptime" {
995 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1007 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
996 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1008 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
997 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1009 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9981010
999 const arr: [2]u8 = .{ 10, 20 };1011 const arr: [2]u8 = .{ 10, 20 };
1000 comptime var s: []const u8 = arr[0..0];1012 comptime var s: []const u8 = arr[0..0];
...@@ -1009,7 +1021,7 @@ test "modify slice length at comptime" {...@@ -1009,7 +1021,7 @@ test "modify slice length at comptime" {
10091021
1010test "slicing zero length array field of struct" {1022test "slicing zero length array field of struct" {
1011 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1023 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1012 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1024 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1013 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1025 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10141026
1015 const S = struct {1027 const S = struct {
...@@ -1024,7 +1036,7 @@ test "slicing zero length array field of struct" {...@@ -1024,7 +1036,7 @@ test "slicing zero length array field of struct" {
10241036
1025test "slicing slices gives correct result" {1037test "slicing slices gives correct result" {
1026 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1027 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1039 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10281040
1029 const foo = "1234";1041 const foo = "1234";
1030 const bar = foo[0..4];1042 const bar = foo[0..4];
...@@ -1037,7 +1049,7 @@ test "slicing slices gives correct result" {...@@ -1037,7 +1049,7 @@ test "slicing slices gives correct result" {
10371049
1038test "get address of element of zero-sized slice" {1050test "get address of element of zero-sized slice" {
1039 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1040 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1052 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10411053
1042 const S = struct {1054 const S = struct {
1043 fn destroy(_: *void) void {}1055 fn destroy(_: *void) void {}
...@@ -1049,7 +1061,7 @@ test "get address of element of zero-sized slice" {...@@ -1049,7 +1061,7 @@ test "get address of element of zero-sized slice" {
10491061
1050test "sentinel-terminated 0-length slices" {1062test "sentinel-terminated 0-length slices" {
1051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1063 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1052 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1064 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10531065
1054 const u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };1066 const u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
10551067
...@@ -1068,7 +1080,7 @@ test "sentinel-terminated 0-length slices" {...@@ -1068,7 +1080,7 @@ test "sentinel-terminated 0-length slices" {
1068}1080}
10691081
1070test "peer slices keep abi alignment with empty struct" {1082test "peer slices keep abi alignment with empty struct" {
1071 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1083 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10721084
1073 var cond: bool = undefined;1085 var cond: bool = undefined;
1074 cond = false;1086 cond = false;
...@@ -1078,7 +1090,7 @@ test "peer slices keep abi alignment with empty struct" {...@@ -1078,7 +1090,7 @@ test "peer slices keep abi alignment with empty struct" {
1078}1090}
10791091
1080test "sentinel expression in slice operation has result type" {1092test "sentinel expression in slice operation has result type" {
1081 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1093 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10821094
1083 const sentinel = std.math.maxInt(u16);1095 const sentinel = std.math.maxInt(u16);
10841096
...@@ -1101,7 +1113,7 @@ test "sentinel expression in slice operation has result type" {...@@ -1101,7 +1113,7 @@ test "sentinel expression in slice operation has result type" {
1101}1113}
11021114
1103test "conditionally return second argument slice" {1115test "conditionally return second argument slice" {
1104 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1116 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11051117
1106 const S = struct {1118 const S = struct {
1107 fn foo(cond: bool, slice: []const u8) []const u8 {1119 fn foo(cond: bool, slice: []const u8) []const u8 {
...@@ -1115,7 +1127,7 @@ test "conditionally return second argument slice" {...@@ -1115,7 +1127,7 @@ test "conditionally return second argument slice" {
1115}1127}
11161128
1117test "slice field alignment" {1129test "slice field alignment" {
1118 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1130 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11191131
1120 const S = struct {1132 const S = struct {
1121 fn doTheTest(p: *align(1) const []u8) !void {1133 fn doTheTest(p: *align(1) const []u8) !void {
test/behavior/spirv.zig+5
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const expect = std.testing.expect;3const expect = std.testing.expect;
34
4const Sampler = @SpirvType(.sampler);5const Sampler = @SpirvType(.sampler);
...@@ -50,6 +51,8 @@ test "@SpirvType" {...@@ -50,6 +51,8 @@ test "@SpirvType" {
50}51}
5152
52test "@ptrCast to first field type" {53test "@ptrCast to first field type" {
54 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
55
53 const Inner = extern struct { a: u32 };56 const Inner = extern struct { a: u32 };
54 const Outer = extern struct { a: Inner, b: u32 };57 const Outer = extern struct { a: Inner, b: u32 };
55 var outer: Outer = undefined;58 var outer: Outer = undefined;
...@@ -58,6 +61,8 @@ test "@ptrCast to first field type" {...@@ -58,6 +61,8 @@ test "@ptrCast to first field type" {
58}61}
5962
60test "@SpirvType equality" {63test "@SpirvType equality" {
64 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
65
61 try expect(@SpirvType(.sampler) == Sampler);66 try expect(@SpirvType(.sampler) == Sampler);
62 try expect(@SpirvType(.{ .runtime_array = u32 }) == RuntimeArray);67 try expect(@SpirvType(.{ .runtime_array = u32 }) == RuntimeArray);
63 try expect(@SpirvType(.{ .sampled_image = Image }) == SampledImage);68 try expect(@SpirvType(.{ .sampled_image = Image }) == SampledImage);
test/behavior/splat.zig+6-3
...@@ -5,6 +5,7 @@ const expect = std.testing.expect;...@@ -5,6 +5,7 @@ const expect = std.testing.expect;
5const assert = std.debug.assert;5const assert = std.debug.assert;
66
7test "@splat array" {7test "@splat array" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
...@@ -33,7 +34,7 @@ test "@splat array" {...@@ -33,7 +34,7 @@ test "@splat array" {
33}34}
3435
35test "@splat array with sentinel" {36test "@splat array with sentinel" {
36 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;37 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3940
...@@ -56,7 +57,7 @@ test "@splat array with sentinel" {...@@ -56,7 +57,7 @@ test "@splat array with sentinel" {
56}57}
5758
58test "@splat zero-length array" {59test "@splat zero-length array" {
59 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;60 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6263
...@@ -79,6 +80,7 @@ test "@splat zero-length array" {...@@ -79,6 +80,7 @@ test "@splat zero-length array" {
79}80}
8081
81test "splat with an error union or optional result type" {82test "splat with an error union or optional result type" {
83 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8385
84 const S = struct {86 const S = struct {
...@@ -92,7 +94,7 @@ test "splat with an error union or optional result type" {...@@ -92,7 +94,7 @@ test "splat with an error union or optional result type" {
92}94}
9395
94test "read/write through global variable array of struct fields initialized via splat" {96test "read/write through global variable array of struct fields initialized via splat" {
95 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;97 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98100
...@@ -113,6 +115,7 @@ test "read/write through global variable array of struct fields initialized via...@@ -113,6 +115,7 @@ test "read/write through global variable array of struct fields initialized via
113}115}
114116
115test "vector @splat" {117test "vector @splat" {
118 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/src.zig+1-1
...@@ -18,7 +18,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;...@@ -18,7 +18,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
18test "@src" {18test "@src" {
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;21 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2222
23 try doTheTest();23 try doTheTest();
24}24}
test/behavior/string_literals.zig+8-7
...@@ -7,7 +7,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;...@@ -7,7 +7,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
77
8test "@tagName() returns a string literal" {8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1111
12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
...@@ -20,7 +20,7 @@ const ptr_error_name: [*:0]const u8 = error_name;...@@ -20,7 +20,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
2020
21test "@errorName() returns a string literal" {21test "@errorName() returns a string literal" {
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;23 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2424
25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
...@@ -33,7 +33,7 @@ const ptr_type_name: [*:0]const u8 = type_name;...@@ -33,7 +33,7 @@ const ptr_type_name: [*:0]const u8 = type_name;
3333
34test "@typeName() returns a string literal" {34test "@typeName() returns a string literal" {
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;36 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3737
38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
39 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name));39 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name));
...@@ -47,7 +47,7 @@ const expected_contents = "hello zig\n";...@@ -47,7 +47,7 @@ const expected_contents = "hello zig\n";
47test "@embedFile() returns a string literal" {47test "@embedFile() returns a string literal" {
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;50 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5151
52 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));52 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
53 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));53 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
...@@ -62,7 +62,7 @@ fn testFnForSrc() std.builtin.SourceLocation {...@@ -62,7 +62,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
62test "@src() returns a struct containing 0-terminated string slices" {62test "@src() returns a struct containing 0-terminated string slices" {
63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;65 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6666
67 const src = testFnForSrc();67 const src = testFnForSrc();
68 try std.testing.expect([:0]const u8 == @TypeOf(src.file));68 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
...@@ -84,7 +84,7 @@ test "string literal pointer sentinel" {...@@ -84,7 +84,7 @@ test "string literal pointer sentinel" {
84}84}
8585
86test "sentinel slice of string literal" {86test "sentinel slice of string literal" {
87 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;87 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8888
89 const string = "Hello!\x00World!";89 const string = "Hello!\x00World!";
90 try std.testing.expect(@TypeOf(string) == *const [13:0]u8);90 try std.testing.expect(@TypeOf(string) == *const [13:0]u8);
...@@ -102,7 +102,8 @@ test "Peer type resolution with string literals and unknown length u8 pointers"...@@ -102,7 +102,8 @@ test "Peer type resolution with string literals and unknown length u8 pointers"
102}102}
103103
104test "including the sentinel when dereferencing a string literal" {104test "including the sentinel when dereferencing a string literal" {
105 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;105 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
106
106 var var_str = "abc";107 var var_str = "abc";
107 const var_derefed = var_str[0 .. var_str.len + 1].*;108 const var_derefed = var_str[0 .. var_str.len + 1].*;
108109
test/behavior/struct.zig+105-48
...@@ -10,6 +10,7 @@ const maxInt = std.math.maxInt;...@@ -10,6 +10,7 @@ const maxInt = std.math.maxInt;
10top_level_field: i32,10top_level_field: i32,
1111
12test "top level fields" {12test "top level fields" {
13 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
15 var instance = @This(){16 var instance = @This(){
...@@ -43,6 +44,7 @@ const StructWithFields = struct {...@@ -43,6 +44,7 @@ const StructWithFields = struct {
43};44};
4445
45test "non-packed struct has fields padded out to the required alignment" {46test "non-packed struct has fields padded out to the required alignment" {
47 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4749
48 const foo = StructWithFields{ .a = 5, .b = 1, .c = 10, .d = 2 };50 const foo = StructWithFields{ .a = 5, .b = 1, .c = 10, .d = 2 };
...@@ -66,6 +68,7 @@ const SmallStruct = struct {...@@ -66,6 +68,7 @@ const SmallStruct = struct {
66};68};
6769
68test "lower unnamed constants" {70test "lower unnamed constants" {
71 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7073
71 var foo = SmallStruct{ .a = 1, .b = 255 };74 var foo = SmallStruct{ .a = 1, .b = 255 };
...@@ -88,7 +91,7 @@ const StructFoo = struct {...@@ -88,7 +91,7 @@ const StructFoo = struct {
88test "structs" {91test "structs" {
89 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
91 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;94 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9295
93 var foo: StructFoo = undefined;96 var foo: StructFoo = undefined;
94 @memset(@as([*]u8, @ptrCast(&foo))[0..@sizeOf(StructFoo)], 0);97 @memset(@as([*]u8, @ptrCast(&foo))[0..@sizeOf(StructFoo)], 0);
...@@ -106,6 +109,7 @@ fn testMutation(foo: *StructFoo) void {...@@ -106,6 +109,7 @@ fn testMutation(foo: *StructFoo) void {
106}109}
107110
108test "struct byval assign" {111test "struct byval assign" {
112 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
110114
111 var foo1: StructFoo = undefined;115 var foo1: StructFoo = undefined;
...@@ -170,6 +174,7 @@ const MemberFnTestFoo = struct {...@@ -170,6 +174,7 @@ const MemberFnTestFoo = struct {
170};174};
171175
172test "call member function directly" {176test "call member function directly" {
177 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174179
175 const instance = MemberFnTestFoo{ .x = 1234 };180 const instance = MemberFnTestFoo{ .x = 1234 };
...@@ -178,6 +183,7 @@ test "call member function directly" {...@@ -178,6 +183,7 @@ test "call member function directly" {
178}183}
179184
180test "store member function in variable" {185test "store member function in variable" {
186 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
182188
183 const instance = MemberFnTestFoo{ .x = 1234 };189 const instance = MemberFnTestFoo{ .x = 1234 };
...@@ -187,6 +193,7 @@ test "store member function in variable" {...@@ -187,6 +193,7 @@ test "store member function in variable" {
187}193}
188194
189test "member functions" {195test "member functions" {
196 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
190 const r = MemberFnRand{ .seed = 1234 };197 const r = MemberFnRand{ .seed = 1234 };
191 try expect(r.getSeed() == 1234);198 try expect(r.getSeed() == 1234);
192}199}
...@@ -198,6 +205,7 @@ const MemberFnRand = struct {...@@ -198,6 +205,7 @@ const MemberFnRand = struct {
198};205};
199206
200test "return struct byval from function" {207test "return struct byval from function" {
208 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
201 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
202210
203 const Bar = struct {211 const Bar = struct {
...@@ -215,6 +223,7 @@ test "return struct byval from function" {...@@ -215,6 +223,7 @@ test "return struct byval from function" {
215}223}
216224
217test "call method with mutable reference to struct with no fields" {225test "call method with mutable reference to struct with no fields" {
226 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
218 const S = struct {227 const S = struct {
219 fn doC(s: *const @This()) bool {228 fn doC(s: *const @This()) bool {
220 _ = s;229 _ = s;
...@@ -234,6 +243,7 @@ test "call method with mutable reference to struct with no fields" {...@@ -234,6 +243,7 @@ test "call method with mutable reference to struct with no fields" {
234}243}
235244
236test "struct field init with catch" {245test "struct field init with catch" {
246 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238248
239 const S = struct {249 const S = struct {
...@@ -277,7 +287,7 @@ const Val = struct {...@@ -277,7 +287,7 @@ const Val = struct {
277287
278test "struct point to self" {288test "struct point to self" {
279 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;290 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
281291
282 var root: Node = undefined;292 var root: Node = undefined;
283 root.val.x = 1;293 root.val.x = 1;
...@@ -320,7 +330,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {...@@ -320,7 +330,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
320330
321test "pass slice of empty struct to fn" {331test "pass slice of empty struct to fn" {
322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO332 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;333 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
324334
325 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);335 try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
326}336}
...@@ -331,7 +341,7 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {...@@ -331,7 +341,7 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {
331test "self-referencing struct via array member" {341test "self-referencing struct via array member" {
332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
334 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;344 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
335345
336 const T = struct {346 const T = struct {
337 children: [1]*@This(),347 children: [1]*@This(),
...@@ -342,6 +352,8 @@ test "self-referencing struct via array member" {...@@ -342,6 +352,8 @@ test "self-referencing struct via array member" {
342}352}
343353
344test "empty struct method call" {354test "empty struct method call" {
355 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
356
345 const es = EmptyStruct{};357 const es = EmptyStruct{};
346 try expect(es.method() == 1234);358 try expect(es.method() == 1234);
347}359}
...@@ -355,7 +367,7 @@ const EmptyStruct = struct {...@@ -355,7 +367,7 @@ const EmptyStruct = struct {
355test "align 1 field before self referential align 8 field as slice return type" {367test "align 1 field before self referential align 8 field as slice return type" {
356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;369 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
358 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;370 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
359371
360 const result = alloc(Expr);372 const result = alloc(Expr);
361 try expect(result.len == 0);373 try expect(result.len == 0);
...@@ -376,7 +388,7 @@ const APackedStruct = packed struct {...@@ -376,7 +388,7 @@ const APackedStruct = packed struct {
376};388};
377389
378test "packed struct" {390test "packed struct" {
379 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;391 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO393 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;394 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
...@@ -402,7 +414,7 @@ const Foo96Bits = packed struct {...@@ -402,7 +414,7 @@ const Foo96Bits = packed struct {
402414
403test "packed struct 24bits" {415test "packed struct 24bits" {
404 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;417 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
...@@ -444,7 +456,7 @@ test "packed struct 24bits" {...@@ -444,7 +456,7 @@ test "packed struct 24bits" {
444}456}
445457
446test "runtime struct initialization of bitfield" {458test "runtime struct initialization of bitfield" {
447 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;459 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
449 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
450 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO462 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -487,7 +499,8 @@ test "packed struct fields are ordered from LSB to MSB" {...@@ -487,7 +499,8 @@ test "packed struct fields are ordered from LSB to MSB" {
487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;499 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO500 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;502 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
503
491 var all: u64 = 0x7765443322221111;504 var all: u64 = 0x7765443322221111;
492 var bytes: [8]u8 align(@alignOf(Bitfields)) = undefined;505 var bytes: [8]u8 align(@alignOf(Bitfields)) = undefined;
493 @memcpy(bytes[0..8], @as([*]u8, @ptrCast(&all)));506 @memcpy(bytes[0..8], @as([*]u8, @ptrCast(&all)));
...@@ -503,7 +516,7 @@ test "packed struct fields are ordered from LSB to MSB" {...@@ -503,7 +516,7 @@ test "packed struct fields are ordered from LSB to MSB" {
503}516}
504517
505test "implicit cast packed struct field to const ptr" {518test "implicit cast packed struct field to const ptr" {
506 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;519 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;520 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
508 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO521 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -525,6 +538,7 @@ test "implicit cast packed struct field to const ptr" {...@@ -525,6 +538,7 @@ test "implicit cast packed struct field to const ptr" {
525}538}
526539
527test "zero-bit field in packed struct" {540test "zero-bit field in packed struct" {
541 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
529543
530 const S = packed struct {544 const S = packed struct {
...@@ -539,7 +553,7 @@ test "packed struct with non-ABI-aligned field" {...@@ -539,7 +553,7 @@ test "packed struct with non-ABI-aligned field" {
539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;553 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
542 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;556 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
543 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;557 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
544558
545 const S = packed struct {559 const S = packed struct {
...@@ -566,7 +580,7 @@ const bit_field_1 = BitField1{...@@ -566,7 +580,7 @@ const bit_field_1 = BitField1{
566};580};
567581
568test "bit field access" {582test "bit field access" {
569 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;583 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;584 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO585 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -599,6 +613,7 @@ fn getC(data: *const BitField1) u2 {...@@ -599,6 +613,7 @@ fn getC(data: *const BitField1) u2 {
599}613}
600614
601test "default struct initialization fields" {615test "default struct initialization fields" {
616 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
602 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
603618
604 const S = struct {619 const S = struct {
...@@ -625,7 +640,7 @@ test "packed array 24bits" {...@@ -625,7 +640,7 @@ test "packed array 24bits" {
625 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;640 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
626 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
627 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
628 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;643 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
629644
630 comptime {645 comptime {
631 try expect(@sizeOf([9]Foo32Bits) == 9 * 4);646 try expect(@sizeOf([9]Foo32Bits) == 9 * 4);
...@@ -689,7 +704,7 @@ const FooArrayOfAligned = packed struct {...@@ -689,7 +704,7 @@ const FooArrayOfAligned = packed struct {
689};704};
690705
691test "pointer to packed struct member in a stack variable" {706test "pointer to packed struct member in a stack variable" {
692 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;707 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;708 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
694 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO709 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -719,7 +734,7 @@ test "packed struct with u0 field access" {...@@ -719,7 +734,7 @@ test "packed struct with u0 field access" {
719}734}
720735
721test "access to global struct fields" {736test "access to global struct fields" {
722 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;737 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
723 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO738 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
724739
725 g_foo.bar.value = 42;740 g_foo.bar.value = 42;
...@@ -743,7 +758,7 @@ var g_foo: S0 = S0.init();...@@ -743,7 +758,7 @@ var g_foo: S0 = S0.init();
743test "packed struct with fp fields" {758test "packed struct with fp fields" {
744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO759 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
745 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO760 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
746 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;761 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
747 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;762 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
748 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;763 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
749764
...@@ -770,6 +785,7 @@ test "packed struct with fp fields" {...@@ -770,6 +785,7 @@ test "packed struct with fp fields" {
770}785}
771786
772test "fn with C calling convention returns struct by value" {787test "fn with C calling convention returns struct by value" {
788 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
773 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
775791
...@@ -796,7 +812,7 @@ test "fn with C calling convention returns struct by value" {...@@ -796,7 +812,7 @@ test "fn with C calling convention returns struct by value" {
796test "non-packed struct with u128 entry in union" {812test "non-packed struct with u128 entry in union" {
797 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO813 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
798 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO814 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
799 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;815 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
800 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;816 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
801817
802 const U = union(enum) {818 const U = union(enum) {
...@@ -819,7 +835,7 @@ test "non-packed struct with u128 entry in union" {...@@ -819,7 +835,7 @@ test "non-packed struct with u128 entry in union" {
819}835}
820836
821test "packed struct field passed to generic function" {837test "packed struct field passed to generic function" {
822 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;838 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
823 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO840 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
825 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -844,6 +860,7 @@ test "packed struct field passed to generic function" {...@@ -844,6 +860,7 @@ test "packed struct field passed to generic function" {
844}860}
845861
846test "anonymous struct literal syntax" {862test "anonymous struct literal syntax" {
863 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
847 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
848865
849 const S = struct {866 const S = struct {
...@@ -867,6 +884,8 @@ test "anonymous struct literal syntax" {...@@ -867,6 +884,8 @@ test "anonymous struct literal syntax" {
867}884}
868885
869test "fully anonymous struct" {886test "fully anonymous struct" {
887 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
888
870 const S = struct {889 const S = struct {
871 fn doTheTest() !void {890 fn doTheTest() !void {
872 try dump(.{891 try dump(.{
...@@ -889,6 +908,8 @@ test "fully anonymous struct" {...@@ -889,6 +908,8 @@ test "fully anonymous struct" {
889}908}
890909
891test "fully anonymous list literal" {910test "fully anonymous list literal" {
911 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
912
892 const S = struct {913 const S = struct {
893 fn doTheTest() !void {914 fn doTheTest() !void {
894 try dump(.{ @as(u32, 1234), @as(f64, 12.34), true, "hi" });915 try dump(.{ @as(u32, 1234), @as(f64, 12.34), true, "hi" });
...@@ -906,6 +927,8 @@ test "fully anonymous list literal" {...@@ -906,6 +927,8 @@ test "fully anonymous list literal" {
906}927}
907928
908test "tuple assigned to variable" {929test "tuple assigned to variable" {
930 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
931
909 var vec = .{ @as(i32, 22), @as(i32, 55), @as(i32, 99) };932 var vec = .{ @as(i32, 22), @as(i32, 55), @as(i32, 99) };
910 _ = &vec;933 _ = &vec;
911 try expect(vec.@"0" == 22);934 try expect(vec.@"0" == 22);
...@@ -917,6 +940,7 @@ test "tuple assigned to variable" {...@@ -917,6 +940,7 @@ test "tuple assigned to variable" {
917}940}
918941
919test "comptime struct field" {942test "comptime struct field" {
943 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
920 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO944 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
921945
922 const T = struct {946 const T = struct {
...@@ -932,7 +956,7 @@ test "comptime struct field" {...@@ -932,7 +956,7 @@ test "comptime struct field" {
932}956}
933957
934test "tuple element initialized with fn call" {958test "tuple element initialized with fn call" {
935 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;959 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
936 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO960 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
937 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO961 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
938962
...@@ -950,6 +974,7 @@ test "tuple element initialized with fn call" {...@@ -950,6 +974,7 @@ test "tuple element initialized with fn call" {
950}974}
951975
952test "struct with union field" {976test "struct with union field" {
977 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO978 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
954 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
955980
...@@ -970,6 +995,7 @@ test "struct with union field" {...@@ -970,6 +995,7 @@ test "struct with union field" {
970}995}
971996
972test "struct with 0-length union array field" {997test "struct with 0-length union array field" {
998 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
973 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO999 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
974 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1000 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9751001
...@@ -988,7 +1014,7 @@ test "struct with 0-length union array field" {...@@ -988,7 +1014,7 @@ test "struct with 0-length union array field" {
988}1014}
9891015
990test "packed struct with undefined initializers" {1016test "packed struct with undefined initializers" {
991 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1017 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1018 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
993 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1019 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1019,7 +1045,7 @@ test "packed struct with undefined initializers" {...@@ -1019,7 +1045,7 @@ test "packed struct with undefined initializers" {
1019}1045}
10201046
1021test "for loop over pointers to struct, getting field from struct pointer" {1047test "for loop over pointers to struct, getting field from struct pointer" {
1022 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1048 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1023 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1049 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1024 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1050 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10251051
...@@ -1061,7 +1087,7 @@ test "anon init through error unions and optionals" {...@@ -1061,7 +1087,7 @@ test "anon init through error unions and optionals" {
1061 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1087 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1062 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1088 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1063 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1089 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1090 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10651091
1066 const S = struct {1092 const S = struct {
1067 a: u32,1093 a: u32,
...@@ -1085,6 +1111,7 @@ test "anon init through error unions and optionals" {...@@ -1085,6 +1111,7 @@ test "anon init through error unions and optionals" {
1085}1111}
10861112
1087test "anon init through optional" {1113test "anon init through optional" {
1114 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1088 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1089 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10901117
...@@ -1105,7 +1132,7 @@ test "anon init through optional" {...@@ -1105,7 +1132,7 @@ test "anon init through optional" {
1105test "anon init through error union" {1132test "anon init through error union" {
1106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1134 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1108 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1135 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11091136
1110 const S = struct {1137 const S = struct {
1111 a: u32,1138 a: u32,
...@@ -1122,6 +1149,7 @@ test "anon init through error union" {...@@ -1122,6 +1149,7 @@ test "anon init through error union" {
1122}1149}
11231150
1124test "typed init through error unions and optionals" {1151test "typed init through error unions and optionals" {
1152 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1127 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1155 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1148,6 +1176,7 @@ test "typed init through error unions and optionals" {...@@ -1148,6 +1176,7 @@ test "typed init through error unions and optionals" {
1148}1176}
11491177
1150test "initialize struct with empty literal" {1178test "initialize struct with empty literal" {
1179 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11521181
1153 const S = struct { x: i32 = 1234 };1182 const S = struct { x: i32 = 1234 };
...@@ -1157,6 +1186,7 @@ test "initialize struct with empty literal" {...@@ -1157,6 +1186,7 @@ test "initialize struct with empty literal" {
1157}1186}
11581187
1159test "loading a struct pointer perfoms a copy" {1188test "loading a struct pointer perfoms a copy" {
1189 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11611191
1162 const S = struct {1192 const S = struct {
...@@ -1202,7 +1232,7 @@ test "packed struct aggregate init" {...@@ -1202,7 +1232,7 @@ test "packed struct aggregate init" {
1202}1232}
12031233
1204test "packed struct field access via pointer" {1234test "packed struct field access via pointer" {
1205 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1235 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1208 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1238 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1243,6 +1273,7 @@ test "store to comptime field" {...@@ -1243,6 +1273,7 @@ test "store to comptime field" {
1243}1273}
12441274
1245test "struct field init value is size of the struct" {1275test "struct field init value is size of the struct" {
1276 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1246 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12471278
1248 const namespace = struct {1279 const namespace = struct {
...@@ -1259,7 +1290,7 @@ test "struct field init value is size of the struct" {...@@ -1259,7 +1290,7 @@ test "struct field init value is size of the struct" {
1259test "under-aligned struct field" {1290test "under-aligned struct field" {
1260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1262 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1293 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1263 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1294 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12641295
1265 const U = extern union {1296 const U = extern union {
...@@ -1281,7 +1312,7 @@ test "under-aligned struct field" {...@@ -1281,7 +1312,7 @@ test "under-aligned struct field" {
12811312
1282test "fieldParentPtr of a zero-bit field" {1313test "fieldParentPtr of a zero-bit field" {
1283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1284 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1315 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1285 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1316 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12861317
1287 const S = struct {1318 const S = struct {
...@@ -1329,7 +1360,7 @@ test "fieldParentPtr of a zero-bit field" {...@@ -1329,7 +1360,7 @@ test "fieldParentPtr of a zero-bit field" {
1329}1360}
13301361
1331test "struct field has a pointer to an aligned version of itself" {1362test "struct field has a pointer to an aligned version of itself" {
1332 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1363 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13331364
1334 const E = struct {1365 const E = struct {
1335 next: *align(1) @This(),1366 next: *align(1) @This(),
...@@ -1341,7 +1372,7 @@ test "struct field has a pointer to an aligned version of itself" {...@@ -1341,7 +1372,7 @@ test "struct field has a pointer to an aligned version of itself" {
1341}1372}
13421373
1343test "struct has only one reference" {1374test "struct has only one reference" {
1344 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1375 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13451376
1346 const S = struct {1377 const S = struct {
1347 fn optionalStructParam(_: ?struct { x: u8 }) void {}1378 fn optionalStructParam(_: ?struct { x: u8 }) void {}
...@@ -1390,7 +1421,7 @@ test "struct has only one reference" {...@@ -1390,7 +1421,7 @@ test "struct has only one reference" {
13901421
1391test "no dependency loop on pointer to optional struct" {1422test "no dependency loop on pointer to optional struct" {
1392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1393 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1424 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13941425
1395 const S = struct {1426 const S = struct {
1396 const A = struct { b: B };1427 const A = struct { b: B };
...@@ -1410,7 +1441,7 @@ test "discarded struct initialization works as expected" {...@@ -1410,7 +1441,7 @@ test "discarded struct initialization works as expected" {
1410}1441}
14111442
1412test "function pointer in struct returns the struct" {1443test "function pointer in struct returns the struct" {
1413 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1444 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14141445
1415 const A = struct {1446 const A = struct {
1416 const A = @This();1447 const A = @This();
...@@ -1426,7 +1457,7 @@ test "function pointer in struct returns the struct" {...@@ -1426,7 +1457,7 @@ test "function pointer in struct returns the struct" {
1426}1457}
14271458
1428test "no dependency loop on optional field wrapped in generic function" {1459test "no dependency loop on optional field wrapped in generic function" {
1429 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1460 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14301461
1431 const S = struct {1462 const S = struct {
1432 fn Atomic(comptime T: type) type {1463 fn Atomic(comptime T: type) type {
...@@ -1444,6 +1475,7 @@ test "no dependency loop on optional field wrapped in generic function" {...@@ -1444,6 +1475,7 @@ test "no dependency loop on optional field wrapped in generic function" {
1444}1475}
14451476
1446test "optional field init with tuple" {1477test "optional field init with tuple" {
1478 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14481480
1449 const S = struct {1481 const S = struct {
...@@ -1458,6 +1490,8 @@ test "optional field init with tuple" {...@@ -1458,6 +1490,8 @@ test "optional field init with tuple" {
1458}1490}
14591491
1460test "if inside struct init inside if" {1492test "if inside struct init inside if" {
1493 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1494
1461 const MyStruct = struct { x: u32 };1495 const MyStruct = struct { x: u32 };
1462 const b: u32 = 5;1496 const b: u32 = 5;
1463 var i: u32 = 1;1497 var i: u32 = 1;
...@@ -1484,7 +1518,7 @@ test "optional generic function label struct field" {...@@ -1484,7 +1518,7 @@ test "optional generic function label struct field" {
1484}1518}
14851519
1486test "struct fields get automatically reordered" {1520test "struct fields get automatically reordered" {
1487 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1521 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1488 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
14891523
1490 const S1 = struct {1524 const S1 = struct {
...@@ -1545,7 +1579,7 @@ test "instantiate struct with comptime field" {...@@ -1545,7 +1579,7 @@ test "instantiate struct with comptime field" {
1545test "struct field pointer has correct alignment" {1579test "struct field pointer has correct alignment" {
1546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1580 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1548 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1582 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15491583
1550 const S = struct {1584 const S = struct {
1551 fn doTheTest() !void {1585 fn doTheTest() !void {
...@@ -1574,7 +1608,7 @@ test "struct field pointer has correct alignment" {...@@ -1574,7 +1608,7 @@ test "struct field pointer has correct alignment" {
1574test "extern struct field pointer has correct alignment" {1608test "extern struct field pointer has correct alignment" {
1575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1609 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1610 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1577 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1611 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15781612
1579 const S = struct {1613 const S = struct {
1580 fn doTheTest() !void {1614 fn doTheTest() !void {
...@@ -1623,6 +1657,8 @@ fn countFields(v: anytype) usize {...@@ -1623,6 +1657,8 @@ fn countFields(v: anytype) usize {
1623}1657}
16241658
1625test "struct init with no result pointer sets field result types" {1659test "struct init with no result pointer sets field result types" {
1660 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1661
1626 const S = struct {1662 const S = struct {
1627 // A function parameter has a result type, but no result pointer.1663 // A function parameter has a result type, but no result pointer.
1628 fn f(s: struct { x: u32 }) u32 {1664 fn f(s: struct { x: u32 }) u32 {
...@@ -1637,6 +1673,8 @@ test "struct init with no result pointer sets field result types" {...@@ -1637,6 +1673,8 @@ test "struct init with no result pointer sets field result types" {
1637}1673}
16381674
1639test "runtime side-effects in comptime-known struct init" {1675test "runtime side-effects in comptime-known struct init" {
1676 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1677
1640 var side_effects: u4 = 0;1678 var side_effects: u4 = 0;
1641 const S = struct { a: u4, b: u4, c: u4, d: u4 };1679 const S = struct { a: u4, b: u4, c: u4, d: u4 };
1642 const init = S{1680 const init = S{
...@@ -1662,7 +1700,7 @@ test "runtime side-effects in comptime-known struct init" {...@@ -1662,7 +1700,7 @@ test "runtime side-effects in comptime-known struct init" {
1662}1700}
16631701
1664test "pointer to struct initialized through reference to anonymous initializer provides result types" {1702test "pointer to struct initialized through reference to anonymous initializer provides result types" {
1665 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1703 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16661704
1667 const S = struct { a: u8, b: u16, c: *const anyopaque };1705 const S = struct { a: u8, b: u16, c: *const anyopaque };
1668 var my_u16: u16 = 0xABCD;1706 var my_u16: u16 = 0xABCD;
...@@ -1699,6 +1737,8 @@ test "comptimeness of optional and error union payload is analyzed properly" {...@@ -1699,6 +1737,8 @@ test "comptimeness of optional and error union payload is analyzed properly" {
1699}1737}
17001738
1701test "initializer uses own alignment" {1739test "initializer uses own alignment" {
1740 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1741
1702 const S = struct {1742 const S = struct {
1703 x: u32 = @alignOf(@This()) + 1,1743 x: u32 = @alignOf(@This()) + 1,
1704 };1744 };
...@@ -1710,6 +1750,8 @@ test "initializer uses own alignment" {...@@ -1710,6 +1750,8 @@ test "initializer uses own alignment" {
1710}1750}
17111751
1712test "initializer uses own size" {1752test "initializer uses own size" {
1753 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1754
1713 const S = struct {1755 const S = struct {
1714 x: u32 = @sizeOf(@This()) + 1,1756 x: u32 = @sizeOf(@This()) + 1,
1715 };1757 };
...@@ -1721,7 +1763,7 @@ test "initializer uses own size" {...@@ -1721,7 +1763,7 @@ test "initializer uses own size" {
1721}1763}
17221764
1723test "initializer takes a pointer to a variable inside its struct" {1765test "initializer takes a pointer to a variable inside its struct" {
1724 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1766 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17251767
1726 const namespace = struct {1768 const namespace = struct {
1727 const S = struct {1769 const S = struct {
...@@ -1741,7 +1783,7 @@ test "initializer takes a pointer to a variable inside its struct" {...@@ -1741,7 +1783,7 @@ test "initializer takes a pointer to a variable inside its struct" {
1741}1783}
17421784
1743test "circular dependency through pointer field of a struct" {1785test "circular dependency through pointer field of a struct" {
1744 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1786 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17451787
1746 const S = struct {1788 const S = struct {
1747 const StructInner = extern struct {1789 const StructInner = extern struct {
...@@ -1764,7 +1806,7 @@ test "circular dependency through pointer field of a struct" {...@@ -1764,7 +1806,7 @@ test "circular dependency through pointer field of a struct" {
1764}1806}
17651807
1766test "field calls do not force struct field init resolution" {1808test "field calls do not force struct field init resolution" {
1767 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1809 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17681810
1769 const S = struct {1811 const S = struct {
1770 x: u32 = blk: {1812 x: u32 = blk: {
...@@ -1793,6 +1835,7 @@ test "tuple with comptime-only field" {...@@ -1793,6 +1835,7 @@ test "tuple with comptime-only field" {
1793}1835}
17941836
1795test "extern struct fields are aligned to 1" {1837test "extern struct fields are aligned to 1" {
1838 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1796 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17971840
1798 const Foo = extern struct {1841 const Foo = extern struct {
...@@ -1812,7 +1855,7 @@ test "assign to slice.len of global variable" {...@@ -1812,7 +1855,7 @@ test "assign to slice.len of global variable" {
1812 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1855 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1813 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1856 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1814 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1857 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1815 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1858 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1816 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1859 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
18171860
1818 const S = struct {1861 const S = struct {
...@@ -1825,6 +1868,8 @@ test "assign to slice.len of global variable" {...@@ -1825,6 +1868,8 @@ test "assign to slice.len of global variable" {
1825}1868}
18261869
1827test "pointers to fields of volatile pointer to struct are also volatile" {1870test "pointers to fields of volatile pointer to struct are also volatile" {
1871 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1872
1828 const B = extern struct {1873 const B = extern struct {
1829 a: u32,1874 a: u32,
1830 b: i32,1875 b: i32,
...@@ -1839,6 +1884,8 @@ test "pointers to fields of volatile pointer to struct are also volatile" {...@@ -1839,6 +1884,8 @@ test "pointers to fields of volatile pointer to struct are also volatile" {
1839}1884}
18401885
1841test "pointers to fields of volatile pointer to union are also volatile" {1886test "pointers to fields of volatile pointer to union are also volatile" {
1887 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1888
1842 const D = extern union {1889 const D = extern union {
1843 a: u32,1890 a: u32,
1844 b: i32,1891 b: i32,
...@@ -1862,7 +1909,7 @@ test "array of structs inside struct initialized with undefined" {...@@ -1862,7 +1909,7 @@ test "array of structs inside struct initialized with undefined" {
18621909
1863test "runtime call in nested initializer" {1910test "runtime call in nested initializer" {
1864 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1911 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1865 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1912 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18661913
1867 const Holder = struct {1914 const Holder = struct {
1868 array: []const u8,1915 array: []const u8,
...@@ -1892,6 +1939,7 @@ test "runtime call in nested initializer" {...@@ -1892,6 +1939,7 @@ test "runtime call in nested initializer" {
1892}1939}
18931940
1894test "runtime value in nested initializer passed as pointer to function" {1941test "runtime value in nested initializer passed as pointer to function" {
1942 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1895 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1943 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18961944
1897 const Bar = struct {1945 const Bar = struct {
...@@ -1915,7 +1963,7 @@ test "runtime value in nested initializer passed as pointer to function" {...@@ -1915,7 +1963,7 @@ test "runtime value in nested initializer passed as pointer to function" {
1915}1963}
19161964
1917test "struct field default value is a call" {1965test "struct field default value is a call" {
1918 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1966 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1967 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1968 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19211969
...@@ -1949,6 +1997,8 @@ test "struct field default value is a call" {...@@ -1949,6 +1997,8 @@ test "struct field default value is a call" {
1949}1997}
19501998
1951test "aggregate initializers should allow initializing comptime fields, verifying equality" {1999test "aggregate initializers should allow initializing comptime fields, verifying equality" {
2000 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2001
1952 var x: u32 = 15;2002 var x: u32 = 15;
1953 _ = &x;2003 _ = &x;
1954 const T = @TypeOf(.{ @as(i32, -1234), @as(u32, 5678), x });2004 const T = @TypeOf(.{ @as(i32, -1234), @as(u32, 5678), x });
...@@ -1960,6 +2010,7 @@ test "aggregate initializers should allow initializing comptime fields, verifyin...@@ -1960,6 +2010,7 @@ test "aggregate initializers should allow initializing comptime fields, verifyin
1960}2010}
19612011
1962test "assignment of field with padding" {2012test "assignment of field with padding" {
2013 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1963 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;2014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1964 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2015 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19652016
...@@ -1989,7 +2040,7 @@ test "assignment of field with padding" {...@@ -1989,7 +2040,7 @@ test "assignment of field with padding" {
1989}2040}
19902041
1991test "initiate global variable with runtime value" {2042test "initiate global variable with runtime value" {
1992 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2043 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1993 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;2044 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1994 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19952046
...@@ -2008,7 +2059,7 @@ test "initiate global variable with runtime value" {...@@ -2008,7 +2059,7 @@ test "initiate global variable with runtime value" {
2008}2059}
20092060
2010test "struct containing optional pointer to array of @This()" {2061test "struct containing optional pointer to array of @This()" {
2011 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2062 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
20122063
2013 const S = struct {2064 const S = struct {
2014 x: ?*const [1]@This(),2065 x: ?*const [1]@This(),
...@@ -2081,6 +2132,7 @@ test "anonymous struct equivalence" {...@@ -2081,6 +2132,7 @@ test "anonymous struct equivalence" {
2081}2132}
20822133
2083test "field access through mem ptr arg" {2134test "field access through mem ptr arg" {
2135 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2084 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2136 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2085 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2137 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20862138
...@@ -2124,7 +2176,7 @@ test "field access through mem ptr arg" {...@@ -2124,7 +2176,7 @@ test "field access through mem ptr arg" {
2124}2176}
21252177
2126test "align 1 struct parameter dereferenced and returned" {2178test "align 1 struct parameter dereferenced and returned" {
2127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2179 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
21282180
2129 const S = extern struct {2181 const S = extern struct {
2130 a: u32,2182 a: u32,
...@@ -2175,7 +2227,8 @@ test "pass a pointer to a comptime-only struct field to a function" {...@@ -2175,7 +2227,8 @@ test "pass a pointer to a comptime-only struct field to a function" {
2175}2227}
21762228
2177test "overaligned extern struct fields" {2229test "overaligned extern struct fields" {
2178 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2230 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2231
2179 const A = struct {2232 const A = struct {
2180 a: *anyopaque,2233 a: *anyopaque,
2181 b: u64,2234 b: u64,
...@@ -2225,7 +2278,8 @@ test "overaligned extern struct fields" {...@@ -2225,7 +2278,8 @@ test "overaligned extern struct fields" {
2225}2278}
22262279
2227test "runtime-known slice of comptime-only struct" {2280test "runtime-known slice of comptime-only struct" {
2228 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2281 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2282
2229 const Mixed = struct { index: u32, T: type };2283 const Mixed = struct { index: u32, T: type };
22302284
2231 const static = struct {2285 const static = struct {
...@@ -2247,7 +2301,8 @@ test "runtime-known slice of comptime-only struct" {...@@ -2247,7 +2301,8 @@ test "runtime-known slice of comptime-only struct" {
2247}2301}
22482302
2249test "struct contains aligned pointer to itself through type decl" {2303test "struct contains aligned pointer to itself through type decl" {
2250 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2304 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2305
2251 const Slab = struct {2306 const Slab = struct {
2252 const Ptr = *align(64) const @This();2307 const Ptr = *align(64) const @This();
2253 next: Ptr,2308 next: Ptr,
...@@ -2265,7 +2320,7 @@ test "struct contains aligned pointer to itself through type decl" {...@@ -2265,7 +2320,7 @@ test "struct contains aligned pointer to itself through type decl" {
2265}2320}
22662321
2267test "struct contains underaligned field with overaligned pointer to itself" {2322test "struct contains underaligned field with overaligned pointer to itself" {
2268 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2323 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2269 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;2324 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
22702325
2271 const S = struct {2326 const S = struct {
...@@ -2301,6 +2356,8 @@ test "struct queries typeinfo of struct containing pointer back to first struct"...@@ -2301,6 +2356,8 @@ test "struct queries typeinfo of struct containing pointer back to first struct"
2301}2356}
23022357
2303test "pointer to runtime field of struct containing struct containing comptime-only optional" {2358test "pointer to runtime field of struct containing struct containing comptime-only optional" {
2359 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2360
2304 const Foo = struct {2361 const Foo = struct {
2305 padding: struct { a: u8, b: ?comptime_int },2362 padding: struct { a: u8, b: ?comptime_int },
2306 number: u8,2363 number: u8,
test/behavior/struct_contains_null_ptr_itself.zig+1-1
...@@ -4,7 +4,7 @@ const builtin = @import("builtin");...@@ -4,7 +4,7 @@ const builtin = @import("builtin");
44
5test "struct contains null pointer which contains original struct" {5test "struct contains null pointer which contains original struct" {
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;7 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
88
9 var x: ?*NodeLineComment = null;9 var x: ?*NodeLineComment = null;
10 _ = &x;10 _ = &x;
test/behavior/struct_contains_slice_of_itself.zig+2-2
...@@ -13,7 +13,7 @@ const NodeAligned = struct {...@@ -13,7 +13,7 @@ const NodeAligned = struct {
1313
14test "struct contains slice of itself" {14test "struct contains slice of itself" {
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;16 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1717
18 var other_nodes = [_]Node{18 var other_nodes = [_]Node{
19 Node{19 Node{
...@@ -53,7 +53,7 @@ test "struct contains slice of itself" {...@@ -53,7 +53,7 @@ test "struct contains slice of itself" {
5353
54test "struct contains aligned slice of itself" {54test "struct contains aligned slice of itself" {
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;56 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5757
58 var other_nodes = [_]NodeAligned{58 var other_nodes = [_]NodeAligned{
59 NodeAligned{59 NodeAligned{
test/behavior/switch.zig+51-14
...@@ -23,6 +23,7 @@ fn testSwitchWithNumbers(x: u32) !void {...@@ -23,6 +23,7 @@ fn testSwitchWithNumbers(x: u32) !void {
23}23}
2424
25test "switch with all ranges" {25test "switch with all ranges" {
26 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2728
28 try expect(testSwitchWithAllRanges(50, 3) == 1);29 try expect(testSwitchWithAllRanges(50, 3) == 1);
...@@ -44,7 +45,7 @@ test "switch arbitrary int size" {...@@ -44,7 +45,7 @@ test "switch arbitrary int size" {
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
47 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO48 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
4950
50 const S = struct {51 const S = struct {
...@@ -258,6 +259,7 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {...@@ -258,6 +259,7 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {
258}259}
259260
260test "switching on booleans" {261test "switching on booleans" {
262 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262264
263 try testSwitchOnBools();265 try testSwitchOnBools();
...@@ -313,6 +315,7 @@ test "undefined.u0" {...@@ -313,6 +315,7 @@ test "undefined.u0" {
313}315}
314316
315test "switch with disjoint range" {317test "switch with disjoint range" {
318 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
317 var q: u8 = 0;320 var q: u8 = 0;
318 _ = &q;321 _ = &q;
...@@ -324,6 +327,8 @@ test "switch with disjoint range" {...@@ -324,6 +327,8 @@ test "switch with disjoint range" {
324}327}
325328
326test "switch variable for range and multiple prongs" {329test "switch variable for range and multiple prongs" {
330 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
331
327 const S = struct {332 const S = struct {
328 fn doTheTest() !void {333 fn doTheTest() !void {
329 try doTheSwitch(16);334 try doTheSwitch(16);
...@@ -354,7 +359,7 @@ fn poll() void {...@@ -354,7 +359,7 @@ fn poll() void {
354}359}
355360
356test "switch on global mutable var isn't constant-folded" {361test "switch on global mutable var isn't constant-folded" {
357 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;362 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
358 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
359364
360 while (state < 2) {365 while (state < 2) {
...@@ -369,6 +374,7 @@ const SwitchProngWithVarEnum = union(enum) {...@@ -369,6 +374,7 @@ const SwitchProngWithVarEnum = union(enum) {
369};374};
370375
371test "switch prong with variable" {376test "switch prong with variable" {
377 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -394,6 +400,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {...@@ -394,6 +400,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {
394}400}
395401
396test "switch on enum using pointer capture" {402test "switch on enum using pointer capture" {
403 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
399406
...@@ -414,6 +421,7 @@ fn testSwitchEnumPtrCapture() !void {...@@ -414,6 +421,7 @@ fn testSwitchEnumPtrCapture() !void {
414}421}
415422
416test "switch handles all cases of number" {423test "switch handles all cases of number" {
424 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
418426
419 try testSwitchHandleAllCases();427 try testSwitchHandleAllCases();
...@@ -453,6 +461,7 @@ fn testSwitchHandleAllCasesRange(x: u8) u8 {...@@ -453,6 +461,7 @@ fn testSwitchHandleAllCasesRange(x: u8) u8 {
453}461}
454462
455test "switch on union with some prongs capturing" {463test "switch on union with some prongs capturing" {
464 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
458467
...@@ -490,6 +499,7 @@ test "switch on const enum with var" {...@@ -490,6 +499,7 @@ test "switch on const enum with var" {
490}499}
491500
492test "anon enum literal used in switch on union enum" {501test "anon enum literal used in switch on union enum" {
502 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
493 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
494504
495 const Foo = union(enum) {505 const Foo = union(enum) {
...@@ -506,6 +516,7 @@ test "anon enum literal used in switch on union enum" {...@@ -506,6 +516,7 @@ test "anon enum literal used in switch on union enum" {
506}516}
507517
508test "switch all prongs unreachable" {518test "switch all prongs unreachable" {
519 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO520 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
510521
511 try testAllProngsUnreachable();522 try testAllProngsUnreachable();
...@@ -529,6 +540,7 @@ fn switchWithUnreachable(x: i32) i32 {...@@ -529,6 +540,7 @@ fn switchWithUnreachable(x: i32) i32 {
529}540}
530541
531test "capture value of switch with all unreachable prongs" {542test "capture value of switch with all unreachable prongs" {
543 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO544 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
533545
534 const x = return_a_number() catch |err| switch (err) {546 const x = return_a_number() catch |err| switch (err) {
...@@ -562,7 +574,7 @@ test "switch on integer with else capturing expr" {...@@ -562,7 +574,7 @@ test "switch on integer with else capturing expr" {
562test "else prong of switch on error set excludes other cases" {574test "else prong of switch on error set excludes other cases" {
563 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
564 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
565 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;577 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
566 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;578 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
567579
568 const S = struct {580 const S = struct {
...@@ -597,7 +609,7 @@ test "else prong of switch on error set excludes other cases" {...@@ -597,7 +609,7 @@ test "else prong of switch on error set excludes other cases" {
597test "switch prongs with error set cases make a new error set type for capture value" {609test "switch prongs with error set cases make a new error set type for capture value" {
598 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
599 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO611 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
600 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;612 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
601 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;613 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
602614
603 const S = struct {615 const S = struct {
...@@ -632,6 +644,7 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -632,6 +644,7 @@ test "switch prongs with error set cases make a new error set type for capture v
632}644}
633645
634test "return result loc and then switch with range implicit casted to error union" {646test "return result loc and then switch with range implicit casted to error union" {
647 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO648 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
636649
637 const S = struct {650 const S = struct {
...@@ -650,6 +663,7 @@ test "return result loc and then switch with range implicit casted to error unio...@@ -650,6 +663,7 @@ test "return result loc and then switch with range implicit casted to error unio
650}663}
651664
652test "switch with null and T peer types and inferred result location type" {665test "switch with null and T peer types and inferred result location type" {
666 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
653 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO667 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
654 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO668 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
655669
...@@ -669,6 +683,7 @@ test "switch with null and T peer types and inferred result location type" {...@@ -669,6 +683,7 @@ test "switch with null and T peer types and inferred result location type" {
669}683}
670684
671test "switch prongs with cases with identical payload types" {685test "switch prongs with cases with identical payload types" {
686 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
672 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO687 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
673 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
674689
...@@ -777,7 +792,7 @@ test "switch prong pointer capture alignment" {...@@ -777,7 +792,7 @@ test "switch prong pointer capture alignment" {
777test "switch on pointer type" {792test "switch on pointer type" {
778 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;793 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO794 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
780 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;795 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
781 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/llvm/llvm-project/issues/176634796 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/llvm/llvm-project/issues/176634
782797
783 const S = struct {798 const S = struct {
...@@ -824,6 +839,7 @@ test "switch on error set with single else" {...@@ -824,6 +839,7 @@ test "switch on error set with single else" {
824}839}
825840
826test "switch capture copies its payload" {841test "switch capture copies its payload" {
842 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
829845
...@@ -915,6 +931,8 @@ test "comptime inline switch" {...@@ -915,6 +931,8 @@ test "comptime inline switch" {
915}931}
916932
917test "switch capture peer type resolution" {933test "switch capture peer type resolution" {
934 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
935
918 const U = union(enum) {936 const U = union(enum) {
919 a: u32,937 a: u32,
920 b: u64,938 b: u64,
...@@ -930,6 +948,7 @@ test "switch capture peer type resolution" {...@@ -930,6 +948,7 @@ test "switch capture peer type resolution" {
930}948}
931949
932test "switch capture peer type resolution for in-memory coercible payloads" {950test "switch capture peer type resolution for in-memory coercible payloads" {
951 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
933 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;952 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
934953
935 const T1 = c_int;954 const T1 = c_int;
...@@ -954,7 +973,7 @@ test "switch capture peer type resolution for in-memory coercible payloads" {...@@ -954,7 +973,7 @@ test "switch capture peer type resolution for in-memory coercible payloads" {
954973
955test "switch pointer capture peer type resolution" {974test "switch pointer capture peer type resolution" {
956 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;975 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
957 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;976 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
958977
959 const T1 = c_int;978 const T1 = c_int;
960 const t1_info = @typeInfo(T1).int;979 const t1_info = @typeInfo(T1).int;
...@@ -983,6 +1002,8 @@ test "switch pointer capture peer type resolution" {...@@ -983,6 +1002,8 @@ test "switch pointer capture peer type resolution" {
983}1002}
9841003
985test "inline switch range that includes the maximum value of the switched type" {1004test "inline switch range that includes the maximum value of the switched type" {
1005 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1006
986 const inputs: [3]u8 = .{ 0, 254, 255 };1007 const inputs: [3]u8 = .{ 0, 254, 255 };
987 for (inputs) |input| {1008 for (inputs) |input| {
988 switch (input) {1009 switch (input) {
...@@ -995,7 +1016,7 @@ test "inline switch range that includes the maximum value of the switched type"...@@ -995,7 +1016,7 @@ test "inline switch range that includes the maximum value of the switched type"
995test "nested break ignores switch conditions and breaks instead" {1016test "nested break ignores switch conditions and breaks instead" {
996 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1017 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
997 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1018 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
998 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1019 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9991020
1000 const S = struct {1021 const S = struct {
1001 fn register_to_address(ident: []const u8) !u8 {1022 fn register_to_address(ident: []const u8) !u8 {
...@@ -1016,7 +1037,7 @@ test "nested break ignores switch conditions and breaks instead" {...@@ -1016,7 +1037,7 @@ test "nested break ignores switch conditions and breaks instead" {
1016}1037}
10171038
1018test "peer type resolution on switch captures ignores unused payload bits" {1039test "peer type resolution on switch captures ignores unused payload bits" {
1019 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1040 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1020 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1041 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10211042
1022 const Foo = union(enum) {1043 const Foo = union(enum) {
...@@ -1042,7 +1063,7 @@ test "peer type resolution on switch captures ignores unused payload bits" {...@@ -1042,7 +1063,7 @@ test "peer type resolution on switch captures ignores unused payload bits" {
10421063
1043test "switch prong captures range" {1064test "switch prong captures range" {
1044 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1065 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1045 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1066 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
10461067
1047 const S = struct {1068 const S = struct {
1048 fn a(b: []u3, c: u3) void {1069 fn a(b: []u3, c: u3) void {
...@@ -1060,6 +1081,8 @@ test "switch prong captures range" {...@@ -1060,6 +1081,8 @@ test "switch prong captures range" {
1060}1081}
10611082
1062test "prong with inline call to unreachable" {1083test "prong with inline call to unreachable" {
1084 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1085
1063 const U = union(enum) {1086 const U = union(enum) {
1064 void: void,1087 void: void,
1065 bool: bool,1088 bool: bool,
...@@ -1077,6 +1100,8 @@ test "prong with inline call to unreachable" {...@@ -1077,6 +1100,8 @@ test "prong with inline call to unreachable" {
1077}1100}
10781101
1079test "block error return trace index is reset between prongs" {1102test "block error return trace index is reset between prongs" {
1103 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1104
1080 const S = struct {1105 const S = struct {
1081 fn returnError() error{TestFailed} {1106 fn returnError() error{TestFailed} {
1082 return error.TestFailed;1107 return error.TestFailed;
...@@ -1105,6 +1130,8 @@ test "block error return trace index is reset between prongs" {...@@ -1105,6 +1130,8 @@ test "block error return trace index is reset between prongs" {
1105}1130}
11061131
1107test "labeled switch with break" {1132test "labeled switch with break" {
1133 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1134
1108 var six: u32 = undefined;1135 var six: u32 = undefined;
1109 six = 6;1136 six = 6;
11101137
...@@ -1144,6 +1171,8 @@ test "unlabeled break ignores switch" {...@@ -1144,6 +1171,8 @@ test "unlabeled break ignores switch" {
1144}1171}
11451172
1146test "switch on a signed value smaller than the smallest prong value" {1173test "switch on a signed value smaller than the smallest prong value" {
1174 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1175
1147 var v: i32 = undefined;1176 var v: i32 = undefined;
1148 v = -1;1177 v = -1;
1149 switch (v) {1178 switch (v) {
...@@ -1153,6 +1182,8 @@ test "switch on a signed value smaller than the smallest prong value" {...@@ -1153,6 +1182,8 @@ test "switch on a signed value smaller than the smallest prong value" {
1153}1182}
11541183
1155test "switch on 8-bit mod result" {1184test "switch on 8-bit mod result" {
1185 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1186
1156 var x: u8 = undefined;1187 var x: u8 = undefined;
1157 x = 16;1188 x = 16;
1158 switch (x % 4) {1189 switch (x % 4) {
...@@ -1261,6 +1292,8 @@ test "switch with uninstantiable union fields" {...@@ -1261,6 +1292,8 @@ test "switch with uninstantiable union fields" {
1261}1292}
12621293
1263test "switch with tag capture" {1294test "switch with tag capture" {
1295 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1296
1264 const U = union(enum) {1297 const U = union(enum) {
1265 a,1298 a,
1266 b: i32,1299 b: i32,
...@@ -1312,6 +1345,8 @@ test "switch with tag capture" {...@@ -1312,6 +1345,8 @@ test "switch with tag capture" {
1312}1345}
13131346
1314test "switch with complex item expressions" {1347test "switch with complex item expressions" {
1348 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1349
1315 const S = struct {1350 const S = struct {
1316 fn doTheTest() !void {1351 fn doTheTest() !void {
1317 try doTheSwitch(2000, 20);1352 try doTheSwitch(2000, 20);
...@@ -1414,7 +1449,7 @@ test "single range switch prong capture" {...@@ -1414,7 +1449,7 @@ test "single range switch prong capture" {
1414}1449}
14151450
1416test "switch on packed struct" {1451test "switch on packed struct" {
1417 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1452 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14181453
1419 const P = packed struct {1454 const P = packed struct {
1420 a: u1,1455 a: u1,
...@@ -1446,7 +1481,7 @@ test "switch on packed struct" {...@@ -1446,7 +1481,7 @@ test "switch on packed struct" {
1446}1481}
14471482
1448test "switch on packed union" {1483test "switch on packed union" {
1449 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1484 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14501485
1451 const P = packed union(u2) {1486 const P = packed union(u2) {
1452 a: u2,1487 a: u2,
...@@ -1495,7 +1530,7 @@ test "switch on packed union" {...@@ -1495,7 +1530,7 @@ test "switch on packed union" {
1495}1530}
14961531
1497test "switch on nested packed containers" {1532test "switch on nested packed containers" {
1498 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1533 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14991534
1500 const P = packed struct {1535 const P = packed struct {
1501 iu: u17,1536 iu: u17,
...@@ -1550,7 +1585,7 @@ test "switch on nested packed containers" {...@@ -1550,7 +1585,7 @@ test "switch on nested packed containers" {
1550}1585}
15511586
1552test "switch on large types" {1587test "switch on large types" {
1553 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1588 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15541589
1555 const S = struct {1590 const S = struct {
1556 fn doTheTest(a: u128, b: i500) !void {1591 fn doTheTest(a: u128, b: i500) !void {
...@@ -1652,6 +1687,8 @@ test "repeated switch analysis overrides previous analysis results" {...@@ -1652,6 +1687,8 @@ test "repeated switch analysis overrides previous analysis results" {
1652}1687}
16531688
1654test "union field pointer capture preserves alignment in inline prong" {1689test "union field pointer capture preserves alignment in inline prong" {
1690 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1691
1655 const U = union(enum) {1692 const U = union(enum) {
1656 a: u32,1693 a: u32,
1657 b: u32,1694 b: u32,
...@@ -1671,7 +1708,7 @@ test "union field pointer capture preserves alignment in inline prong" {...@@ -1671,7 +1708,7 @@ test "union field pointer capture preserves alignment in inline prong" {
1671}1708}
16721709
1673test "switch on expression" {1710test "switch on expression" {
1674 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1711 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16751712
1676 var a: []const []const u8 = &.{ "b", "b", "A", "A", "b" };1713 var a: []const []const u8 = &.{ "b", "b", "A", "A", "b" };
1677 _ = &a;1714 _ = &a;
test/behavior/switch_loop.zig+19-7
...@@ -4,6 +4,7 @@ const assert = std.debug.assert;...@@ -4,6 +4,7 @@ const assert = std.debug.assert;
4const expect = std.testing.expect;4const expect = std.testing.expect;
55
6test "simple switch loop" {6test "simple switch loop" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -27,6 +28,7 @@ test "simple switch loop" {...@@ -27,6 +28,7 @@ test "simple switch loop" {
27}28}
2829
29test "switch loop with ranges" {30test "switch loop with ranges" {
31 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -47,6 +49,7 @@ test "switch loop with ranges" {...@@ -47,6 +49,7 @@ test "switch loop with ranges" {
47}49}
4850
49test "switch loop on enum" {51test "switch loop on enum" {
52 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -70,6 +73,7 @@ test "switch loop on enum" {...@@ -70,6 +73,7 @@ test "switch loop on enum" {
70}73}
7174
72test "switch loop with error set" {75test "switch loop with error set" {
76 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -93,6 +97,7 @@ test "switch loop with error set" {...@@ -93,6 +97,7 @@ test "switch loop with error set" {
93}97}
9498
95test "switch loop on tagged union" {99test "switch loop on tagged union" {
100 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
96 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -128,7 +133,7 @@ test "switch loop dispatching instructions" {...@@ -128,7 +133,7 @@ test "switch loop dispatching instructions" {
128 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
131 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO136 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
132137
133 const S = struct {138 const S = struct {
134 const Inst = union(enum) {139 const Inst = union(enum) {
...@@ -175,6 +180,7 @@ test "switch loop dispatching instructions" {...@@ -175,6 +180,7 @@ test "switch loop dispatching instructions" {
175}180}
176181
177test "switch loop with pointer capture" {182test "switch loop with pointer capture" {
183 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO186 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -222,7 +228,7 @@ test "unanalyzed continue with operand" {...@@ -222,7 +228,7 @@ test "unanalyzed continue with operand" {
222228
223test "switch loop on larger than pointer integer" {229test "switch loop on larger than pointer integer" {
224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;231 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
226232
227 var entry: @Int(.unsigned, @bitSizeOf(usize) + 1) = undefined;233 var entry: @Int(.unsigned, @bitSizeOf(usize) + 1) = undefined;
228 entry = 0;234 entry = 0;
...@@ -242,6 +248,7 @@ test "switch loop on larger than pointer integer" {...@@ -242,6 +248,7 @@ test "switch loop on larger than pointer integer" {
242}248}
243249
244test "switch loop on non-exhaustive enum" {250test "switch loop on non-exhaustive enum" {
251 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO254 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -290,6 +297,8 @@ test "switch loop with discarded tag capture" {...@@ -290,6 +297,8 @@ test "switch loop with discarded tag capture" {
290}297}
291298
292test "switch loop with single catch-all prong" {299test "switch loop with single catch-all prong" {
300 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
301
293 const S = struct {302 const S = struct {
294 const E = enum { a, b, c };303 const E = enum { a, b, c };
295 const U = union(E) { a: u32, b: u16, c: u8 };304 const U = union(E) { a: u32, b: u16, c: u8 };
...@@ -337,7 +346,7 @@ test "switch loop with single catch-all prong" {...@@ -337,7 +346,7 @@ test "switch loop with single catch-all prong" {
337}346}
338347
339test "switch loop on type with opv" {348test "switch loop on type with opv" {
340 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;349 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
341350
342 const S = struct {351 const S = struct {
343 const E = enum { opv };352 const E = enum { opv };
...@@ -385,7 +394,7 @@ test "switch loop on type with opv" {...@@ -385,7 +394,7 @@ test "switch loop on type with opv" {
385}394}
386395
387test "switch loop with tag capture" {396test "switch loop with tag capture" {
388 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;397 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
389398
390 const U = union(enum) {399 const U = union(enum) {
391 a,400 a,
...@@ -456,6 +465,8 @@ test "switch loop with tag capture" {...@@ -456,6 +465,8 @@ test "switch loop with tag capture" {
456}465}
457466
458test "switch loop for error handling" {467test "switch loop for error handling" {
468 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
469
459 const Error = error{ MyError, MyOtherError };470 const Error = error{ MyError, MyOtherError };
460 const S = struct {471 const S = struct {
461 fn doTheTest() !void {472 fn doTheTest() !void {
...@@ -500,7 +511,8 @@ test "switch loop for error handling" {...@@ -500,7 +511,8 @@ test "switch loop for error handling" {
500}511}
501512
502test "switch loop with packed structs" {513test "switch loop with packed structs" {
503 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;514 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
515
504 const P = packed struct {516 const P = packed struct {
505 a: u7,517 a: u7,
506 b: u20,518 b: u20,
...@@ -518,7 +530,7 @@ test "switch loop with packed structs" {...@@ -518,7 +530,7 @@ test "switch loop with packed structs" {
518}530}
519531
520test "switch loop with packed unions" {532test "switch loop with packed unions" {
521 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;533 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
522534
523 const P = packed union {535 const P = packed union {
524 a: u7,536 a: u7,
...@@ -558,7 +570,7 @@ test "switch loop with packed unions with OPV" {...@@ -558,7 +570,7 @@ test "switch loop with packed unions with OPV" {
558}570}
559571
560test "switch loop on large types" {572test "switch loop on large types" {
561 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;573 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
562574
563 const S = struct {575 const S = struct {
564 fn doTheTest(a: u128, b: i500) !void {576 fn doTheTest(a: u128, b: i500) !void {
test/behavior/switch_on_captured_error.zig+2-2
...@@ -6,7 +6,7 @@ const expectEqual = std.testing.expectEqual;...@@ -6,7 +6,7 @@ const expectEqual = std.testing.expectEqual;
6const builtin = @import("builtin");6const builtin = @import("builtin");
77
8test "switch on error union catch capture" {8test "switch on error union catch capture" {
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1111
12 const S = struct {12 const S = struct {
...@@ -370,7 +370,7 @@ test "switch on error union catch capture" {...@@ -370,7 +370,7 @@ test "switch on error union catch capture" {
370}370}
371371
372test "switch on error union if else capture" {372test "switch on error union if else capture" {
373 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;373 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
374 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;374 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
375375
376 const S = struct {376 const S = struct {
test/behavior/switch_prong_err_enum.zig+1-1
...@@ -24,7 +24,7 @@ test "switch prong returns error enum" {...@@ -24,7 +24,7 @@ test "switch prong returns error enum" {
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;26 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;27 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2828
29 switch (doThing(17) catch unreachable) {29 switch (doThing(17) catch unreachable) {
30 FormValue.Address => |payload| {30 FormValue.Address => |payload| {
test/behavior/switch_prong_implicit_cast.zig+1
...@@ -15,6 +15,7 @@ fn foo(id: u64) !FormValue {...@@ -15,6 +15,7 @@ fn foo(id: u64) !FormValue {
15}15}
1616
17test "switch prong implicit cast" {17test "switch prong implicit cast" {
18 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/this.zig+2-1
...@@ -26,6 +26,7 @@ test "this refer to module call private fn" {...@@ -26,6 +26,7 @@ test "this refer to module call private fn" {
26}26}
2727
28test "this refer to container" {28test "this refer to container" {
29 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3031
31 var pt: Point(i32) = undefined;32 var pt: Point(i32) = undefined;
...@@ -48,7 +49,7 @@ fn prev(p: ?State) void {...@@ -48,7 +49,7 @@ fn prev(p: ?State) void {
48test "this used as optional function parameter" {49test "this used as optional function parameter" {
49 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;52 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5253
53 var global: State = undefined;54 var global: State = undefined;
54 global.enter = prev;55 global.enter = prev;
test/behavior/threadlocal.zig+2-2
...@@ -19,7 +19,7 @@ test "pointer to thread local array" {...@@ -19,7 +19,7 @@ test "pointer to thread local array" {
19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;22 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2323
24 const s = "Hello world";24 const s = "Hello world";
25 @memcpy(buffer[0..s.len], s);25 @memcpy(buffer[0..s.len], s);
...@@ -32,7 +32,7 @@ test "reference a global threadlocal variable" {...@@ -32,7 +32,7 @@ test "reference a global threadlocal variable" {
32 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;35 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3636
37 try nrfx_uart_rx(&g_uart0);37 try nrfx_uart_rx(&g_uart0);
38}38}
test/behavior/truncate.zig+4-2
...@@ -32,6 +32,8 @@ test "truncate.u0.var" {...@@ -32,6 +32,8 @@ test "truncate.u0.var" {
32}32}
3333
34test "truncate on comptime integer" {34test "truncate on comptime integer" {
35 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
36
35 const x: u16 = @truncate(9999);37 const x: u16 = @truncate(9999);
36 try expect(x == 9999);38 try expect(x == 9999);
37 const y: u16 = @truncate(-21555);39 const y: u16 = @truncate(-21555);
...@@ -49,7 +51,7 @@ fn testTruncate(comptime S: type, a: S, comptime D: type, expected: D) !void {...@@ -49,7 +51,7 @@ fn testTruncate(comptime S: type, a: S, comptime D: type, expected: D) !void {
4951
50test "@truncate > 128 bits" {52test "@truncate > 128 bits" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;54 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
5355
54 try testTruncate(u140, 0, u128, 0);56 try testTruncate(u140, 0, u128, 0);
55 try testTruncate(u140, maxInt(u140), u128, maxInt(u128));57 try testTruncate(u140, maxInt(u140), u128, maxInt(u128));
...@@ -90,7 +92,7 @@ test "truncate on vectors" {...@@ -90,7 +92,7 @@ test "truncate on vectors" {
90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
91 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;94 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
93 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;95 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9496
95 const S = struct {97 const S = struct {
96 fn doTheTest() !void {98 fn doTheTest() !void {
test/behavior/try.zig+9-3
...@@ -4,6 +4,7 @@ const assert = std.debug.assert;...@@ -4,6 +4,7 @@ const assert = std.debug.assert;
4const expect = std.testing.expect;4const expect = std.testing.expect;
55
6test "try on error union" {6test "try on error union" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 try tryOnErrorUnionImpl();10 try tryOnErrorUnionImpl();
...@@ -49,7 +50,7 @@ test "try then not executed with assignment" {...@@ -49,7 +50,7 @@ test "try then not executed with assignment" {
4950
50test "`try`ing an if/else expression" {51test "`try`ing an if/else expression" {
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;53 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5455
55 const S = struct {56 const S = struct {
...@@ -68,6 +69,7 @@ test "`try`ing an if/else expression" {...@@ -68,6 +69,7 @@ test "`try`ing an if/else expression" {
68}69}
6970
70test "'return try' of empty error set in function returning non-error" {71test "'return try' of empty error set in function returning non-error" {
72 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7375
...@@ -102,6 +104,8 @@ test "'return try' of empty error set in function returning non-error" {...@@ -102,6 +104,8 @@ test "'return try' of empty error set in function returning non-error" {
102}104}
103105
104test "'return try' through conditional" {106test "'return try' through conditional" {
107 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
108
105 const S = struct {109 const S = struct {
106 fn get(t: bool) !u32 {110 fn get(t: bool) !u32 {
107 return try if (t) inner() else error.TestFailed;111 return try if (t) inner() else error.TestFailed;
...@@ -124,7 +128,7 @@ test "'return try' through conditional" {...@@ -124,7 +128,7 @@ test "'return try' through conditional" {
124128
125test "try ptr propagation const" {129test "try ptr propagation const" {
126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;131 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;133 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
130134
...@@ -156,7 +160,7 @@ test "try ptr propagation const" {...@@ -156,7 +160,7 @@ test "try ptr propagation const" {
156160
157test "try ptr propagation mutate" {161test "try ptr propagation mutate" {
158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;163 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;165 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
162166
...@@ -200,6 +204,8 @@ test "try ptr propagation mutate" {...@@ -200,6 +204,8 @@ test "try ptr propagation mutate" {
200}204}
201205
202test "try pointer expression alignment" {206test "try pointer expression alignment" {
207 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
208
203 const S = struct {209 const S = struct {
204 fn doTheTest(p: *align(1) (anyerror!u32)) !void {210 fn doTheTest(p: *align(1) (anyerror!u32)) !void {
205 comptime assert(@TypeOf(&(try p.*)) == *align(1) u32);211 comptime assert(@TypeOf(&(try p.*)) == *align(1) u32);
test/behavior/tuple.zig+21-11
...@@ -7,6 +7,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;...@@ -7,6 +7,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
7const expectEqual = std.testing.expectEqual;7const expectEqual = std.testing.expectEqual;
88
9test "tuple concatenation" {9test "tuple concatenation" {
10 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
...@@ -29,7 +30,7 @@ test "tuple concatenation" {...@@ -29,7 +30,7 @@ test "tuple concatenation" {
29test "more tuple concatenation" {30test "more tuple concatenation" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;33 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3334
34 const T = struct {35 const T = struct {
35 fn consume_tuple(tuple: anytype, len: usize) !void {36 fn consume_tuple(tuple: anytype, len: usize) !void {
...@@ -104,7 +105,9 @@ test "tuple initializer for var" {...@@ -104,7 +105,9 @@ test "tuple initializer for var" {
104}105}
105106
106test "array-like initializer for tuple types" {107test "array-like initializer for tuple types" {
108 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
110
108 const T = @Tuple(&.{ i32, u8 });111 const T = @Tuple(&.{ i32, u8 });
109 const S = struct {112 const S = struct {
110 fn doTheTest() !void {113 fn doTheTest() !void {
...@@ -169,7 +172,8 @@ test "fieldParentPtr of tuple" {...@@ -169,7 +172,8 @@ test "fieldParentPtr of tuple" {
169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;174 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;175 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
176
173 var x: u32 = 0;177 var x: u32 = 0;
174 _ = &x;178 _ = &x;
175 const tuple = .{ x, x };179 const tuple = .{ x, x };
...@@ -180,7 +184,7 @@ test "fieldParentPtr of anon struct" {...@@ -180,7 +184,7 @@ test "fieldParentPtr of anon struct" {
180 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
181 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
182 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
183 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;187 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
184188
185 var x: u32 = 0;189 var x: u32 = 0;
186 _ = &x;190 _ = &x;
...@@ -238,6 +242,7 @@ test "tuple in tuple passed to generic function" {...@@ -238,6 +242,7 @@ test "tuple in tuple passed to generic function" {
238}242}
239243
240test "coerce tuple to tuple" {244test "coerce tuple to tuple" {
245 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243248
...@@ -285,6 +290,7 @@ test "tuple type with void field and a runtime field" {...@@ -285,6 +290,7 @@ test "tuple type with void field and a runtime field" {
285}290}
286291
287test "branching inside tuple literal" {292test "branching inside tuple literal" {
293 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
288 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO295 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290296
...@@ -303,7 +309,7 @@ test "tuple initialized with a runtime known value" {...@@ -303,7 +309,7 @@ test "tuple initialized with a runtime known value" {
303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO310 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;311 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;312 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
307313
308 const E = union(enum) { e: []const u8 };314 const E = union(enum) { e: []const u8 };
309 const W = union(enum) { w: E };315 const W = union(enum) { w: E };
...@@ -317,7 +323,7 @@ test "tuple of struct concatenation and coercion to array" {...@@ -317,7 +323,7 @@ test "tuple of struct concatenation and coercion to array" {
317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;325 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
320 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;326 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
321327
322 const StructWithDefault = struct { value: f32 = 42 };328 const StructWithDefault = struct { value: f32 = 42 };
323 const SomeStruct = struct { array: [4]StructWithDefault };329 const SomeStruct = struct { array: [4]StructWithDefault };
...@@ -331,7 +337,7 @@ test "tuple of struct concatenation and coercion to array" {...@@ -331,7 +337,7 @@ test "tuple of struct concatenation and coercion to array" {
331test "nested runtime conditionals in tuple initializer" {337test "nested runtime conditionals in tuple initializer" {
332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO339 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
334 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;340 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
335341
336 var data: u8 = 0;342 var data: u8 = 0;
337 _ = &data;343 _ = &data;
...@@ -364,6 +370,7 @@ test "sentinel slice in tuple" {...@@ -364,6 +370,7 @@ test "sentinel slice in tuple" {
364}370}
365371
366test "tuple pointer is indexable" {372test "tuple pointer is indexable" {
373 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO375 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369376
...@@ -386,6 +393,7 @@ test "tuple pointer is indexable" {...@@ -386,6 +393,7 @@ test "tuple pointer is indexable" {
386}393}
387394
388test "coerce anon tuple to tuple" {395test "coerce anon tuple to tuple" {
396 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391399
...@@ -423,7 +431,7 @@ test "tuple with runtime value coerced into a slice with a sentinel" {...@@ -423,7 +431,7 @@ test "tuple with runtime value coerced into a slice with a sentinel" {
423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO431 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;433 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
426 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;434 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
427435
428 const S = struct {436 const S = struct {
429 fn f(a: [:null]const ?u8) !void {437 fn f(a: [:null]const ?u8) !void {
...@@ -442,6 +450,8 @@ test "tuple with runtime value coerced into a slice with a sentinel" {...@@ -442,6 +450,8 @@ test "tuple with runtime value coerced into a slice with a sentinel" {
442}450}
443451
444test "tuple implicitly coerced to optional/error union struct/union" {452test "tuple implicitly coerced to optional/error union struct/union" {
453 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
454
445 const SomeUnion = union(enum) {455 const SomeUnion = union(enum) {
446 variant: u8,456 variant: u8,
447 };457 };
...@@ -495,7 +505,7 @@ test "comptime fields in tuple can be initialized" {...@@ -495,7 +505,7 @@ test "comptime fields in tuple can be initialized" {
495test "empty struct in tuple" {505test "empty struct in tuple" {
496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
497 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;507 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
498 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;508 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
499509
500 const T = struct { struct {} };510 const T = struct { struct {} };
501 const info = @typeInfo(T);511 const info = @typeInfo(T);
...@@ -507,7 +517,7 @@ test "empty struct in tuple" {...@@ -507,7 +517,7 @@ test "empty struct in tuple" {
507test "empty union in tuple" {517test "empty union in tuple" {
508 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO518 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;519 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
510 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;520 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
511521
512 const T = struct { union {} };522 const T = struct { union {} };
513 const info = @typeInfo(T);523 const info = @typeInfo(T);
...@@ -517,7 +527,7 @@ test "empty union in tuple" {...@@ -517,7 +527,7 @@ test "empty union in tuple" {
517}527}
518528
519test "field pointer of underaligned tuple" {529test "field pointer of underaligned tuple" {
520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;530 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
521531
522 const S = struct {532 const S = struct {
523 fn doTheTest() !void {533 fn doTheTest() !void {
...@@ -546,7 +556,7 @@ test "OPV tuple fields aren't comptime" {...@@ -546,7 +556,7 @@ test "OPV tuple fields aren't comptime" {
546}556}
547557
548test "array of tuples that end with a zero-bit field followed by padding" {558test "array of tuples that end with a zero-bit field followed by padding" {
549 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;559 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
550560
551 const S = struct {561 const S = struct {
552 var foo: [2]struct { u32, u8, void } = .{ .{ 1, 2, {} }, .{ 3, 4, {} } };562 var foo: [2]struct { u32, u8, void } = .{ .{ 1, 2, {} }, .{ 3, 4, {} } };
test/behavior/tuple_declarations.zig+2-2
...@@ -6,7 +6,7 @@ const expectEqualStrings = testing.expectEqualStrings;...@@ -6,7 +6,7 @@ const expectEqualStrings = testing.expectEqualStrings;
66
7test "tuple declaration type info" {7test "tuple declaration type info" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1010
11 {11 {
12 const T = struct { comptime u32 = 1, []const u8 };12 const T = struct { comptime u32 = 1, []const u8 };
...@@ -34,7 +34,7 @@ test "tuple declaration type info" {...@@ -34,7 +34,7 @@ test "tuple declaration type info" {
3434
35test "tuple declaration usage" {35test "tuple declaration usage" {
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;37 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3838
39 const T = struct { u32, []const u8 };39 const T = struct { u32, []const u8 };
40 var t: T = .{ 1, "foo" };40 var t: T = .{ 1, "foo" };
test/behavior/type.zig+17-5
...@@ -5,6 +5,8 @@ const testing = std.testing;...@@ -5,6 +5,8 @@ const testing = std.testing;
5const assert = std.debug.assert;5const assert = std.debug.assert;
66
7test "Type.Int" {7test "Type.Int" {
8 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
9
8 try testing.expect(u1 == @Int(.unsigned, 1));10 try testing.expect(u1 == @Int(.unsigned, 1));
9 try testing.expect(i1 == @Int(.signed, 1));11 try testing.expect(i1 == @Int(.signed, 1));
10 try testing.expect(u8 == @Int(.unsigned, 8));12 try testing.expect(u8 == @Int(.unsigned, 8));
...@@ -14,6 +16,8 @@ test "Type.Int" {...@@ -14,6 +16,8 @@ test "Type.Int" {
14}16}
1517
16test "Type.Pointer" {18test "Type.Pointer" {
19 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
20
17 inline for (&[_]type{21 inline for (&[_]type{
18 // One Value Pointer Types22 // One Value Pointer Types
19 *u8, *const u8,23 *u8, *const u8,
...@@ -72,6 +76,8 @@ test "@Pointer create slice with null sentinel" {...@@ -72,6 +76,8 @@ test "@Pointer create slice with null sentinel" {
72}76}
7377
74test "@Pointer on @typeInfo round-trips sentinels" {78test "@Pointer on @typeInfo round-trips sentinels" {
79 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
80
75 inline for (&[_]type{81 inline for (&[_]type{
76 [*:0]u8, [*:0]const u8,82 [*:0]u8, [*:0]const u8,
77 [*:0]volatile u8, [*:0]const volatile u8,83 [*:0]volatile u8, [*:0]const volatile u8,
...@@ -105,7 +111,7 @@ test "Type.Opaque" {...@@ -105,7 +111,7 @@ test "Type.Opaque" {
105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO112 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;114 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
109115
110 const Opaque = opaque {};116 const Opaque = opaque {};
111 try testing.expect(Opaque != opaque {});117 try testing.expect(Opaque != opaque {});
...@@ -124,7 +130,7 @@ test "Type.Struct" {...@@ -124,7 +130,7 @@ test "Type.Struct" {
124 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
125 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;133 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
128134
129 const A = @Struct(.auto, null, &.{ "x", "y" }, &.{ u8, u32 }, &@splat(.{}));135 const A = @Struct(.auto, null, &.{ "x", "y" }, &.{ u8, u32 }, &@splat(.{}));
130 const infoA = @typeInfo(A).@"struct";136 const infoA = @typeInfo(A).@"struct";
...@@ -193,7 +199,7 @@ test "Type.Struct" {...@@ -193,7 +199,7 @@ test "Type.Struct" {
193199
194test "Type.Enum" {200test "Type.Enum" {
195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;202 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
197203
198 const Foo = @Enum(u8, .exhaustive, &.{ "a", "b" }, &.{ 1, 5 });204 const Foo = @Enum(u8, .exhaustive, &.{ "a", "b" }, &.{ 1, 5 });
199 try testing.expectEqual(std.builtin.Type.Enum.Mode.exhaustive, @typeInfo(Foo).@"enum".mode);205 try testing.expectEqual(std.builtin.Type.Enum.Mode.exhaustive, @typeInfo(Foo).@"enum".mode);
...@@ -229,7 +235,7 @@ test "Type.Enum" {...@@ -229,7 +235,7 @@ test "Type.Enum" {
229235
230test "Type.Union" {236test "Type.Union" {
231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;238 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
233239
234 const Untagged = @Union(.@"extern", null, &.{ "int", "float" }, &.{ i32, f32 }, &.{ .{}, .{} });240 const Untagged = @Union(.@"extern", null, &.{ "int", "float" }, &.{ i32, f32 }, &.{ .{}, .{} });
235 var untagged = Untagged{ .int = 1 };241 var untagged = Untagged{ .int = 1 };
...@@ -264,6 +270,8 @@ test "Type.Union from regular enum" {...@@ -264,6 +270,8 @@ test "Type.Union from regular enum" {
264}270}
265271
266test "Type.Union from empty regular enum" {272test "Type.Union from empty regular enum" {
273 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
274
267 const E = enum {};275 const E = enum {};
268 const U = @Union(.auto, E, &.{}, &.{}, &.{});276 const U = @Union(.auto, E, &.{}, &.{}, &.{});
269277
...@@ -274,6 +282,8 @@ test "Type.Union from empty regular enum" {...@@ -274,6 +282,8 @@ test "Type.Union from empty regular enum" {
274}282}
275283
276test "Type.Union from empty Type.Enum" {284test "Type.Union from empty Type.Enum" {
285 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
286
277 const E = @Enum(noreturn, .exhaustive, &.{}, &.{});287 const E = @Enum(noreturn, .exhaustive, &.{}, &.{});
278 const U = @Union(.auto, E, &.{}, &.{}, &.{});288 const U = @Union(.auto, E, &.{}, &.{}, &.{});
279289
...@@ -285,7 +295,7 @@ test "Type.Union from empty Type.Enum" {...@@ -285,7 +295,7 @@ test "Type.Union from empty Type.Enum" {
285295
286test "Type.Fn" {296test "Type.Fn" {
287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO297 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
288 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;298 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
289299
290 const some_opaque = opaque {};300 const some_opaque = opaque {};
291 const some_ptr = *some_opaque;301 const some_ptr = *some_opaque;
...@@ -406,6 +416,8 @@ test "matching captures causes opaque equivalence" {...@@ -406,6 +416,8 @@ test "matching captures causes opaque equivalence" {
406}416}
407417
408test "reify enum where fields refers to part of array" {418test "reify enum where fields refers to part of array" {
419 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
420
409 const field_names: [3][]const u8 = .{ "foo", "bar", undefined };421 const field_names: [3][]const u8 = .{ "foo", "bar", undefined };
410 const field_values: [3]u8 = .{ undefined, 0, 1 };422 const field_values: [3]u8 = .{ undefined, 0, 1 };
411 const E = @Enum(u8, .exhaustive, field_names[0..2], field_values[1..3]);423 const E = @Enum(u8, .exhaustive, field_names[0..2], field_values[1..3]);
test/behavior/type_info.zig+35-10
...@@ -10,6 +10,8 @@ const expect = std.testing.expect;...@@ -10,6 +10,8 @@ const expect = std.testing.expect;
10const expectEqualStrings = std.testing.expectEqualStrings;10const expectEqualStrings = std.testing.expectEqualStrings;
1111
12test "type info: integer, floating point type info" {12test "type info: integer, floating point type info" {
13 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
14
13 try testIntFloat();15 try testIntFloat();
14 try comptime testIntFloat();16 try comptime testIntFloat();
15}17}
...@@ -37,6 +39,8 @@ fn testOptional() !void {...@@ -37,6 +39,8 @@ fn testOptional() !void {
37}39}
3840
39test "type info: C pointer type info" {41test "type info: C pointer type info" {
42 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
43
40 try testCPtr();44 try testCPtr();
41 try comptime testCPtr();45 try comptime testCPtr();
42}46}
...@@ -60,6 +64,8 @@ test "type info: value is correctly copied" {...@@ -60,6 +64,8 @@ test "type info: value is correctly copied" {
60}64}
6165
62test "type info: tag type, void info" {66test "type info: tag type, void info" {
67 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
68
63 try testBasic();69 try testBasic();
64 try comptime testBasic();70 try comptime testBasic();
65}71}
...@@ -72,6 +78,8 @@ fn testBasic() !void {...@@ -72,6 +78,8 @@ fn testBasic() !void {
72}78}
7379
74test "type info: pointer type info" {80test "type info: pointer type info" {
81 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
82
75 try testPointer();83 try testPointer();
76 try comptime testPointer();84 try comptime testPointer();
77}85}
...@@ -88,6 +96,8 @@ fn testPointer() !void {...@@ -88,6 +96,8 @@ fn testPointer() !void {
88}96}
8997
90test "type info: unknown length pointer type info" {98test "type info: unknown length pointer type info" {
99 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
100
91 try testUnknownLenPtr();101 try testUnknownLenPtr();
92 try comptime testUnknownLenPtr();102 try comptime testUnknownLenPtr();
93}103}
...@@ -104,6 +114,8 @@ fn testUnknownLenPtr() !void {...@@ -104,6 +114,8 @@ fn testUnknownLenPtr() !void {
104}114}
105115
106test "type info: null terminated pointer type info" {116test "type info: null terminated pointer type info" {
117 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
118
107 try testNullTerminatedPtr();119 try testNullTerminatedPtr();
108 try comptime testNullTerminatedPtr();120 try comptime testNullTerminatedPtr();
109}121}
...@@ -120,6 +132,8 @@ fn testNullTerminatedPtr() !void {...@@ -120,6 +132,8 @@ fn testNullTerminatedPtr() !void {
120}132}
121133
122test "type info: slice type info" {134test "type info: slice type info" {
135 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
136
123 try testSlice();137 try testSlice();
124 try comptime testSlice();138 try comptime testSlice();
125}139}
...@@ -135,6 +149,8 @@ fn testSlice() !void {...@@ -135,6 +149,8 @@ fn testSlice() !void {
135}149}
136150
137test "type info: array type info" {151test "type info: array type info" {
152 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
153
138 try testArray();154 try testArray();
139 try comptime testArray();155 try comptime testArray();
140}156}
...@@ -160,7 +176,7 @@ fn testArray() !void {...@@ -160,7 +176,7 @@ fn testArray() !void {
160test "type info: error set, error union info, anyerror" {176test "type info: error set, error union info, anyerror" {
161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO177 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;179 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
164180
165 try testErrorSet();181 try testErrorSet();
166 try comptime testErrorSet();182 try comptime testErrorSet();
...@@ -191,7 +207,7 @@ fn testErrorSet() !void {...@@ -191,7 +207,7 @@ fn testErrorSet() !void {
191test "type info: error set single value" {207test "type info: error set single value" {
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;210 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
195211
196 const TestSet = error.One;212 const TestSet = error.One;
197213
...@@ -204,7 +220,7 @@ test "type info: error set single value" {...@@ -204,7 +220,7 @@ test "type info: error set single value" {
204test "type info: error set merged" {220test "type info: error set merged" {
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO221 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;223 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
208224
209 const TestSet = error{ One, Two } || error{Three};225 const TestSet = error{ One, Two } || error{Three};
210226
...@@ -219,7 +235,7 @@ test "type info: error set merged" {...@@ -219,7 +235,7 @@ test "type info: error set merged" {
219test "type info: enum info" {235test "type info: enum info" {
220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;238 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
223239
224 try testEnum();240 try testEnum();
225 try comptime testEnum();241 try comptime testEnum();
...@@ -244,6 +260,8 @@ fn testEnum() !void {...@@ -244,6 +260,8 @@ fn testEnum() !void {
244}260}
245261
246test "type info: union info" {262test "type info: union info" {
263 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
264
247 try testUnion();265 try testUnion();
248 try comptime testUnion();266 try comptime testUnion();
249}267}
...@@ -287,7 +305,7 @@ fn testUnion() !void {...@@ -287,7 +305,7 @@ fn testUnion() !void {
287305
288test "type info: struct info" {306test "type info: struct info" {
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO307 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;308 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
291309
292 try testStruct();310 try testStruct();
293 try comptime testStruct();311 try comptime testStruct();
...@@ -310,6 +328,8 @@ const TestStruct = struct {...@@ -310,6 +328,8 @@ const TestStruct = struct {
310};328};
311329
312test "type info: packed struct info" {330test "type info: packed struct info" {
331 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
332
313 try testPackedStruct();333 try testPackedStruct();
314 try comptime testPackedStruct();334 try comptime testPackedStruct();
315}335}
...@@ -361,7 +381,7 @@ fn testOpaque() !void {...@@ -361,7 +381,7 @@ fn testOpaque() !void {
361}381}
362382
363test "type info: function type info" {383test "type info: function type info" {
364 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;384 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
365 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
366386
367 try testFunction();387 try testFunction();
...@@ -429,6 +449,8 @@ extern fn typeInfoFoo(a: usize, b: bool, ...) callconv(.c) usize;...@@ -429,6 +449,8 @@ extern fn typeInfoFoo(a: usize, b: bool, ...) callconv(.c) usize;
429extern fn typeInfoFooAligned(a: usize, b: bool, ...) align(4) callconv(.c) usize;449extern fn typeInfoFooAligned(a: usize, b: bool, ...) align(4) callconv(.c) usize;
430450
431test "type info: generic function types" {451test "type info: generic function types" {
452 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
453
432 const G1 = @typeInfo(@TypeOf(generic1));454 const G1 = @typeInfo(@TypeOf(generic1));
433 try expect(G1.@"fn".param_types.len == 1);455 try expect(G1.@"fn".param_types.len == 1);
434 try expect(G1.@"fn".param_types.len == G1.@"fn".param_attrs.len);456 try expect(G1.@"fn".param_types.len == G1.@"fn".param_attrs.len);
...@@ -477,6 +499,8 @@ test "typeInfo with comptime parameter in struct fn def" {...@@ -477,6 +499,8 @@ test "typeInfo with comptime parameter in struct fn def" {
477}499}
478500
479test "type info: vectors" {501test "type info: vectors" {
502 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
503
480 try testVector();504 try testVector();
481 try comptime testVector();505 try comptime testVector();
482}506}
...@@ -549,7 +573,7 @@ fn add(a: i32, b: i32) i32 {...@@ -549,7 +573,7 @@ fn add(a: i32, b: i32) i32 {
549573
550test "Declarations are returned in declaration order" {574test "Declarations are returned in declaration order" {
551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
552 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;576 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
553577
554 const S = struct {578 const S = struct {
555 pub const a = 1;579 pub const a = 1;
...@@ -571,8 +595,7 @@ test "Struct.is_tuple for anon list literal" {...@@ -571,8 +595,7 @@ test "Struct.is_tuple for anon list literal" {
571}595}
572596
573test "Struct.is_tuple for anon struct literal" {597test "Struct.is_tuple for anon struct literal" {
574 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;598 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
575
576 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO599 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
577600
578 const info = @typeInfo(@TypeOf(.{ .a = 0 }));601 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
...@@ -594,6 +617,7 @@ test "value from struct @typeInfo default_value_ptr can be loaded at comptime" {...@@ -594,6 +617,7 @@ test "value from struct @typeInfo default_value_ptr can be loaded at comptime" {
594}617}
595618
596test "type info of tuple of string literal default value" {619test "type info of tuple of string literal default value" {
620 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
597 const struct_info = @typeInfo(@TypeOf(.{"hi"})).@"struct";621 const struct_info = @typeInfo(@TypeOf(.{"hi"})).@"struct";
598 const struct_field_attrs = struct_info.field_attrs[0];622 const struct_field_attrs = struct_info.field_attrs[0];
599 const struct_field_type = struct_info.field_types[0];623 const struct_field_type = struct_info.field_types[0];
...@@ -611,7 +635,8 @@ test "@typeInfo function with generic return type and inferred error set" {...@@ -611,7 +635,8 @@ test "@typeInfo function with generic return type and inferred error set" {
611}635}
612636
613test "type info: spirv info" {637test "type info: spirv info" {
614 if (builtin.zig_backend != .stage2_spirv) return error.SkipZigTest;638 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
639 if (!builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
615640
616 try testSpirv();641 try testSpirv();
617 try comptime testSpirv();642 try comptime testSpirv();
test/behavior/typename.zig+8-8
...@@ -14,7 +14,7 @@ const expectStringStartsWith = std.testing.expectStringStartsWith;...@@ -14,7 +14,7 @@ const expectStringStartsWith = std.testing.expectStringStartsWith;
14test "anon fn param" {14test "anon fn param" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;17 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1818
19 // https://github.com/ziglang/zig/issues/933919 // https://github.com/ziglang/zig/issues/9339
20 try expectEqualStringsIgnoreDigits(20 try expectEqualStringsIgnoreDigits(
...@@ -39,7 +39,7 @@ test "anon fn param" {...@@ -39,7 +39,7 @@ test "anon fn param" {
39test "anon field init" {39test "anon field init" {
40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;42 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4343
44 const Foo = .{44 const Foo = .{
45 .T1 = struct {},45 .T1 = struct {},
...@@ -64,7 +64,7 @@ test "anon field init" {...@@ -64,7 +64,7 @@ test "anon field init" {
64test "basic" {64test "basic" {
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;67 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6868
69 try expectEqualStrings("i64", @typeName(i64));69 try expectEqualStrings("i64", @typeName(i64));
70 try expectEqualStrings("*usize", @typeName(*usize));70 try expectEqualStrings("*usize", @typeName(*usize));
...@@ -85,7 +85,7 @@ test "basic" {...@@ -85,7 +85,7 @@ test "basic" {
85test "top level decl" {85test "top level decl" {
86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;88 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8989
90 try expectEqualStrings(90 try expectEqualStrings(
91 "behavior.typename.A_Struct",91 "behavior.typename.A_Struct",
...@@ -134,7 +134,7 @@ const B = struct {...@@ -134,7 +134,7 @@ const B = struct {
134test "fn param" {134test "fn param" {
135 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO135 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;137 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
138138
139 // https://github.com/ziglang/zig/issues/675139 // https://github.com/ziglang/zig/issues/675
140 try expectEqualStrings(140 try expectEqualStrings(
...@@ -213,7 +213,7 @@ pub fn expectEqualStringsIgnoreDigits(expected: []const u8, actual: []const u8)...@@ -213,7 +213,7 @@ pub fn expectEqualStringsIgnoreDigits(expected: []const u8, actual: []const u8)
213test "local variable" {213test "local variable" {
214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;216 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
217217
218 const Foo = struct { a: u32 };218 const Foo = struct { a: u32 };
219 const Bar = union { a: u32 };219 const Bar = union { a: u32 };
...@@ -231,7 +231,7 @@ test "local variable" {...@@ -231,7 +231,7 @@ test "local variable" {
231test "comptime parameters not converted to anytype in function type" {231test "comptime parameters not converted to anytype in function type" {
232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;234 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
235235
236 const T = fn (comptime fn (comptime type) void, void) void;236 const T = fn (comptime fn (comptime type) void, void) void;
237 try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));237 try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));
...@@ -240,7 +240,7 @@ test "comptime parameters not converted to anytype in function type" {...@@ -240,7 +240,7 @@ test "comptime parameters not converted to anytype in function type" {
240test "anon name strategy used in sub expression" {240test "anon name strategy used in sub expression" {
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;243 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
244244
245 const S = struct {245 const S = struct {
246 fn getTheName() []const u8 {246 fn getTheName() []const u8 {
test/behavior/undefined.zig+6-3
...@@ -14,6 +14,7 @@ fn initStaticArray() [10]i32 {...@@ -14,6 +14,7 @@ fn initStaticArray() [10]i32 {
14}14}
15const static_array = initStaticArray();15const static_array = initStaticArray();
16test "init static array to undefined" {16test "init static array to undefined" {
17 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
17 // This test causes `initStaticArray()` to be codegen'd, and the18 // This test causes `initStaticArray()` to be codegen'd, and the
18 // C backend does not yet support returning arrays, so it fails19 // C backend does not yet support returning arrays, so it fails
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
...@@ -45,6 +46,7 @@ fn setFooX(foo: *Foo) void {...@@ -45,6 +46,7 @@ fn setFooX(foo: *Foo) void {
45}46}
4647
47test "assign undefined to struct" {48test "assign undefined to struct" {
49 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5052
...@@ -61,6 +63,7 @@ test "assign undefined to struct" {...@@ -61,6 +63,7 @@ test "assign undefined to struct" {
61}63}
6264
63test "assign undefined to struct with method" {65test "assign undefined to struct with method" {
66 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6669
...@@ -77,7 +80,7 @@ test "assign undefined to struct with method" {...@@ -77,7 +80,7 @@ test "assign undefined to struct with method" {
77}80}
7881
79test "type name of undefined" {82test "type name of undefined" {
80 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;83 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8285
83 const x = undefined;86 const x = undefined;
...@@ -88,7 +91,7 @@ var buf: []u8 = undefined;...@@ -88,7 +91,7 @@ var buf: []u8 = undefined;
8891
89test "reslice of undefined global var slice" {92test "reslice of undefined global var slice" {
90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
91 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;94 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
9295
93 var stack_buf: [100]u8 = @splat(0);96 var stack_buf: [100]u8 = @splat(0);
94 buf = &stack_buf;97 buf = &stack_buf;
...@@ -98,7 +101,7 @@ test "reslice of undefined global var slice" {...@@ -98,7 +101,7 @@ test "reslice of undefined global var slice" {
98101
99test "returned undef is 0xaa bytes when runtime safety is enabled" {102test "returned undef is 0xaa bytes when runtime safety is enabled" {
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;104 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
103106
104 const Rect = struct {107 const Rect = struct {
test/behavior/underscore.zig+1
...@@ -7,6 +7,7 @@ test "ignore lval with underscore" {...@@ -7,6 +7,7 @@ test "ignore lval with underscore" {
7}7}
88
9test "ignore lval with underscore (while loop)" {9test "ignore lval with underscore (while loop)" {
10 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 while (optionalReturnError()) |_| {13 while (optionalReturnError()) |_| {
test/behavior/union.zig+85-39
...@@ -15,7 +15,7 @@ test "basic unions with floats" {...@@ -15,7 +15,7 @@ test "basic unions with floats" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;18 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1919
20 var foo = FooWithFloats{ .int = 1 };20 var foo = FooWithFloats{ .int = 1 };
21 try expect(foo.int == 1);21 try expect(foo.int == 1);
...@@ -28,6 +28,7 @@ fn setFloat(foo: *FooWithFloats, x: f64) void {...@@ -28,6 +28,7 @@ fn setFloat(foo: *FooWithFloats, x: f64) void {
28}28}
2929
30test "init union with runtime value - floats" {30test "init union with runtime value - floats" {
31 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -41,7 +42,7 @@ test "init union with runtime value - floats" {...@@ -41,7 +42,7 @@ test "init union with runtime value - floats" {
41test "basic unions" {42test "basic unions" {
42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;45 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
4546
46 var foo = Foo{ .int = 1 };47 var foo = Foo{ .int = 1 };
47 try expect(foo.int == 1);48 try expect(foo.int == 1);
...@@ -60,7 +61,7 @@ test "init union with runtime value" {...@@ -60,7 +61,7 @@ test "init union with runtime value" {
60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
62 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
63 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;64 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6465
65 var foo: Foo = undefined;66 var foo: Foo = undefined;
6667
...@@ -98,7 +99,7 @@ const FooExtern = extern union {...@@ -98,7 +99,7 @@ const FooExtern = extern union {
9899
99test "basic extern unions" {100test "basic extern unions" {
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;102 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
102103
103 var foo = FooExtern{ .int = 1 };104 var foo = FooExtern{ .int = 1 };
104 try expect(foo.int == 1);105 try expect(foo.int == 1);
...@@ -160,6 +161,7 @@ test "unions embedded in aggregate types" {...@@ -160,6 +161,7 @@ test "unions embedded in aggregate types" {
160}161}
161162
162test "constant tagged union with payload" {163test "constant tagged union with payload" {
164 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
165167
...@@ -212,7 +214,7 @@ test "union with specified enum tag" {...@@ -212,7 +214,7 @@ test "union with specified enum tag" {
212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;217 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
216218
217 try doTest();219 try doTest();
218 try comptime doTest();220 try comptime doTest();
...@@ -245,7 +247,7 @@ fn testComparison() !void {...@@ -245,7 +247,7 @@ fn testComparison() !void {
245test "comparison between union and enum literal" {247test "comparison between union and enum literal" {
246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;248 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;250 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
249251
250 try testComparison();252 try testComparison();
251 try comptime testComparison();253 try comptime testComparison();
...@@ -258,6 +260,7 @@ const TheUnion = union(TheTag) {...@@ -258,6 +260,7 @@ const TheUnion = union(TheTag) {
258 C: i32,260 C: i32,
259};261};
260test "cast union to tag type of union" {262test "cast union to tag type of union" {
263 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
262 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
263266
...@@ -272,12 +275,14 @@ fn testCastUnionToTag() !void {...@@ -272,12 +275,14 @@ fn testCastUnionToTag() !void {
272}275}
273276
274test "union field access gives the enum values" {277test "union field access gives the enum values" {
278 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
275 try expect(TheUnion.A == TheTag.A);279 try expect(TheUnion.A == TheTag.A);
276 try expect(TheUnion.B == TheTag.B);280 try expect(TheUnion.B == TheTag.B);
277 try expect(TheUnion.C == TheTag.C);281 try expect(TheUnion.C == TheTag.C);
278}282}
279283
280test "cast tag type of union to union" {284test "cast tag type of union to union" {
285 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
281 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;286 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO287 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283288
...@@ -293,6 +298,7 @@ const Value2 = union(Letter2) {...@@ -293,6 +298,7 @@ const Value2 = union(Letter2) {
293};298};
294299
295test "implicit cast union to its tag type" {300test "implicit cast union to its tag type" {
301 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
298304
...@@ -315,7 +321,7 @@ pub const PackThis = union(enum) {...@@ -315,7 +321,7 @@ pub const PackThis = union(enum) {
315test "constant packed union" {321test "constant packed union" {
316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;324 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
319325
320 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});326 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
321}327}
...@@ -407,7 +413,7 @@ test "tagged union with no payloads" {...@@ -407,7 +413,7 @@ test "tagged union with no payloads" {
407413
408test "union with only 1 field casted to its enum type" {414test "union with only 1 field casted to its enum type" {
409 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO415 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;416 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
411417
412 const Literal = union(enum) {418 const Literal = union(enum) {
413 Number: f64,419 Number: f64,
...@@ -442,7 +448,7 @@ const Foo1 = union(enum) {...@@ -442,7 +448,7 @@ const Foo1 = union(enum) {
442var glbl: Foo1 = undefined;448var glbl: Foo1 = undefined;
443449
444test "global union with single field is correctly initialized" {450test "global union with single field is correctly initialized" {
445 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;451 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;452 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
447 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
448454
...@@ -462,7 +468,7 @@ var glbl_array: [2]FooUnion = undefined;...@@ -462,7 +468,7 @@ var glbl_array: [2]FooUnion = undefined;
462test "initialize global array of union" {468test "initialize global array of union" {
463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
465 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;471 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
466472
467 glbl_array[1] = FooUnion{ .U1 = 2 };473 glbl_array[1] = FooUnion{ .U1 = 2 };
468 glbl_array[0] = FooUnion{ .U0 = 1 };474 glbl_array[0] = FooUnion{ .U0 = 1 };
...@@ -471,6 +477,7 @@ test "initialize global array of union" {...@@ -471,6 +477,7 @@ test "initialize global array of union" {
471}477}
472478
473test "update the tag value for zero-sized unions" {479test "update the tag value for zero-sized unions" {
480 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
474 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
476483
...@@ -485,6 +492,7 @@ test "update the tag value for zero-sized unions" {...@@ -485,6 +492,7 @@ test "update the tag value for zero-sized unions" {
485}492}
486493
487test "union initializer generates padding only if needed" {494test "union initializer generates padding only if needed" {
495 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
489 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490498
...@@ -499,7 +507,7 @@ test "union initializer generates padding only if needed" {...@@ -499,7 +507,7 @@ test "union initializer generates padding only if needed" {
499507
500test "runtime tag name with single field" {508test "runtime tag name with single field" {
501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
502 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;510 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
503511
504 const U = union(enum) {512 const U = union(enum) {
505 A: i32,513 A: i32,
...@@ -511,6 +519,7 @@ test "runtime tag name with single field" {...@@ -511,6 +519,7 @@ test "runtime tag name with single field" {
511}519}
512520
513test "method call on an empty union" {521test "method call on an empty union" {
522 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO524 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
516525
...@@ -551,6 +560,7 @@ const FooNoVoid = union(enum) {...@@ -551,6 +560,7 @@ const FooNoVoid = union(enum) {
551const Baz = enum { A, B, C, D };560const Baz = enum { A, B, C, D };
552561
553test "tagged union type" {562test "tagged union type" {
563 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
554 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO564 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
555565
556 const foo1 = TaggedFoo{ .One = 13 };566 const foo1 = TaggedFoo{ .One = 13 };
...@@ -572,6 +582,7 @@ test "tagged union type" {...@@ -572,6 +582,7 @@ test "tagged union type" {
572}582}
573583
574test "tagged union as return value" {584test "tagged union as return value" {
585 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;587 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
577 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO588 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -588,6 +599,7 @@ fn returnAnInt(x: i32) TaggedFoo {...@@ -588,6 +599,7 @@ fn returnAnInt(x: i32) TaggedFoo {
588}599}
589600
590test "tagged union with all void fields but a meaningful tag" {601test "tagged union with all void fields but a meaningful tag" {
602 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
591 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;603 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
593605
...@@ -615,6 +627,7 @@ test "tagged union with all void fields but a meaningful tag" {...@@ -615,6 +627,7 @@ test "tagged union with all void fields but a meaningful tag" {
615}627}
616628
617test "union(enum(u32)) with specified and unspecified tag values" {629test "union(enum(u32)) with specified and unspecified tag values" {
630 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
619 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;632 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
620 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -652,6 +665,7 @@ fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {...@@ -652,6 +665,7 @@ fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {
652}665}
653666
654test "switch on union with only 1 field" {667test "switch on union with only 1 field" {
668 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
655 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO669 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
656 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO670 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
657671
...@@ -682,7 +696,7 @@ const PartialInstWithPayload = union(enum) {...@@ -682,7 +696,7 @@ const PartialInstWithPayload = union(enum) {
682696
683test "union with only 1 field casted to its enum type which has enum value specified" {697test "union with only 1 field casted to its enum type which has enum value specified" {
684 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO698 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
685 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;699 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
686700
687 const Literal = union(enum) {701 const Literal = union(enum) {
688 number: f64,702 number: f64,
...@@ -705,6 +719,7 @@ test "union with only 1 field casted to its enum type which has enum value speci...@@ -705,6 +719,7 @@ test "union with only 1 field casted to its enum type which has enum value speci
705}719}
706720
707test "@intFromEnum works on unions" {721test "@intFromEnum works on unions" {
722 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
708 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO723 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
709 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
710725
...@@ -724,6 +739,8 @@ test "@intFromEnum works on unions" {...@@ -724,6 +739,8 @@ test "@intFromEnum works on unions" {
724}739}
725740
726test "comptime union field value equality" {741test "comptime union field value equality" {
742 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
743
727 const a0 = Setter(Attribute{ .A = false });744 const a0 = Setter(Attribute{ .A = false });
728 const a1 = Setter(Attribute{ .A = true });745 const a1 = Setter(Attribute{ .A = true });
729 const a2 = Setter(Attribute{ .A = false });746 const a2 = Setter(Attribute{ .A = false });
...@@ -763,6 +780,7 @@ fn Setter(comptime attr: Attribute) type {...@@ -763,6 +780,7 @@ fn Setter(comptime attr: Attribute) type {
763}780}
764781
765test "return union init with void payload" {782test "return union init with void payload" {
783 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
766 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
767 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;785 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO786 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -787,6 +805,7 @@ test "return union init with void payload" {...@@ -787,6 +805,7 @@ test "return union init with void payload" {
787}805}
788806
789test "@unionInit stored to a const" {807test "@unionInit stored to a const" {
808 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
790 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
792 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;811 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -817,6 +836,7 @@ test "@unionInit stored to a const" {...@@ -817,6 +836,7 @@ test "@unionInit stored to a const" {
817}836}
818837
819test "@unionInit can modify a union type" {838test "@unionInit can modify a union type" {
839 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO840 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
821 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
822842
...@@ -839,6 +859,7 @@ test "@unionInit can modify a union type" {...@@ -839,6 +859,7 @@ test "@unionInit can modify a union type" {
839}859}
840860
841test "@unionInit can modify a pointer value" {861test "@unionInit can modify a pointer value" {
862 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
842 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
844865
...@@ -860,7 +881,7 @@ test "@unionInit can modify a pointer value" {...@@ -860,7 +881,7 @@ test "@unionInit can modify a pointer value" {
860test "union no tag with struct member" {881test "union no tag with struct member" {
861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO882 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
862 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO883 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
863 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;884 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
864885
865 const Struct = struct {};886 const Struct = struct {};
866 const Union = union {887 const Union = union {
...@@ -887,7 +908,8 @@ test "anonymous union literal syntax" {...@@ -887,7 +908,8 @@ test "anonymous union literal syntax" {
887 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO908 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
888 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO909 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
889 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;910 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
890 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;911 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
912
891 const S = struct {913 const S = struct {
892 const Number = union {914 const Number = union {
893 int: i32,915 int: i32,
...@@ -911,6 +933,7 @@ test "anonymous union literal syntax" {...@@ -911,6 +933,7 @@ test "anonymous union literal syntax" {
911}933}
912934
913test "function call result coerces from tagged union to the tag" {935test "function call result coerces from tagged union to the tag" {
936 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
914 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
915 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO938 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
916 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO939 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -946,6 +969,7 @@ test "function call result coerces from tagged union to the tag" {...@@ -946,6 +969,7 @@ test "function call result coerces from tagged union to the tag" {
946}969}
947970
948test "switching on non exhaustive union" {971test "switching on non exhaustive union" {
972 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
949 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO973 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
950 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO974 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
951975
...@@ -973,6 +997,7 @@ test "switching on non exhaustive union" {...@@ -973,6 +997,7 @@ test "switching on non exhaustive union" {
973}997}
974998
975test "containers with single-field enums" {999test "containers with single-field enums" {
1000 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
976 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1001 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
977 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1002 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9781003
...@@ -1004,7 +1029,7 @@ test "containers with single-field enums" {...@@ -1004,7 +1029,7 @@ test "containers with single-field enums" {
1004test "@unionInit on union with u8 tag but no fields" {1029test "@unionInit on union with u8 tag but no fields" {
1005 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1006 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1031 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1007 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1032 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10081033
1009 const S = struct {1034 const S = struct {
1010 const Type = enum(u8) { no_op = 105 };1035 const Type = enum(u8) { no_op = 105 };
...@@ -1049,7 +1074,7 @@ test "union enum type gets a separate scope" {...@@ -1049,7 +1074,7 @@ test "union enum type gets a separate scope" {
1049test "global variable struct contains union initialized to non-most-aligned field" {1074test "global variable struct contains union initialized to non-most-aligned field" {
1050 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1075 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1051 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1076 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1052 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1077 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
10531078
1054 const T = struct {1079 const T = struct {
1055 const U = union(enum) {1080 const U = union(enum) {
...@@ -1073,6 +1098,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel...@@ -1073,6 +1098,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
1073}1098}
10741099
1075test "union with no result loc initiated with a runtime value" {1100test "union with no result loc initiated with a runtime value" {
1101 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1076 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1077 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1078 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1104 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1090,6 +1116,7 @@ test "union with no result loc initiated with a runtime value" {...@@ -1090,6 +1116,7 @@ test "union with no result loc initiated with a runtime value" {
1090}1116}
10911117
1092test "union with a large struct field" {1118test "union with a large struct field" {
1119 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1093 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1094 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1095 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1122 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1124,6 +1151,7 @@ test "comptime equality of extern unions with same tag" {...@@ -1124,6 +1151,7 @@ test "comptime equality of extern unions with same tag" {
1124}1151}
11251152
1126test "union tag is set when initiated as a temporary value at runtime" {1153test "union tag is set when initiated as a temporary value at runtime" {
1154 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1157 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1146,7 +1174,7 @@ test "extern union most-aligned field is smaller" {...@@ -1146,7 +1174,7 @@ test "extern union most-aligned field is smaller" {
1146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1149 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1177 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11501178
1151 const U = extern union {1179 const U = extern union {
1152 in6: extern struct {1180 in6: extern struct {
...@@ -1166,7 +1194,7 @@ test "return an extern union from C calling convention" {...@@ -1166,7 +1194,7 @@ test "return an extern union from C calling convention" {
1166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1168 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1169 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1197 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
11701198
1171 const namespace = struct {1199 const namespace = struct {
1172 const S = extern struct {1200 const S = extern struct {
...@@ -1195,6 +1223,7 @@ test "return an extern union from C calling convention" {...@@ -1195,6 +1223,7 @@ test "return an extern union from C calling convention" {
1195}1223}
11961224
1197test "noreturn field in union" {1225test "noreturn field in union" {
1226 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1198 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1227 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1199 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1200 const U = union(enum) {1229 const U = union(enum) {
...@@ -1244,6 +1273,7 @@ test "noreturn field in union" {...@@ -1244,6 +1273,7 @@ test "noreturn field in union" {
1244}1273}
12451274
1246test "@unionInit uses tag value instead of field index" {1275test "@unionInit uses tag value instead of field index" {
1276 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1249 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1279 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -1274,7 +1304,7 @@ test "@unionInit uses tag value instead of field index" {...@@ -1274,7 +1304,7 @@ test "@unionInit uses tag value instead of field index" {
1274test "union field ptr - zero sized payload" {1304test "union field ptr - zero sized payload" {
1275 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1277 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1307 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12781308
1279 const U = union {1309 const U = union {
1280 foo: void,1310 foo: void,
...@@ -1288,7 +1318,7 @@ test "union field ptr - zero sized payload" {...@@ -1288,7 +1318,7 @@ test "union field ptr - zero sized payload" {
1288test "union field ptr - zero sized field" {1318test "union field ptr - zero sized field" {
1289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1290 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1291 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1321 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
12921322
1293 const U = union {1323 const U = union {
1294 foo: void,1324 foo: void,
...@@ -1303,7 +1333,7 @@ test "packed union in packed struct" {...@@ -1303,7 +1333,7 @@ test "packed union in packed struct" {
1303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1305 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1336 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13071337
1308 const S = packed struct {1338 const S = packed struct {
1309 nested: packed union {1339 nested: packed union {
...@@ -1353,7 +1383,7 @@ test "union int tag type is properly managed" {...@@ -1353,7 +1383,7 @@ test "union int tag type is properly managed" {
13531383
1354test "no dependency loop when function pointer in union returns the union" {1384test "no dependency loop when function pointer in union returns the union" {
1355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1356 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1386 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1357 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1387 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13581388
1359 const U = union(enum) {1389 const U = union(enum) {
...@@ -1373,6 +1403,7 @@ test "no dependency loop when function pointer in union returns the union" {...@@ -1373,6 +1403,7 @@ test "no dependency loop when function pointer in union returns the union" {
1373}1403}
13741404
1375test "union reassignment can use previous value" {1405test "union reassignment can use previous value" {
1406 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1407 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13781409
...@@ -1387,7 +1418,7 @@ test "union reassignment can use previous value" {...@@ -1387,7 +1418,7 @@ test "union reassignment can use previous value" {
13871418
1388test "reinterpreting enum value inside packed union" {1419test "reinterpreting enum value inside packed union" {
1389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1390 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1421 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13911422
1392 const U = packed union {1423 const U = packed union {
1393 tag: enum(u8) { a, b },1424 tag: enum(u8) { a, b },
...@@ -1404,7 +1435,7 @@ test "reinterpreting enum value inside packed union" {...@@ -1404,7 +1435,7 @@ test "reinterpreting enum value inside packed union" {
1404}1435}
14051436
1406test "access the tag of a global tagged union" {1437test "access the tag of a global tagged union" {
1407 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1438 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14081439
1409 const U = union(enum) {1440 const U = union(enum) {
1410 a,1441 a,
...@@ -1415,6 +1446,8 @@ test "access the tag of a global tagged union" {...@@ -1415,6 +1446,8 @@ test "access the tag of a global tagged union" {
1415}1446}
14161447
1417test "coerce enum literal to union in result loc" {1448test "coerce enum literal to union in result loc" {
1449 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1450
1418 const U = union(enum) {1451 const U = union(enum) {
1419 a,1452 a,
1420 b: u8,1453 b: u8,
...@@ -1431,7 +1464,7 @@ test "coerce enum literal to union in result loc" {...@@ -1431,7 +1464,7 @@ test "coerce enum literal to union in result loc" {
1431test "defined-layout union field pointer has correct alignment" {1464test "defined-layout union field pointer has correct alignment" {
1432 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1434 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1467 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14351468
1436 const S = struct {1469 const S = struct {
1437 fn doTheTest(comptime U: type) !void {1470 fn doTheTest(comptime U: type) !void {
...@@ -1465,7 +1498,7 @@ test "defined-layout union field pointer has correct alignment" {...@@ -1465,7 +1498,7 @@ test "defined-layout union field pointer has correct alignment" {
1465test "undefined-layout union field pointer has correct alignment" {1498test "undefined-layout union field pointer has correct alignment" {
1466 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1499 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1467 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1468 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1501 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14691502
1470 const S = struct {1503 const S = struct {
1471 fn doTheTest(comptime U: type) !void {1504 fn doTheTest(comptime U: type) !void {
...@@ -1500,7 +1533,7 @@ test "packed union field pointer has correct alignment" {...@@ -1500,7 +1533,7 @@ test "packed union field pointer has correct alignment" {
1500 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1501 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1534 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1502 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1535 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1503 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1536 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
15041537
1505 const U = packed union { x: u20 };1538 const U = packed union { x: u20 };
1506 const S = packed struct(u24) { a: u2, u: U, b: u2 };1539 const S = packed struct(u24) { a: u2, u: U, b: u2 };
...@@ -1531,6 +1564,7 @@ test "packed union field pointer has correct alignment" {...@@ -1531,6 +1564,7 @@ test "packed union field pointer has correct alignment" {
1531}1564}
15321565
1533test "union with 128 bit integer" {1566test "union with 128 bit integer" {
1567 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1568 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15351569
1536 const ValueTag = enum { int, other };1570 const ValueTag = enum { int, other };
...@@ -1554,7 +1588,7 @@ test "union with 128 bit integer" {...@@ -1554,7 +1588,7 @@ test "union with 128 bit integer" {
1554}1588}
15551589
1556test "memset extern union" {1590test "memset extern union" {
1557 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1591 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15581592
1559 const U = extern union {1593 const U = extern union {
1560 foo: u8,1594 foo: u8,
...@@ -1575,7 +1609,7 @@ test "memset extern union" {...@@ -1575,7 +1609,7 @@ test "memset extern union" {
1575}1609}
15761610
1577test "memset packed union" {1611test "memset packed union" {
1578 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1612 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15791613
1580 const U = packed union {1614 const U = packed union {
1581 a: u32,1615 a: u32,
...@@ -1677,7 +1711,7 @@ test "reinterpret extern union" {...@@ -1677,7 +1711,7 @@ test "reinterpret extern union" {
16771711
1678test "reinterpret packed union" {1712test "reinterpret packed union" {
1679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1713 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1680 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1714 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16811715
1682 const U = packed union {1716 const U = packed union {
1683 foo: packed struct(u64) {1717 foo: packed struct(u64) {
...@@ -1755,7 +1789,7 @@ test "reinterpret packed union" {...@@ -1755,7 +1789,7 @@ test "reinterpret packed union" {
17551789
1756test "reinterpret packed union inside packed struct" {1790test "reinterpret packed union inside packed struct" {
1757 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1791 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1758 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1792 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1793 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
17601794
1761 const U = packed union {1795 const U = packed union {
...@@ -1794,6 +1828,8 @@ test "reinterpret packed union inside packed struct" {...@@ -1794,6 +1828,8 @@ test "reinterpret packed union inside packed struct" {
1794}1828}
17951829
1796test "inner struct initializer uses union layout" {1830test "inner struct initializer uses union layout" {
1831 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1832
1797 const namespace = struct {1833 const namespace = struct {
1798 const U = union {1834 const U = union {
1799 a: struct {1835 a: struct {
...@@ -1818,6 +1854,8 @@ test "inner struct initializer uses union layout" {...@@ -1818,6 +1854,8 @@ test "inner struct initializer uses union layout" {
1818}1854}
18191855
1820test "inner struct initializer uses packed union layout" {1856test "inner struct initializer uses packed union layout" {
1857 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1858
1821 const namespace = struct {1859 const namespace = struct {
1822 const U = packed union {1860 const U = packed union {
1823 a: packed struct {1861 a: packed struct {
...@@ -1861,7 +1899,7 @@ test "extern union initialized via reintepreted struct field initializer" {...@@ -1861,7 +1899,7 @@ test "extern union initialized via reintepreted struct field initializer" {
18611899
1862test "packed union initialized via reintepreted struct field initializer" {1900test "packed union initialized via reintepreted struct field initializer" {
1863 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1901 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1864 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1902 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18651903
1866 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };1904 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
18671905
...@@ -1884,7 +1922,7 @@ test "packed union initialized via reintepreted struct field initializer" {...@@ -1884,7 +1922,7 @@ test "packed union initialized via reintepreted struct field initializer" {
1884}1922}
18851923
1886test "store of comptime reinterpreted memory to extern union" {1924test "store of comptime reinterpreted memory to extern union" {
1887 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1925 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18881926
1889 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };1927 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
18901928
...@@ -1907,7 +1945,7 @@ test "store of comptime reinterpreted memory to extern union" {...@@ -1907,7 +1945,7 @@ test "store of comptime reinterpreted memory to extern union" {
19071945
1908test "store of comptime reinterpreted memory to packed union" {1946test "store of comptime reinterpreted memory to packed union" {
1909 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1947 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1910 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1948 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19111949
1912 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };1950 const bytes = [_]u8{ 0xaa, 0xbb, 0xcc, 0xdd };
19131951
...@@ -1933,7 +1971,7 @@ test "store of comptime reinterpreted memory to packed union" {...@@ -1933,7 +1971,7 @@ test "store of comptime reinterpreted memory to packed union" {
19331971
1934test "union field is a pointer to an aligned version of itself" {1972test "union field is a pointer to an aligned version of itself" {
1935 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1973 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1936 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1974 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19371975
1938 const E = union {1976 const E = union {
1939 next: *align(1) @This(),1977 next: *align(1) @This(),
...@@ -1947,7 +1985,7 @@ test "union field is a pointer to an aligned version of itself" {...@@ -1947,7 +1985,7 @@ test "union field is a pointer to an aligned version of itself" {
1947test "pass register-sized field as non-register-sized union" {1985test "pass register-sized field as non-register-sized union" {
1948 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1986 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1949 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1987 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1950 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1988 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19511989
1952 const S = struct {1990 const S = struct {
1953 fn taggedUnion(u: union(enum) { x: usize, y: [2]usize }) !void {1991 fn taggedUnion(u: union(enum) { x: usize, y: [2]usize }) !void {
...@@ -1971,7 +2009,7 @@ test "pass register-sized field as non-register-sized union" {...@@ -1971,7 +2009,7 @@ test "pass register-sized field as non-register-sized union" {
1971}2009}
19722010
1973test "circular dependency through pointer field of a union" {2011test "circular dependency through pointer field of a union" {
1974 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2012 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
19752013
1976 const S = struct {2014 const S = struct {
1977 const UnionInner = extern struct {2015 const UnionInner = extern struct {
...@@ -1994,6 +2032,7 @@ test "circular dependency through pointer field of a union" {...@@ -1994,6 +2032,7 @@ test "circular dependency through pointer field of a union" {
1994}2032}
19952033
1996test "pass nested union with rls" {2034test "pass nested union with rls" {
2035 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1997 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2036 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19982037
1999 const Union = union(enum) {2038 const Union = union(enum) {
...@@ -2014,6 +2053,7 @@ test "pass nested union with rls" {...@@ -2014,6 +2053,7 @@ test "pass nested union with rls" {
2014}2053}
20152054
2016test "runtime union init, most-aligned field != largest" {2055test "runtime union init, most-aligned field != largest" {
2056 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2017 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2057 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2058 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2019 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2059 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -2039,6 +2079,7 @@ test "runtime union init, most-aligned field != largest" {...@@ -2039,6 +2079,7 @@ test "runtime union init, most-aligned field != largest" {
2039}2079}
20402080
2041test "copied union field doesn't alias source" {2081test "copied union field doesn't alias source" {
2082 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2042 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2083 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2043 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2084 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20442085
...@@ -2059,7 +2100,7 @@ test "copied union field doesn't alias source" {...@@ -2059,7 +2100,7 @@ test "copied union field doesn't alias source" {
2059test "create union(enum) from other union(enum)" {2100test "create union(enum) from other union(enum)" {
2060 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;2101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2061 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2062 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2103 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2063 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2104 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
20642105
2065 const string = "hello world";2106 const string = "hello world";
...@@ -2192,6 +2233,7 @@ test "capture used as explicit field value" {...@@ -2192,6 +2233,7 @@ test "capture used as explicit field value" {
2192}2233}
21932234
2194test "signed enum tag with negative value" {2235test "signed enum tag with negative value" {
2236 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2196 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2238 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
21972239
...@@ -2247,7 +2289,7 @@ test "extern union @FieldType" {...@@ -2247,7 +2289,7 @@ test "extern union @FieldType" {
2247}2289}
22482290
2249test "assign global tagged union" {2291test "assign global tagged union" {
2250 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2292 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
22512293
2252 const U = union(enum) {2294 const U = union(enum) {
2253 a: u16,2295 a: u16,
...@@ -2268,6 +2310,8 @@ test "assign global tagged union" {...@@ -2268,6 +2310,8 @@ test "assign global tagged union" {
2268}2310}
22692311
2270test "set mutable union by switching on same union" {2312test "set mutable union by switching on same union" {
2313 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2314
2271 const U = union(enum) {2315 const U = union(enum) {
2272 foo,2316 foo,
2273 bar: usize,2317 bar: usize,
...@@ -2292,6 +2336,8 @@ test "initialize empty field of union inside comptime-known struct constant" {...@@ -2292,6 +2336,8 @@ test "initialize empty field of union inside comptime-known struct constant" {
2292}2336}
22932337
2294test "union with function body field" {2338test "union with function body field" {
2339 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
2340
2295 const U = union {2341 const U = union {
2296 f: fn () void,2342 f: fn () void,
2297 fn foo() void {}2343 fn foo() void {}
test/behavior/var_args.zig+10-6
...@@ -14,6 +14,8 @@ fn add(args: anytype) i32 {...@@ -14,6 +14,8 @@ fn add(args: anytype) i32 {
14}14}
1515
16test "add arbitrary args" {16test "add arbitrary args" {
17 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
18
17 try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);19 try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
18 try expect(add(.{@as(i32, 1234)}) == 1234);20 try expect(add(.{@as(i32, 1234)}) == 1234);
19 try expect(add(.{}) == 0);21 try expect(add(.{}) == 0);
...@@ -28,6 +30,7 @@ test "send void arg to var args" {...@@ -28,6 +30,7 @@ test "send void arg to var args" {
28}30}
2931
30test "pass args directly" {32test "pass args directly" {
33 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3235
33 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);36 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
...@@ -40,6 +43,7 @@ fn addSomeStuff(args: anytype) i32 {...@@ -40,6 +43,7 @@ fn addSomeStuff(args: anytype) i32 {
40}43}
4144
42test "runtime parameter before var args" {45test "runtime parameter before var args" {
46 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4448
45 try expect((try extraFn(10, .{})) == 0);49 try expect((try extraFn(10, .{})) == 0);
...@@ -94,7 +98,7 @@ fn doNothingWithFirstArg(args: anytype) void {...@@ -94,7 +98,7 @@ fn doNothingWithFirstArg(args: anytype) void {
94test "simple variadic function" {98test "simple variadic function" {
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;101 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;102 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {103 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {
100 // https://github.com/ziglang/zig/issues/14096104 // https://github.com/ziglang/zig/issues/14096
...@@ -155,7 +159,7 @@ test "simple variadic function" {...@@ -155,7 +159,7 @@ test "simple variadic function" {
155test "coerce reference to var arg" {159test "coerce reference to var arg" {
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;162 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;163 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {164 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {
161 // https://github.com/ziglang/zig/issues/14096165 // https://github.com/ziglang/zig/issues/14096
...@@ -187,7 +191,7 @@ test "variadic functions" {...@@ -187,7 +191,7 @@ test "variadic functions" {
187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO191 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;193 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
190 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;194 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
191 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {195 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {
192 // https://github.com/ziglang/zig/issues/14096196 // https://github.com/ziglang/zig/issues/14096
193 return error.SkipZigTest;197 return error.SkipZigTest;
...@@ -238,7 +242,7 @@ test "variadic functions" {...@@ -238,7 +242,7 @@ test "variadic functions" {
238242
239test "copy VaList" {243test "copy VaList" {
240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;245 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
242 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;246 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {247 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {
244 // https://github.com/ziglang/zig/issues/14096248 // https://github.com/ziglang/zig/issues/14096
...@@ -272,7 +276,7 @@ test "copy VaList" {...@@ -272,7 +276,7 @@ test "copy VaList" {
272276
273test "unused VaList arg" {277test "unused VaList arg" {
274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO278 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;279 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
276 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;280 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {281 if (builtin.zig_backend == .stage2_llvm and !builtin.os.tag.isDarwin() and builtin.cpu.arch.isAARCH64()) {
278 // https://github.com/ziglang/zig/issues/14096282 // https://github.com/ziglang/zig/issues/14096
...@@ -303,7 +307,7 @@ test "unused VaList arg" {...@@ -303,7 +307,7 @@ test "unused VaList arg" {
303307
304test "floating point VaList args" {308test "floating point VaList args" {
305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;310 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
307 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;311 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
308 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/16961312 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/16961
309313
test/behavior/vector.zig+49-37
...@@ -8,7 +8,7 @@ const expectEqual = std.testing.expectEqual;...@@ -8,7 +8,7 @@ const expectEqual = std.testing.expectEqual;
88
9test "implicit cast vector to array - bool" {9test "implicit cast vector to array - bool" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;11 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1212
13 const S = struct {13 const S = struct {
14 fn doTheTest() !void {14 fn doTheTest() !void {
...@@ -31,7 +31,7 @@ test "implicit cast vector to array - bool" {...@@ -31,7 +31,7 @@ test "implicit cast vector to array - bool" {
31}31}
3232
33test "implicit cast array to vector - bool" {33test "implicit cast array to vector - bool" {
34 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;34 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3636
37 const S = struct {37 const S = struct {
...@@ -59,7 +59,7 @@ test "vector wrap operators" {...@@ -59,7 +59,7 @@ test "vector wrap operators" {
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;62 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
6363
64 const S = struct {64 const S = struct {
65 fn doTheTest() !void {65 fn doTheTest() !void {
...@@ -82,7 +82,7 @@ test "vector bin compares with mem.eql" {...@@ -82,7 +82,7 @@ test "vector bin compares with mem.eql" {
82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;85 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
8686
87 const S = struct {87 const S = struct {
88 fn doTheTest() !void {88 fn doTheTest() !void {
...@@ -106,7 +106,7 @@ test "vector int operators" {...@@ -106,7 +106,7 @@ test "vector int operators" {
106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;108 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
109 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;109 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
110110
111 const S = struct {111 const S = struct {
112 fn doTheTest() !void {112 fn doTheTest() !void {
...@@ -127,7 +127,7 @@ test "vector float operators" {...@@ -127,7 +127,7 @@ test "vector float operators" {
127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;130 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
131131
132 const S = struct {132 const S = struct {
133 fn doTheTest(T: type) !void {133 fn doTheTest(T: type) !void {
...@@ -164,7 +164,7 @@ test "vector bit operators" {...@@ -164,7 +164,7 @@ test "vector bit operators" {
164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
167 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;167 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
168168
169 const S = struct {169 const S = struct {
170 fn doTheTest() !void {170 fn doTheTest() !void {
...@@ -195,7 +195,7 @@ test "implicit cast vector to array" {...@@ -195,7 +195,7 @@ test "implicit cast vector to array" {
195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;197 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
198 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;198 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
199199
200 const S = struct {200 const S = struct {
201 fn doTheTest() !void {201 fn doTheTest() !void {
...@@ -214,7 +214,7 @@ test "array to vector" {...@@ -214,7 +214,7 @@ test "array to vector" {
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;217 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
218218
219 const S = struct {219 const S = struct {
220 fn doTheTest() !void {220 fn doTheTest() !void {
...@@ -233,7 +233,7 @@ test "array of abi-sized integer to vector of same type" {...@@ -233,7 +233,7 @@ test "array of abi-sized integer to vector of same type" {
233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
236 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;236 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
237237
238 const S = struct {238 const S = struct {
239 const one: u32 = 1;239 const one: u32 = 1;
...@@ -318,7 +318,7 @@ test "array of float to vector of same type" {...@@ -318,7 +318,7 @@ test "array of float to vector of same type" {
318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;321 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
322 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
323323
324 const S = struct {324 const S = struct {
...@@ -375,6 +375,7 @@ test "array of float to vector of same type" {...@@ -375,6 +375,7 @@ test "array of float to vector of same type" {
375}375}
376376
377test "array of non-abi-sized integer to vector of same type" {377test "array of non-abi-sized integer to vector of same type" {
378 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -427,6 +428,7 @@ test "array of non-abi-sized integer to vector of same type" {...@@ -427,6 +428,7 @@ test "array of non-abi-sized integer to vector of same type" {
427}428}
428429
429test "array vector coercion - odd sizes" {430test "array vector coercion - odd sizes" {
431 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
430 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
431 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
432 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -468,7 +470,7 @@ test "array to vector with element type coercion" {...@@ -468,7 +470,7 @@ test "array to vector with element type coercion" {
468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO471 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO472 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
471 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;473 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
472 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;474 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
473475
474 const S = struct {476 const S = struct {
...@@ -502,7 +504,7 @@ test "peer type resolution with coercible element types" {...@@ -502,7 +504,7 @@ test "peer type resolution with coercible element types" {
502}504}
503505
504test "tuple to vector" {506test "tuple to vector" {
505 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;507 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
507 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -529,7 +531,7 @@ test "vector casts of sizes not divisible by 8" {...@@ -529,7 +531,7 @@ test "vector casts of sizes not divisible by 8" {
529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO531 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
531 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;533 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
532 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;534 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
533535
534 const S = struct {536 const S = struct {
535 fn doTheTest() !void {537 fn doTheTest() !void {
...@@ -564,6 +566,7 @@ test "vector casts of sizes not divisible by 8" {...@@ -564,6 +566,7 @@ test "vector casts of sizes not divisible by 8" {
564}566}
565567
566test "load vector elements via comptime index" {568test "load vector elements via comptime index" {
569 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
567 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO570 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO571 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
569572
...@@ -584,6 +587,7 @@ test "load vector elements via comptime index" {...@@ -584,6 +587,7 @@ test "load vector elements via comptime index" {
584}587}
585588
586test "store vector elements via comptime index" {589test "store vector elements via comptime index" {
590 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
587 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO591 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
588 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
589593
...@@ -610,6 +614,7 @@ test "store vector elements via comptime index" {...@@ -610,6 +614,7 @@ test "store vector elements via comptime index" {
610}614}
611615
612test "initialize vector which is a struct field" {616test "initialize vector which is a struct field" {
617 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO618 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
614 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO619 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
615620
...@@ -634,7 +639,7 @@ test "vector comparison operators" {...@@ -634,7 +639,7 @@ test "vector comparison operators" {
634 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO639 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO640 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
636 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
637 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;642 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
638643
639 const S = struct {644 const S = struct {
640 fn doTheTest() !void {645 fn doTheTest() !void {
...@@ -679,7 +684,7 @@ test "vector division operators" {...@@ -679,7 +684,7 @@ test "vector division operators" {
679 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
680 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO685 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
681 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;686 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
682 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;687 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
683688
684 const S = struct {689 const S = struct {
685 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {690 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
...@@ -798,6 +803,7 @@ test "vector division operators" {...@@ -798,6 +803,7 @@ test "vector division operators" {
798}803}
799804
800test "vector bitwise not operator" {805test "vector bitwise not operator" {
806 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
801 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;807 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
802 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO808 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
803 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -830,6 +836,7 @@ test "vector bitwise not operator" {...@@ -830,6 +836,7 @@ test "vector bitwise not operator" {
830}836}
831837
832test "vector boolean not operator" {838test "vector boolean not operator" {
839 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
833 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;840 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
834 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
835 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -856,7 +863,7 @@ test "vector shift operators" {...@@ -856,7 +863,7 @@ test "vector shift operators" {
856 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
857 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
858 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;865 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
859 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;866 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
860867
861 const S = struct {868 const S = struct {
862 fn doTheTestShift(x: anytype, y: anytype) !void {869 fn doTheTestShift(x: anytype, y: anytype) !void {
...@@ -926,7 +933,7 @@ test "vector reduce operation" {...@@ -926,7 +933,7 @@ test "vector reduce operation" {
926 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;933 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
927 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO934 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
928 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO935 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
929 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;936 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
930 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;937 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
931938
932 const S = struct {939 const S = struct {
...@@ -1087,7 +1094,7 @@ test "saturating add" {...@@ -1087,7 +1094,7 @@ test "saturating add" {
1087 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1094 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1088 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1095 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1089 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1096 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1090 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1097 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1091 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1098 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10921099
1093 const S = struct {1100 const S = struct {
...@@ -1187,7 +1194,7 @@ test "saturating subtraction" {...@@ -1187,7 +1194,7 @@ test "saturating subtraction" {
1187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1190 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1197 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1191 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1198 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11921199
1193 const S = struct {1200 const S = struct {
...@@ -1279,7 +1286,7 @@ test "saturating multiplication" {...@@ -1279,7 +1286,7 @@ test "saturating multiplication" {
1279 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1286 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1280 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1288 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1282 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1289 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1283 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1290 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12841291
1285 const S = struct {1292 const S = struct {
...@@ -1303,7 +1310,7 @@ test "saturating shift-left" {...@@ -1303,7 +1310,7 @@ test "saturating shift-left" {
1303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1304 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1311 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1312 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1306 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1313 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1307 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1314 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13081315
1309 const S = struct {1316 const S = struct {
...@@ -1323,6 +1330,7 @@ test "saturating shift-left" {...@@ -1323,6 +1330,7 @@ test "saturating shift-left" {
1323}1330}
13241331
1325test "multiplication-assignment operator with an array operand" {1332test "multiplication-assignment operator with an array operand" {
1333 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1328 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1346,7 +1354,7 @@ test "@addWithOverflow" {...@@ -1346,7 +1354,7 @@ test "@addWithOverflow" {
1346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1356 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1349 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1357 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13501358
1351 const S = struct {1359 const S = struct {
1352 fn doTheTest() !void {1360 fn doTheTest() !void {
...@@ -1393,7 +1401,7 @@ test "@subWithOverflow" {...@@ -1393,7 +1401,7 @@ test "@subWithOverflow" {
1393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1401 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1402 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1395 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1403 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1396 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1404 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
13971405
1398 const S = struct {1406 const S = struct {
1399 fn doTheTest() !void {1407 fn doTheTest() !void {
...@@ -1420,7 +1428,7 @@ test "@subWithOverflow" {...@@ -1420,7 +1428,7 @@ test "@subWithOverflow" {
1420}1428}
14211429
1422test "@mulWithOverflow" {1430test "@mulWithOverflow" {
1423 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1431 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1441,7 +1449,7 @@ test "@mulWithOverflow" {...@@ -1441,7 +1449,7 @@ test "@mulWithOverflow" {
1441}1449}
14421450
1443test "@shlWithOverflow" {1451test "@shlWithOverflow" {
1444 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1452 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1445 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1446 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1447 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1462,6 +1470,8 @@ test "@shlWithOverflow" {...@@ -1462,6 +1470,8 @@ test "@shlWithOverflow" {
1462}1470}
14631471
1464test "alignment of vectors" {1472test "alignment of vectors" {
1473 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1474
1465 try expect(@alignOf(@Vector(2, u8)) == switch (builtin.zig_backend) {1475 try expect(@alignOf(@Vector(2, u8)) == switch (builtin.zig_backend) {
1466 else => 2,1476 else => 2,
1467 .stage2_c, .stage2_wasm => @alignOf(u8),1477 .stage2_c, .stage2_wasm => @alignOf(u8),
...@@ -1487,7 +1497,7 @@ test "alignment of vectors" {...@@ -1487,7 +1497,7 @@ test "alignment of vectors" {
1487test "loading the second vector from a slice of vectors" {1497test "loading the second vector from a slice of vectors" {
1488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1498 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1489 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1499 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1490 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1500 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
14911501
1492 @setRuntimeSafety(false);1502 @setRuntimeSafety(false);
1493 var small_bases = [2]@Vector(2, u8){1503 var small_bases = [2]@Vector(2, u8){
...@@ -1503,7 +1513,7 @@ test "array of vectors is copied" {...@@ -1503,7 +1513,7 @@ test "array of vectors is copied" {
1503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1513 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1505 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1515 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1506 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1516 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15071517
1508 const Vec3 = @Vector(3, i32);1518 const Vec3 = @Vector(3, i32);
1509 var points = [_]Vec3{1519 var points = [_]Vec3{
...@@ -1567,7 +1577,7 @@ test "zero multiplicand" {...@@ -1567,7 +1577,7 @@ test "zero multiplicand" {
1567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1577 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1568 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1578 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1569 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1570 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1580 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
15711581
1572 const zeros = @Vector(2, u32){ 0.0, 0.0 };1582 const zeros = @Vector(2, u32){ 0.0, 0.0 };
1573 var ones = @Vector(2, u32){ 1.0, 1.0 };1583 var ones = @Vector(2, u32){ 1.0, 1.0 };
...@@ -1610,7 +1620,7 @@ test "modRem with zero divisor" {...@@ -1610,7 +1620,7 @@ test "modRem with zero divisor" {
1610}1620}
16111621
1612test "array operands to shuffle are coerced to vectors" {1622test "array operands to shuffle are coerced to vectors" {
1613 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1623 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1625 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1625,6 +1635,7 @@ test "array operands to shuffle are coerced to vectors" {...@@ -1625,6 +1635,7 @@ test "array operands to shuffle are coerced to vectors" {
1625}1635}
16261636
1627test "load packed vector element" {1637test "load packed vector element" {
1638 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1628 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1639 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1629 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1640 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1630 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1641 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1636,7 +1647,7 @@ test "load packed vector element" {...@@ -1636,7 +1647,7 @@ test "load packed vector element" {
1636}1647}
16371648
1638test "store packed vector element" {1649test "store packed vector element" {
1639 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1650 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1640 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1651 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1641 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1652 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1653 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1653,7 +1664,7 @@ test "store to vector in slice" {...@@ -1653,7 +1664,7 @@ test "store to vector in slice" {
1653 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1664 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1654 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1665 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1655 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1656 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1667 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
16571668
1658 var v = [_]@Vector(3, f32){1669 var v = [_]@Vector(3, f32){
1659 .{ 1, 1, 1 },1670 .{ 1, 1, 1 },
...@@ -1670,7 +1681,7 @@ test "store vector with memset" {...@@ -1670,7 +1681,7 @@ test "store vector with memset" {
1670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1671 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1682 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1672 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1683 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1673 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1684 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest; // TODO
1674 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1685 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16751686
1676 var a: [5]@Vector(2, i1) = undefined;1687 var a: [5]@Vector(2, i1) = undefined;
...@@ -1697,7 +1708,7 @@ test "store vector with memset" {...@@ -1697,7 +1708,7 @@ test "store vector with memset" {
1697}1708}
16981709
1699test "addition of vectors represented as strings" {1710test "addition of vectors represented as strings" {
1700 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1711 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1701 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1712 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1702 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1713 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17031714
...@@ -1708,7 +1719,7 @@ test "addition of vectors represented as strings" {...@@ -1708,7 +1719,7 @@ test "addition of vectors represented as strings" {
1708}1719}
17091720
1710test "compare vectors with different element types" {1721test "compare vectors with different element types" {
1711 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1722 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
1712 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1723 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1713 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1724 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1714 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1725 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1721,6 +1732,7 @@ test "compare vectors with different element types" {...@@ -1721,6 +1732,7 @@ test "compare vectors with different element types" {
1721}1732}
17221733
1723test "vector pointer is indexable" {1734test "vector pointer is indexable" {
1735 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1724 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1736 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1725 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1737 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17261738
...@@ -1758,7 +1770,7 @@ test "bitcast to vector with different child type" {...@@ -1758,7 +1770,7 @@ test "bitcast to vector with different child type" {
1758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1770 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1759 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1771 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1760 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1772 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1761 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1773 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
17621774
1763 const S = struct {1775 const S = struct {
1764 fn doTheTest() !void {1776 fn doTheTest() !void {
...@@ -1810,7 +1822,7 @@ test "@reduce on bool vector" {...@@ -1810,7 +1822,7 @@ test "@reduce on bool vector" {
1810test "bitcast vector to array of smaller vectors" {1822test "bitcast vector to array of smaller vectors" {
1811 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1823 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1813 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1825 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
18141826
1815 const u8x32 = @Vector(32, u8);1827 const u8x32 = @Vector(32, u8);
1816 const u8x64 = @Vector(64, u8);1828 const u8x64 = @Vector(64, u8);
test/behavior/void.zig+1-1
...@@ -21,7 +21,7 @@ test "compare void with void compile time known" {...@@ -21,7 +21,7 @@ test "compare void with void compile time known" {
21test "iterate over a void slice" {21test "iterate over a void slice" {
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;24 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
2525
26 var j: usize = 0;26 var j: usize = 0;
27 for (times(10), 0..) |_, i| {27 for (times(10), 0..) |_, i| {
test/behavior/while.zig+18-6
...@@ -4,6 +4,7 @@ const expect = std.testing.expect;...@@ -4,6 +4,7 @@ const expect = std.testing.expect;
4const assert = std.debug.assert;4const assert = std.debug.assert;
55
6test "while loop" {6test "while loop" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 var i: i32 = 0;10 var i: i32 = 0;
...@@ -50,6 +51,8 @@ test "while with continue expression" {...@@ -50,6 +51,8 @@ test "while with continue expression" {
50}51}
5152
52test "while with else" {53test "while with else" {
54 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
55
53 var sum: i32 = 0;56 var sum: i32 = 0;
54 var i: i32 = 0;57 var i: i32 = 0;
55 var got_else: i32 = 0;58 var got_else: i32 = 0;
...@@ -104,6 +107,7 @@ fn testBreakOuter() void {...@@ -104,6 +107,7 @@ fn testBreakOuter() void {
104}107}
105108
106test "while copies its payload" {109test "while copies its payload" {
110 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109113
...@@ -122,7 +126,7 @@ test "while copies its payload" {...@@ -122,7 +126,7 @@ test "while copies its payload" {
122}126}
123127
124test "continue and break" {128test "continue and break" {
125 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;129 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
126130
127 try runContinueAndBreakTest();131 try runContinueAndBreakTest();
128 try expect(continue_and_break_counter == 8);132 try expect(continue_and_break_counter == 8);
...@@ -142,7 +146,7 @@ fn runContinueAndBreakTest() !void {...@@ -142,7 +146,7 @@ fn runContinueAndBreakTest() !void {
142}146}
143147
144test "while with optional as condition" {148test "while with optional as condition" {
145 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;149 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -156,7 +160,7 @@ test "while with optional as condition" {...@@ -156,7 +160,7 @@ test "while with optional as condition" {
156}160}
157161
158test "while with optional as condition with else" {162test "while with optional as condition with else" {
159 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;163 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -175,7 +179,7 @@ test "while with optional as condition with else" {...@@ -175,7 +179,7 @@ test "while with optional as condition with else" {
175}179}
176180
177test "while with error union condition" {181test "while with error union condition" {
178 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;182 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
181185
...@@ -207,6 +211,7 @@ test "while on bool with else result follow break prong" {...@@ -207,6 +211,7 @@ test "while on bool with else result follow break prong" {
207}211}
208212
209test "while on optional with else result follow else prong" {213test "while on optional with else result follow else prong" {
214 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212217
...@@ -217,6 +222,7 @@ test "while on optional with else result follow else prong" {...@@ -217,6 +222,7 @@ test "while on optional with else result follow else prong" {
217}222}
218223
219test "while on optional with else result follow break prong" {224test "while on optional with else result follow break prong" {
225 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222228
...@@ -255,6 +261,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {...@@ -255,6 +261,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
255}261}
256262
257test "while on error union with else result follow else prong" {263test "while on error union with else result follow else prong" {
264 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259266
260 const result = while (returnError()) |value| {267 const result = while (returnError()) |value| {
...@@ -264,6 +271,7 @@ test "while on error union with else result follow else prong" {...@@ -264,6 +271,7 @@ test "while on error union with else result follow else prong" {
264}271}
265272
266test "while on error union with else result follow break prong" {273test "while on error union with else result follow break prong" {
274 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268276
269 const result = while (returnSuccess(10)) |value| {277 const result = while (returnSuccess(10)) |value| {
...@@ -288,6 +296,7 @@ test "while bool 2 break statements and an else" {...@@ -288,6 +296,7 @@ test "while bool 2 break statements and an else" {
288}296}
289297
290test "while optional 2 break statements and an else" {298test "while optional 2 break statements and an else" {
299 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO300 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO301 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293302
...@@ -306,6 +315,7 @@ test "while optional 2 break statements and an else" {...@@ -306,6 +315,7 @@ test "while optional 2 break statements and an else" {
306}315}
307316
308test "while error 2 break statements and an else" {317test "while error 2 break statements and an else" {
318 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
310 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
311321
...@@ -344,7 +354,7 @@ test "else continue outer while" {...@@ -344,7 +354,7 @@ test "else continue outer while" {
344354
345test "try terminating an infinite loop" {355test "try terminating an infinite loop" {
346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;357 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
348358
349 // Test coverage for https://github.com/ziglang/zig/issues/13546359 // Test coverage for https://github.com/ziglang/zig/issues/13546
350 const Foo = struct {360 const Foo = struct {
...@@ -370,6 +380,7 @@ test "while loop with comptime true condition needs no else block to return valu...@@ -370,6 +380,7 @@ test "while loop with comptime true condition needs no else block to return valu
370}380}
371381
372test "int returned from switch in while" {382test "int returned from switch in while" {
383 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
374385
375 var x: u32 = 3;386 var x: u32 = 3;
...@@ -381,6 +392,7 @@ test "int returned from switch in while" {...@@ -381,6 +392,7 @@ test "int returned from switch in while" {
381}392}
382393
383test "breaking from a loop in an if statement" {394test "breaking from a loop in an if statement" {
395 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
384 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
386398
...@@ -402,7 +414,7 @@ test "breaking from a loop in an if statement" {...@@ -402,7 +414,7 @@ test "breaking from a loop in an if statement" {
402}414}
403415
404test "labeled break from else" {416test "labeled break from else" {
405 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;417 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
406418
407 const S = struct {419 const S = struct {
408 fn doTheTest(x: u32) !void {420 fn doTheTest(x: u32) !void {
test/behavior/widening.zig+5-4
...@@ -4,6 +4,7 @@ const mem = std.mem;...@@ -4,6 +4,7 @@ const mem = std.mem;
4const builtin = @import("builtin");4const builtin = @import("builtin");
55
6test "integer widening" {6test "integer widening" {
7 if (builtin.cpu.arch.isSpirv() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
...@@ -28,7 +29,7 @@ test "integer widening u0 to u8" {...@@ -28,7 +29,7 @@ test "integer widening u0 to u8" {
2829
29test "implicit unsigned integer to signed integer" {30test "implicit unsigned integer to signed integer" {
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;32 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
3233
33 var a: u8 = 250;34 var a: u8 = 250;
34 var b: i16 = a;35 var b: i16 = a;
...@@ -39,7 +40,7 @@ test "implicit unsigned integer to signed integer" {...@@ -39,7 +40,7 @@ test "implicit unsigned integer to signed integer" {
39test "float widening" {40test "float widening" {
40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;43 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;44 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4445
45 var a: f16 = 12.34;46 var a: f16 = 12.34;
...@@ -58,7 +59,7 @@ test "float widening" {...@@ -58,7 +59,7 @@ test "float widening" {
58test "float widening f16 to f128" {59test "float widening f16 to f128" {
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;62 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6364
64 var x: f16 = 12.34;65 var x: f16 = 12.34;
...@@ -70,7 +71,7 @@ test "float widening f16 to f128" {...@@ -70,7 +71,7 @@ test "float widening f16 to f128" {
70test "cast small unsigned to larger signed" {71test "cast small unsigned to larger signed" {
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;74 if (builtin.cpu.arch.isSpirv()) return error.SkipZigTest;
7475
75 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));76 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));
76 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));77 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));
test/src/Cases.zig+1-1
...@@ -465,7 +465,7 @@ pub fn lowerToBuildSteps(...@@ -465,7 +465,7 @@ pub fn lowerToBuildSteps(
465 if (options.skip_non_native and !std.zig.target.isNative(&case.target.query, &case.target.result, &b.graph.host.result))465 if (options.skip_non_native and !std.zig.target.isNative(&case.target.query, &case.target.result, &b.graph.host.result))
466 continue;466 continue;
467467
468 if (options.skip_spirv and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isSpirV()) continue;468 if (options.skip_spirv and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isSpirv()) continue;
469 if (options.skip_wasm and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isWasm()) continue;469 if (options.skip_wasm and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isWasm()) continue;
470470
471 if (options.skip_freebsd and case.target.query.os_tag == .freebsd) continue;471 if (options.skip_freebsd and case.target.query.os_tag == .freebsd) continue;
test/tests.zig+1-1
...@@ -2567,7 +2567,7 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {...@@ -2567,7 +2567,7 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
2567 if (test_target.link_libc == null and !std.os.targetRequiresLibC(target)) continue;2567 if (test_target.link_libc == null and !std.os.targetRequiresLibC(target)) continue;
2568 }2568 }
25692569
2570 if (options.skip_spirv and target.cpu.arch.isSpirV()) continue;2570 if (options.skip_spirv and target.cpu.arch.isSpirv()) continue;
2571 if (options.skip_wasm and target.cpu.arch.isWasm()) continue;2571 if (options.skip_wasm and target.cpu.arch.isWasm()) continue;
25722572
2573 if (options.skip_freebsd and target.os.tag == .freebsd) continue;2573 if (options.skip_freebsd and target.os.tag == .freebsd) continue;