authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-06-27 02:05:27-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-07-27 14:43:52-04:00
log092f019be98b9cba5ecdc9a2b1a14ba107479a41
tree336e60c055f7e464dfaee11e564997255593f7a0
parent6aed49f6baad85fc4a509f4c631da8c623e7c28f

llvm: implement placeholder powerpc64le c abi logic

This was honestly easier than disabling most of the tests.

4 files changed, 172 insertions(+), 152 deletions(-)

src/codegen/llvm/FuncGen.zig+61-50
...@@ -6987,25 +6987,12 @@ const ParamTypeIterator = struct {...@@ -6987,25 +6987,12 @@ const ParamTypeIterator = struct {
6987 .async => {6987 .async => {
6988 @panic("TODO implement async function lowering in the LLVM backend");6988 @panic("TODO implement async function lowering in the LLVM backend");
6989 },6989 },
6990 .x86_64_sysv, .x86_64_x32 => return try it.next_x86_64_sysv(ty),
6991 .x86_64_win => return it.next_x86_64_win(ty),
6992 .x86_stdcall => {
6993 it.zig_index += 1;
6994 it.llvm_index += 1;
6995
6996 if (isScalar(zcu, ty)) {
6997 return .byval;
6998 } else {
6999 it.byval_attr = true;
7000 return .byref;
7001 }
7002 },
7003 .aarch64_aapcs, .aarch64_aapcs_darwin, .aarch64_aapcs_win => {6990 .aarch64_aapcs, .aarch64_aapcs_darwin, .aarch64_aapcs_win => {
7004 it.zig_index += 1;6991 it.zig_index += 1;
7005 it.llvm_index += 1;6992 it.llvm_index += 1;
7006 switch (aarch64_c_abi.classifyType(ty, zcu)) {6993 switch (aarch64_c_abi.classifyType(ty, zcu)) {
7007 .memory => return .byref_mut,6994 .memory => return .byref_mut,
7008 .float_array => |len| return Lowering{ .float_array = len },6995 .float_array => |len| return .{ .float_array = len },
7009 .byval => return .byval,6996 .byval => return .byval,
7010 .integer => {6997 .integer => {
7011 it.types_buffer[0..1].* = .{.i64};6998 it.types_buffer[0..1].* = .{.i64};
...@@ -7013,7 +7000,7 @@ const ParamTypeIterator = struct {...@@ -7013,7 +7000,7 @@ const ParamTypeIterator = struct {
7013 it.types_len = 1;7000 it.types_len = 1;
7014 return .multiple_llvm_types;7001 return .multiple_llvm_types;
7015 },7002 },
7016 .double_integer => return Lowering{ .i64_array = 2 },7003 .double_integer => return .{ .i64_array = 2 },
7017 }7004 }
7018 },7005 },
7019 .arm_aapcs, .arm_aapcs_vfp => {7006 .arm_aapcs, .arm_aapcs_vfp => {
...@@ -7025,8 +7012,8 @@ const ParamTypeIterator = struct {...@@ -7025,8 +7012,8 @@ const ParamTypeIterator = struct {
7025 return .byref;7012 return .byref;
7026 },7013 },
7027 .byval => return .byval,7014 .byval => return .byval,
7028 .i32_array => |size| return Lowering{ .i32_array = size },7015 .i32_array => |size| return .{ .i32_array = size },
7029 .i64_array => |size| return Lowering{ .i64_array = size },7016 .i64_array => |size| return .{ .i64_array = size },
7030 }7017 }
7031 },7018 },
7032 .mips_o32 => {7019 .mips_o32 => {
...@@ -7038,9 +7025,19 @@ const ParamTypeIterator = struct {...@@ -7038,9 +7025,19 @@ const ParamTypeIterator = struct {
7038 return .byref;7025 return .byref;
7039 },7026 },
7040 .byval => return .byval,7027 .byval => return .byval,
7041 .i32_array => |size| return Lowering{ .i32_array = size },7028 .i32_array => |size| return .{ .i32_array = size },
7042 }7029 }
7043 },7030 },
7031 .powerpc64_elf_v2 => {
7032 it.zig_index += 1;
7033 it.llvm_index += 1;
7034 if (isByRef(ty, zcu)) return switch (ty.abiSize(zcu)) {
7035 1...8 => .abi_sized_int,
7036 9...64 => |abi_size| .{ .i64_array = @intCast(@divCeil(abi_size, 8)) },
7037 else => .byref,
7038 };
7039 return .byval; // TODO
7040 },
7044 .riscv64_lp64, .riscv32_ilp32 => {7041 .riscv64_lp64, .riscv32_ilp32 => {
7045 it.zig_index += 1;7042 it.zig_index += 1;
7046 it.llvm_index += 1;7043 it.llvm_index += 1;
...@@ -7048,7 +7045,7 @@ const ParamTypeIterator = struct {...@@ -7048,7 +7045,7 @@ const ParamTypeIterator = struct {
7048 .memory => return .byref_mut,7045 .memory => return .byref_mut,
7049 .byval => return .byval,7046 .byval => return .byval,
7050 .integer => return .abi_sized_int,7047 .integer => return .abi_sized_int,
7051 .double_integer => return Lowering{ .i64_array = 2 },7048 .double_integer => return .{ .i64_array = 2 },
7052 .fields => {7049 .fields => {
7053 it.types_len = 0;7050 it.types_len = 0;
7054 var field_it: InternPool.LoadedStructType.RuntimeOrderIterator = if (zcu.typeToStruct(ty)) |loaded_struct|7051 var field_it: InternPool.LoadedStructType.RuntimeOrderIterator = if (zcu.typeToStruct(ty)) |loaded_struct|
...@@ -7108,6 +7105,19 @@ const ParamTypeIterator = struct {...@@ -7108,6 +7105,19 @@ const ParamTypeIterator = struct {
7108 return .byref;7105 return .byref;
7109 },7106 },
7110 },7107 },
7108 .x86_stdcall => {
7109 it.zig_index += 1;
7110 it.llvm_index += 1;
7111
7112 if (isScalar(zcu, ty)) {
7113 return .byval;
7114 } else {
7115 it.byval_attr = true;
7116 return .byref;
7117 }
7118 },
7119 .x86_64_sysv, .x86_64_x32 => return try it.next_x86_64_sysv(ty),
7120 .x86_64_win => return it.next_x86_64_win(ty),
7111 // TODO investigate other callconvs7121 // TODO investigate other callconvs
7112 else => {7122 else => {
7113 it.zig_index += 1;7123 it.zig_index += 1;
...@@ -7294,7 +7304,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A...@@ -7294,7 +7304,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A
7294 const zcu = o.zcu;7304 const zcu = o.zcu;
7295 ret_ty.assertHasLayout(zcu);7305 ret_ty.assertHasLayout(zcu);
7296 if (!ret_ty.hasRuntimeBits(zcu)) return .void;7306 if (!ret_ty.hasRuntimeBits(zcu)) return .void;
7297 switch (cc) {7307 return switch (cc) {
7298 .@"inline" => unreachable,7308 .@"inline" => unreachable,
7299 .auto => {7309 .auto => {
7300 // Match the c calling convention in some cases to avoid llvm bugs.7310 // Match the c calling convention in some cases to avoid llvm bugs.
...@@ -7307,36 +7317,31 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A...@@ -7307,36 +7317,31 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A
7307 33...64 => .{ .mem_cast = .double },7317 33...64 => .{ .mem_cast = .double },
7308 else => .by_val,7318 else => .by_val,
7309 };7319 };
73107320 return if (isByRef(ret_ty, zcu)) .sret else .by_val;
7311 if (isByRef(ret_ty, zcu)) return .sret;
7312 return .by_val;
7313 },7321 },
7314 .x86_64_sysv, .x86_64_x32 => return fnReturnStrat_x86_64_sysv(o, ret_ty),
7315 .x86_64_win => return fnReturnStrat_x86_64_win(o, ret_ty),
7316 .x86_stdcall => if (isScalar(zcu, ret_ty)) {
7317 assert(!isByRef(ret_ty, zcu));
7318 return .by_val;
7319 } else return .sret,
7320 .x86_fastcall => return fnReturnStrat_x86_fastcall(o, zcu, ret_ty),
7321 .x86_sysv, .x86_win => return if (isByRef(ret_ty, zcu)) .sret else .by_val,
7322 .aarch64_aapcs, .aarch64_aapcs_darwin, .aarch64_aapcs_win => switch (aarch64_c_abi.classifyType(ret_ty, zcu)) {7322 .aarch64_aapcs, .aarch64_aapcs_darwin, .aarch64_aapcs_win => switch (aarch64_c_abi.classifyType(ret_ty, zcu)) {
7323 .memory => return .sret,7323 .memory => .sret,
7324 .float_array, .byval => return .forceByVal(o, ret_ty),7324 .float_array, .byval => .forceByVal(o, ret_ty),
7325 .integer => return .{ .mem_cast = .i64 },7325 .integer => .{ .mem_cast = .i64 },
7326 .double_integer => return .{ .mem_cast = try o.builder.arrayType(2, .i64) },7326 .double_integer => .{ .mem_cast = try o.builder.arrayType(2, .i64) },
7327 },7327 },
7328 .arm_aapcs, .arm_aapcs_vfp => switch (arm_c_abi.classifyType(ret_ty, zcu, .ret)) {7328 .arm_aapcs, .arm_aapcs_vfp => switch (arm_c_abi.classifyType(ret_ty, zcu, .ret)) {
7329 .memory, .i64_array => return .sret,7329 .memory, .i64_array => .sret,
7330 .i32_array => |len| return if (len == 1) .{ .mem_cast = .i32 } else .sret,7330 .i32_array => |len| if (len == 1) .{ .mem_cast = .i32 } else .sret,
7331 .byval => return .forceByVal(o, ret_ty),7331 .byval => .forceByVal(o, ret_ty),
7332 },7332 },
7333 .mips_o32 => switch (mips_c_abi.classifyType(ret_ty, zcu, .ret)) {7333 .mips_o32 => switch (mips_c_abi.classifyType(ret_ty, zcu, .ret)) {
7334 .memory, .i32_array => return .sret,7334 .memory, .i32_array => .sret,
7335 .byval => return .forceByVal(o, ret_ty),7335 .byval => .forceByVal(o, ret_ty),
7336 },7336 },
7337 .powerpc64_elf_v2 => if (isByRef(ret_ty, zcu)) switch (ret_ty.abiSize(zcu)) {
7338 1...8 => .{ .mem_cast = try o.builder.intType(@intCast(ret_ty.abiSize(zcu) * 8)) },
7339 9...16 => .{ .mem_cast = try o.builder.structType(.normal, &.{ .i64, .i64 }) },
7340 else => .sret,
7341 } else .by_val, // TODO
7337 .riscv64_lp64, .riscv32_ilp32 => switch (riscv_c_abi.classifyType(ret_ty, zcu)) {7342 .riscv64_lp64, .riscv32_ilp32 => switch (riscv_c_abi.classifyType(ret_ty, zcu)) {
7338 .memory => return .sret,7343 .memory => .sret,
7339 .integer => return .{ .mem_cast = try o.builder.intType(@intCast(ret_ty.abiSize(zcu) * 8)) },7344 .integer => .{ .mem_cast = try o.builder.intType(@intCast(ret_ty.abiSize(zcu) * 8)) },
7340 .double_integer => {7345 .double_integer => {
7341 const integer: Builder.Type = switch (zcu.getTarget().cpu.arch) {7346 const integer: Builder.Type = switch (zcu.getTarget().cpu.arch) {
7342 .riscv64, .riscv64be => .i64,7347 .riscv64, .riscv64be => .i64,
...@@ -7345,7 +7350,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A...@@ -7345,7 +7350,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A
7345 };7350 };
7346 return .{ .mem_cast = try o.builder.structType(.normal, &.{ integer, integer }) };7351 return .{ .mem_cast = try o.builder.structType(.normal, &.{ integer, integer }) };
7347 },7352 },
7348 .byval => return .forceByVal(o, ret_ty),7353 .byval => .forceByVal(o, ret_ty),
7349 .fields => {7354 .fields => {
7350 var types_len: usize = 0;7355 var types_len: usize = 0;
7351 var types: [8]Builder.Type = undefined;7356 var types: [8]Builder.Type = undefined;
...@@ -7358,7 +7363,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A...@@ -7358,7 +7363,7 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A
7358 return .{ .mem_cast = try o.builder.structType(.normal, types[0..types_len]) };7363 return .{ .mem_cast = try o.builder.structType(.normal, types[0..types_len]) };
7359 },7364 },
7360 },7365 },
7361 .s390x_sysv, .s390x_sysv_vx => return switch (s390x_c_abi.classifyType(ret_ty, .ret, zcu)) {7366 .s390x_sysv, .s390x_sysv_vx => switch (s390x_c_abi.classifyType(ret_ty, .ret, zcu)) {
7362 .none => .void,7367 .none => .void,
7363 .double_or_float, .vector, .simple => .by_val,7368 .double_or_float, .vector, .simple => .by_val,
7364 .simple_aggregate => unreachable,7369 .simple_aggregate => unreachable,
...@@ -7368,14 +7373,20 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A...@@ -7368,14 +7373,20 @@ pub fn fnReturnStrat(o: *Object, cc: std.lang.CallingConvention, ret_ty: Type) A
7368 .direct => |scalar_ty| if (scalar_ty.toIntern() == ret_ty.toIntern()) {7373 .direct => |scalar_ty| if (scalar_ty.toIntern() == ret_ty.toIntern()) {
7369 assert(!isByRef(ret_ty, zcu));7374 assert(!isByRef(ret_ty, zcu));
7370 return .by_val;7375 return .by_val;
7371 } else {7376 } else .{ .mem_cast = try o.lowerType(scalar_ty, .as_value) },
7372 return .{ .mem_cast = try o.lowerType(scalar_ty, .as_value) };7377 .indirect => .sret,
7373 },
7374 .indirect => return .sret,
7375 },7378 },
7379 .x86_stdcall => if (isScalar(zcu, ret_ty)) {
7380 assert(!isByRef(ret_ty, zcu));
7381 return .by_val;
7382 } else .sret,
7383 .x86_fastcall => fnReturnStrat_x86_fastcall(o, zcu, ret_ty),
7384 .x86_sysv, .x86_win => if (isByRef(ret_ty, zcu)) .sret else .by_val,
7385 .x86_64_sysv, .x86_64_x32 => fnReturnStrat_x86_64_sysv(o, ret_ty),
7386 .x86_64_win => fnReturnStrat_x86_64_win(o, ret_ty),
7376 // TODO investigate other callconvs7387 // TODO investigate other callconvs
7377 else => return .forceByVal(o, ret_ty),7388 else => .forceByVal(o, ret_ty),
7378 }7389 };
7379}7390}
73807391
7381fn fnReturnStrat_x86_fastcall(o: *Object, zcu: *Zcu, ty: Type) Allocator.Error!FnReturnStrat {7392fn fnReturnStrat_x86_fastcall(o: *Object, zcu: *Zcu, ty: Type) Allocator.Error!FnReturnStrat {
test/behavior/vector.zig-1
...@@ -736,7 +736,6 @@ test "vector reduce operation" {...@@ -736,7 +736,6 @@ test "vector reduce operation" {
736 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO736 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
737 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;737 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
738 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;738 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
739 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isPowerPC()) return error.SkipZigTest; // https://github.com/llvm/llvm-project/issues/195562
740739
741 const S = struct {740 const S = struct {
742 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {741 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
test/c_abi/cfuncs.c+7-7
...@@ -77,7 +77,7 @@ static void assert_or_panic(bool ok) {...@@ -77,7 +77,7 @@ static void assert_or_panic(bool ok) {
77# define ZIG_NO_COMPLEX77# define ZIG_NO_COMPLEX
78#endif78#endif
7979
80#ifdef ZIG_PPC3280#ifdef __powerpc__
81# define ZIG_NO_COMPLEX81# define ZIG_NO_COMPLEX
82#endif82#endif
8383
...@@ -15571,7 +15571,7 @@ void run_c_tests(void) {...@@ -15571,7 +15571,7 @@ void run_c_tests(void) {
15571#if !(defined(__i386__) && defined(_WIN32))15571#if !(defined(__i386__) && defined(_WIN32))
15572#ifndef __loongarch__15572#ifndef __loongarch__
15573#ifndef ZIG_MIPS6415573#ifndef ZIG_MIPS64
15574#ifndef __powerpc__15574#ifndef ZIG_PPC32
15575 {15575 {
15576 struct Struct_i32_i32 s = {1, 2};15576 struct Struct_i32_i32 s = {1, 2};
15577 zig_struct_i32_i32(s);15577 zig_struct_i32_i32(s);
...@@ -15584,7 +15584,7 @@ void run_c_tests(void) {...@@ -15584,7 +15584,7 @@ void run_c_tests(void) {
15584#ifndef __hexagon__15584#ifndef __hexagon__
15585#ifndef __loongarch__15585#ifndef __loongarch__
15586#ifndef ZIG_MIPS6415586#ifndef ZIG_MIPS64
15587#ifndef __powerpc__15587#ifndef ZIG_PPC32
15588 {15588 {
15589 struct BigStruct s = {1, 2, 3, 4, 5};15589 struct BigStruct s = {1, 2, 3, 4, 5};
15590 zig_big_struct(s);15590 zig_big_struct(s);
...@@ -15616,7 +15616,7 @@ void run_c_tests(void) {...@@ -15616,7 +15616,7 @@ void run_c_tests(void) {
15616#ifndef __i386__15616#ifndef __i386__
15617#ifndef __loongarch__15617#ifndef __loongarch__
15618#ifndef ZIG_MIPS6415618#ifndef ZIG_MIPS64
15619#ifndef __powerpc__15619#ifndef ZIG_PPC32
15620 {15620 {
15621 struct SplitStructInts s = {1234, 100, 1337};15621 struct SplitStructInts s = {1234, 100, 1337};
15622 zig_split_struct_ints(s);15622 zig_split_struct_ints(s);
...@@ -15630,7 +15630,7 @@ void run_c_tests(void) {...@@ -15630,7 +15630,7 @@ void run_c_tests(void) {
15630#ifndef __hexagon__15630#ifndef __hexagon__
15631#ifndef __loongarch__15631#ifndef __loongarch__
15632#ifndef ZIG_MIPS6415632#ifndef ZIG_MIPS64
15633#ifndef __powerpc__15633#ifndef ZIG_PPC32
15634 {15634 {
15635 struct MedStructMixed s = {1234, 100.0f, 1337.0f};15635 struct MedStructMixed s = {1234, 100.0f, 1337.0f};
15636 zig_med_struct_mixed(s);15636 zig_med_struct_mixed(s);
...@@ -15644,7 +15644,7 @@ void run_c_tests(void) {...@@ -15644,7 +15644,7 @@ void run_c_tests(void) {
15644#ifndef __i386__15644#ifndef __i386__
15645#ifndef __loongarch__15645#ifndef __loongarch__
15646#ifndef ZIG_MIPS6415646#ifndef ZIG_MIPS64
15647#ifndef __powerpc__15647#ifndef ZIG_PPC32
15648 {15648 {
15649 struct SplitStructMixed s = {1234, 100, 1337.0f};15649 struct SplitStructMixed s = {1234, 100, 1337.0f};
15650 zig_split_struct_mixed(s);15650 zig_split_struct_mixed(s);
...@@ -15658,7 +15658,7 @@ void run_c_tests(void) {...@@ -15658,7 +15658,7 @@ void run_c_tests(void) {
15658#ifndef __hexagon__15658#ifndef __hexagon__
15659#ifndef __loongarch__15659#ifndef __loongarch__
15660#ifndef ZIG_MIPS6415660#ifndef ZIG_MIPS64
15661#ifndef __powerpc__15661#ifndef ZIG_PPC32
15662 {15662 {
15663 struct BigStruct s = {30, 31, 32, 33, 34};15663 struct BigStruct s = {30, 31, 32, 33, 34};
15664 struct BigStruct res = zig_big_struct_both(s);15664 struct BigStruct res = zig_big_struct_both(s);
test/c_abi/main.zig+104-94
...@@ -161,7 +161,7 @@ extern fn c_cmultf(a: ComplexFloat, b: ComplexFloat) ComplexFloat;...@@ -161,7 +161,7 @@ extern fn c_cmultf(a: ComplexFloat, b: ComplexFloat) ComplexFloat;
161extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble;161extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble;
162162
163const complex_abi_compatible = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isMIPS() and163const complex_abi_compatible = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isMIPS() and
164 !builtin.cpu.arch.isArm() and !builtin.cpu.arch.isPowerPC32() and !builtin.cpu.arch.isRISCV() and164 !builtin.cpu.arch.isArm() and !builtin.cpu.arch.isPowerPC() and !builtin.cpu.arch.isRISCV() and
165 builtin.cpu.arch != .hexagon and165 builtin.cpu.arch != .hexagon and
166 builtin.cpu.arch != .s390x and166 builtin.cpu.arch != .s390x and
167 !(builtin.cpu.arch.isLoongArch() and builtin.abi.float() == .soft);167 !(builtin.cpu.arch.isLoongArch() and builtin.abi.float() == .soft);
...@@ -15384,7 +15384,7 @@ test "struct u8, u8" {...@@ -15384,7 +15384,7 @@ test "struct u8, u8" {
15384 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15384 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15385 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15385 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15386 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15386 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15387 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15387 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15388 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15388 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1538915389
15390 const s = c_ret_struct_u8_u8();15390 const s = c_ret_struct_u8_u8();
...@@ -15418,7 +15418,7 @@ test "struct u8, u8, u8" {...@@ -15418,7 +15418,7 @@ test "struct u8, u8, u8" {
15418 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15418 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15419 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15419 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15420 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15420 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15421 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15421 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15422 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15422 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1542315423
15424 const s = c_ret_struct_u8_u8_u8();15424 const s = c_ret_struct_u8_u8_u8();
...@@ -15455,7 +15455,7 @@ test "struct u8, u8, u8, u8" {...@@ -15455,7 +15455,7 @@ test "struct u8, u8, u8, u8" {
15455 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15455 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15456 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15456 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15457 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15457 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15458 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15458 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15459 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15459 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1546015460
15461 const s = c_ret_struct_u8_u8_u8_u8();15461 const s = c_ret_struct_u8_u8_u8_u8();
...@@ -15516,7 +15516,7 @@ test "struct u16, u16" {...@@ -15516,7 +15516,7 @@ test "struct u16, u16" {
15516 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15516 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15517 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15517 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15518 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15518 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15519 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15519 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15520 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15520 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1552115521
15522 const s = c_ret_struct_u16_u16();15522 const s = c_ret_struct_u16_u16();
...@@ -15550,7 +15550,7 @@ test "struct u16, u16, u16" {...@@ -15550,7 +15550,7 @@ test "struct u16, u16, u16" {
15550 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15550 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15551 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15551 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15552 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15552 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15553 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15553 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15554 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;15554 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;
15555 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15555 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1555615556
...@@ -15588,7 +15588,7 @@ test "struct u16, u16, u16, u16" {...@@ -15588,7 +15588,7 @@ test "struct u16, u16, u16, u16" {
15588 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15588 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15589 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15589 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15590 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15590 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15591 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15591 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15592 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;15592 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;
15593 if (builtin.cpu.arch == .x86) return error.SkipZigTest;15593 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1559415594
...@@ -15649,7 +15649,7 @@ extern fn c_test_struct_u32_u32() void;...@@ -15649,7 +15649,7 @@ extern fn c_test_struct_u32_u32() void;
15649test "struct u32, u32" {15649test "struct u32, u32" {
15650 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15650 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15651 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15651 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15652 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15652 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
15653 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;15653 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;
15654 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;15654 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1565515655
...@@ -15684,7 +15684,7 @@ test "struct u32, u32, u32" {...@@ -15684,7 +15684,7 @@ test "struct u32, u32, u32" {
15684 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15684 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15685 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15685 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15686 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15686 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15687 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15687 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1568815688
15689 const s = c_ret_struct_u32_u32_u32();15689 const s = c_ret_struct_u32_u32_u32();
15690 try expect(s.a == 8);15690 try expect(s.a == 8);
...@@ -15720,7 +15720,7 @@ test "struct u32, u32, u32, u32" {...@@ -15720,7 +15720,7 @@ test "struct u32, u32, u32, u32" {
15720 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15720 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15721 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15721 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15722 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15722 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15723 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15723 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1572415724
15725 const s = c_ret_struct_u32_u32_u32_u32();15725 const s = c_ret_struct_u32_u32_u32_u32();
15726 try expect(s.a == 10);15726 try expect(s.a == 10);
...@@ -15866,7 +15866,7 @@ extern fn c_test_struct_u64_u64_u64() void;...@@ -15866,7 +15866,7 @@ extern fn c_test_struct_u64_u64_u64() void;
15866test "struct u64, u64, u64" {15866test "struct u64, u64, u64" {
15867 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15867 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15868 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15868 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15869 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15869 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1587015870
15871 const s = c_ret_struct_u64_u64_u64();15871 const s = c_ret_struct_u64_u64_u64();
15872 try expect(s.a == 8);15872 try expect(s.a == 8);
...@@ -15901,7 +15901,7 @@ extern fn c_test_struct_u64_u64_u64_u64() void;...@@ -15901,7 +15901,7 @@ extern fn c_test_struct_u64_u64_u64_u64() void;
15901test "struct u64, u64, u64, u64" {15901test "struct u64, u64, u64, u64" {
15902 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;15902 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
15903 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;15903 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
15904 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;15904 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1590515905
15906 const s = c_ret_struct_u64_u64_u64_u64();15906 const s = c_ret_struct_u64_u64_u64_u64();
15907 try expect(s.a == 10);15907 try expect(s.a == 10);
...@@ -15930,7 +15930,7 @@ extern fn c_test_struct_f32() void;...@@ -15930,7 +15930,7 @@ extern fn c_test_struct_f32() void;
1593015930
15931test "struct f32" {15931test "struct f32" {
15932 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;15932 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
15933 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;15933 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
15934 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;15934 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1593515935
15936 const s = c_ret_struct_f32();15936 const s = c_ret_struct_f32();
...@@ -16173,7 +16173,7 @@ test "struct {f32, f32}, f32" {...@@ -16173,7 +16173,7 @@ test "struct {f32, f32}, f32" {
16173 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16173 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16174 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16174 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16175 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16175 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16176 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16176 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1617716177
16178 const s = c_ret_struct_f32f32_f32();16178 const s = c_ret_struct_f32f32_f32();
16179 try expect(s.a.b == 1.0);16179 try expect(s.a.b == 1.0);
...@@ -16206,7 +16206,7 @@ test "struct f32, {f32, f32}" {...@@ -16206,7 +16206,7 @@ test "struct f32, {f32, f32}" {
16206 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16206 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16207 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16207 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16208 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16208 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16209 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16209 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1621016210
16211 const s = c_ret_struct_f32_f32f32();16211 const s = c_ret_struct_f32_f32f32();
16212 try expect(s.a == 1.0);16212 try expect(s.a == 1.0);
...@@ -16234,7 +16234,7 @@ extern fn c_test_struct_f64() void;...@@ -16234,7 +16234,7 @@ extern fn c_test_struct_f64() void;
1623416234
16235test "struct f64" {16235test "struct f64" {
16236 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;16236 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
16237 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16237 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16238 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;16238 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;
16239 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;16239 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1624016240
...@@ -16265,7 +16265,7 @@ extern fn c_test_struct_f64_f64() void;...@@ -16265,7 +16265,7 @@ extern fn c_test_struct_f64_f64() void;
16265test "struct f64, f64" {16265test "struct f64, f64" {
16266 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;16266 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
16267 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16267 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16268 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16268 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1626916269
16270 const s = c_ret_struct_f64_f64();16270 const s = c_ret_struct_f64_f64();
16271 try expect(s.a == 6);16271 try expect(s.a == 6);
...@@ -16297,7 +16297,7 @@ extern fn c_test_struct_f64_f64_f64() void;...@@ -16297,7 +16297,7 @@ extern fn c_test_struct_f64_f64_f64() void;
16297test "struct f64, f64, f64" {16297test "struct f64, f64, f64" {
16298 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16298 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16299 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16299 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16300 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16300 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1630116301
16302 const s = c_ret_struct_f64_f64_f64();16302 const s = c_ret_struct_f64_f64_f64();
16303 try expect(s.a == 8);16303 try expect(s.a == 8);
...@@ -16332,7 +16332,7 @@ extern fn c_test_struct_f64_f64_f64_f64() void;...@@ -16332,7 +16332,7 @@ extern fn c_test_struct_f64_f64_f64_f64() void;
16332test "struct f64, f64, f64, f64" {16332test "struct f64, f64, f64, f64" {
16333 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16333 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16334 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16334 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16335 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16335 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1633616336
16337 const s = c_ret_struct_f64_f64_f64_f64();16337 const s = c_ret_struct_f64_f64_f64_f64();
16338 try expect(s.a == 10);16338 try expect(s.a == 10);
...@@ -16370,7 +16370,7 @@ extern fn c_test_struct_f64_f64_f64_f64_f64() void;...@@ -16370,7 +16370,7 @@ extern fn c_test_struct_f64_f64_f64_f64_f64() void;
16370test "struct f64, f64, f64, f64, f64" {16370test "struct f64, f64, f64, f64, f64" {
16371 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16371 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16372 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16372 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16373 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;16373 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1637416374
16375 const s = c_ret_struct_f64_f64_f64_f64_f64();16375 const s = c_ret_struct_f64_f64_f64_f64_f64();
16376 try expect(s.a == 12);16376 try expect(s.a == 12);
...@@ -16409,7 +16409,7 @@ test "struct{u32,union{u32,struct{u32,u32}}}" {...@@ -16409,7 +16409,7 @@ test "struct{u32,union{u32,struct{u32,u32}}}" {
16409 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16409 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16410 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;16410 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
16411 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16411 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16412 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16412 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1641316413
16414 const s = c_ret_struct_u32_union_u32_u32u32();16414 const s = c_ret_struct_u32_union_u32_u32u32();
16415 try expect(s.a == 1);16415 try expect(s.a == 1);
...@@ -16427,10 +16427,10 @@ extern fn c_mut_struct_i32_i32(Struct_i32_i32) Struct_i32_i32;...@@ -16427,10 +16427,10 @@ extern fn c_mut_struct_i32_i32(Struct_i32_i32) Struct_i32_i32;
16427extern fn c_struct_i32_i32(Struct_i32_i32) void;16427extern fn c_struct_i32_i32(Struct_i32_i32) void;
1642816428
16429test "struct i32 i32" {16429test "struct i32 i32" {
16430 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16430 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16431 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16431 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16432 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16432 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;16433 if (builtin.cpu.arch.isRiscv32()) return error.SkipZigTest;
16433 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16434 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;16434 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1643516435
16436 const s: Struct_i32_i32 = .{16436 const s: Struct_i32_i32 = .{
...@@ -16460,10 +16460,10 @@ const BigStruct = extern struct {...@@ -16460,10 +16460,10 @@ const BigStruct = extern struct {
16460extern fn c_big_struct(BigStruct) void;16460extern fn c_big_struct(BigStruct) void;
1646116461
16462test "big struct" {16462test "big struct" {
16463 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16464 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16465 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16466 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16463 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16464 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16465 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16466 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1646716467
16468 const s = BigStruct{16468 const s = BigStruct{
16469 .a = 1,16469 .a = 1,
...@@ -16489,9 +16489,9 @@ const BigUnion = extern union {...@@ -16489,9 +16489,9 @@ const BigUnion = extern union {
16489extern fn c_big_union(BigUnion) void;16489extern fn c_big_union(BigUnion) void;
1649016490
16491test "big union" {16491test "big union" {
16492 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16493 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16494 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16492 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16493 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16494 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1649516495
16496 const x = BigUnion{16496 const x = BigUnion{
16497 .a = BigStruct{16497 .a = BigStruct{
...@@ -16523,10 +16523,10 @@ extern fn c_med_struct_mixed(MedStructMixed) void;...@@ -16523,10 +16523,10 @@ extern fn c_med_struct_mixed(MedStructMixed) void;
16523extern fn c_ret_med_struct_mixed() MedStructMixed;16523extern fn c_ret_med_struct_mixed() MedStructMixed;
1652416524
16525test "medium struct of ints and floats" {16525test "medium struct of ints and floats" {
16526 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16527 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16528 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16529 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16526 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16527 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16528 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16529 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1653016530
16531 const s = MedStructMixed{16531 const s = MedStructMixed{
16532 .a = 1234,16532 .a = 1234,
...@@ -16602,11 +16602,11 @@ const SplitStructInt = extern struct {...@@ -16602,11 +16602,11 @@ const SplitStructInt = extern struct {
16602extern fn c_split_struct_ints(SplitStructInt) void;16602extern fn c_split_struct_ints(SplitStructInt) void;
1660316603
16604test "split struct of ints" {16604test "split struct of ints" {
16605 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
16606 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16607 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16608 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16609 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16605 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16606 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16607 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16608 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16609 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1661016610
16611 const s = SplitStructInt{16611 const s = SplitStructInt{
16612 .a = 1234,16612 .a = 1234,
...@@ -16631,11 +16631,11 @@ extern fn c_split_struct_mixed(SplitStructMixed) void;...@@ -16631,11 +16631,11 @@ extern fn c_split_struct_mixed(SplitStructMixed) void;
16631extern fn c_ret_split_struct_mixed() SplitStructMixed;16631extern fn c_ret_split_struct_mixed() SplitStructMixed;
1663216632
16633test "split struct of ints and floats" {16633test "split struct of ints and floats" {
16634 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
16635 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16636 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16637 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16638 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16634 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16635 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16636 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16637 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16638 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1663916639
16640 const s = SplitStructMixed{16640 const s = SplitStructMixed{
16641 .a = 1234,16641 .a = 1234,
...@@ -16658,10 +16658,10 @@ export fn zig_split_struct_mixed(x: SplitStructMixed) void {...@@ -16658,10 +16658,10 @@ export fn zig_split_struct_mixed(x: SplitStructMixed) void {
16658extern fn c_big_struct_both(BigStruct) BigStruct;16658extern fn c_big_struct_both(BigStruct) BigStruct;
1665916659
16660test "sret and byval together" {16660test "sret and byval together" {
16661 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16662 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16663 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16664 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16661 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16662 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16663 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16664 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1666516665
16666 const s = BigStruct{16666 const s = BigStruct{
16667 .a = 1,16667 .a = 1,
...@@ -16771,11 +16771,11 @@ extern fn c_struct_with_array(StructWithArray) void;...@@ -16771,11 +16771,11 @@ extern fn c_struct_with_array(StructWithArray) void;
16771extern fn c_ret_struct_with_array() StructWithArray;16771extern fn c_ret_struct_with_array() StructWithArray;
1677216772
16773test "Struct with array as padding." {16773test "Struct with array as padding." {
16774 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
16775 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16776 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16777 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16778 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16774 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16775 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16776 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16777 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16778 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1677916779
16780 c_struct_with_array(.{ .a = 1, .padding = undefined, .b = 2 });16780 c_struct_with_array(.{ .a = 1, .padding = undefined, .b = 2 });
1678116781
...@@ -16799,10 +16799,10 @@ extern fn c_float_array_struct(FloatArrayStruct) void;...@@ -16799,10 +16799,10 @@ extern fn c_float_array_struct(FloatArrayStruct) void;
16799extern fn c_ret_float_array_struct() FloatArrayStruct;16799extern fn c_ret_float_array_struct() FloatArrayStruct;
1680016800
16801test "Float array like struct" {16801test "Float array like struct" {
16802 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16803 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16804 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16805 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16802 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16803 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16804 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16805 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1680616806
16807 c_float_array_struct(.{16807 c_float_array_struct(.{
16808 .origin = .{16808 .origin = .{
...@@ -16833,33 +16833,37 @@ pub inline fn expectOk(c_err: c_int) !void {...@@ -16833,33 +16833,37 @@ pub inline fn expectOk(c_err: c_int) !void {
16833/// Tests for Double + Char struct16833/// Tests for Double + Char struct
16834const DC = extern struct { v1: f64, v2: u8 };16834const DC = extern struct { v1: f64, v2: u8 };
16835test "DC: Zig passes to C" {16835test "DC: Zig passes to C" {
16836 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16837 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16836 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16838 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16839 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16837 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;16840 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;
16838 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16841
16839 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16840 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16841 try expectOk(c_assert_DC(.{ .v1 = -0.25, .v2 = 15 }));16842 try expectOk(c_assert_DC(.{ .v1 = -0.25, .v2 = 15 }));
16842}16843}
16843test "DC: Zig returns to C" {16844test "DC: Zig returns to C" {
16845 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16844 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16846 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16847 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16845 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;16848 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;
16846 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16849
16847 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16848 try expectOk(c_assert_ret_DC());16850 try expectOk(c_assert_ret_DC());
16849}16851}
16850test "DC: C passes to Zig" {16852test "DC: C passes to Zig" {
16853 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16854 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16851 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16855 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16856 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16852 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;16857 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;
16853 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16858
16854 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16855 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16856 try expectOk(c_send_DC());16859 try expectOk(c_send_DC());
16857}16860}
16858test "DC: C returns to Zig" {16861test "DC: C returns to Zig" {
16862 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16859 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16863 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16864 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16860 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;16865 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;
16861 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16866
16862 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16863 try expectEqual(DC{ .v1 = -0.25, .v2 = 15 }, c_ret_DC());16867 try expectEqual(DC{ .v1 = -0.25, .v2 = 15 }, c_ret_DC());
16864}16868}
1686516869
...@@ -16884,32 +16888,35 @@ const CFF = extern struct { v1: u8, v2: f32, v3: f32 };...@@ -16884,32 +16888,35 @@ const CFF = extern struct { v1: u8, v2: f32, v3: f32 };
16884test "CFF: Zig passes to C" {16888test "CFF: Zig passes to C" {
16885 if (builtin.target.cpu.arch == .x86) return error.SkipZigTest;16889 if (builtin.target.cpu.arch == .x86) return error.SkipZigTest;
16886 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16890 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16887 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16891 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16888 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;16892 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16889 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16893 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16894
16890 try expectOk(c_assert_CFF(.{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }));16895 try expectOk(c_assert_CFF(.{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }));
16891}16896}
16892test "CFF: Zig returns to C" {16897test "CFF: Zig returns to C" {
16893 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;16898 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16894 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;16899 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16895 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;16900 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16901
16896 try expectOk(c_assert_ret_CFF());16902 try expectOk(c_assert_ret_CFF());
16897}16903}
16898test "CFF: C passes to Zig" {16904test "CFF: C passes to Zig" {
16899 if (builtin.target.cpu.arch == .x86) return error.SkipZigTest;
16900 if (builtin.cpu.arch.isRISCV() and builtin.mode != .debug) return error.SkipZigTest;
16901 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16902 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16903 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16904 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16905 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16906 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16907 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16908 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16909 if (builtin.cpu.arch.isRISCV() and builtin.mode != .debug) return error.SkipZigTest;
16910 if (builtin.target.cpu.arch == .x86) return error.SkipZigTest;
1690516911
16906 try expectOk(c_send_CFF());16912 try expectOk(c_send_CFF());
16907}16913}
16908test "CFF: C returns to Zig" {16914test "CFF: C returns to Zig" {
16909 if (builtin.cpu.arch.isRISCV() and builtin.mode != .debug) return error.SkipZigTest;
16910 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16911 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16912 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;16915 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16916 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16917 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16918 if (builtin.cpu.arch.isRISCV() and builtin.mode != .debug) return error.SkipZigTest;
16919
16913 try expectEqual(CFF{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }, c_ret_CFF());16920 try expectEqual(CFF{ .v1 = 39, .v2 = 0.875, .v3 = 1.0 }, c_ret_CFF());
16914}16921}
16915pub extern fn c_assert_CFF(lv: CFF) c_int;16922pub extern fn c_assert_CFF(lv: CFF) c_int;
...@@ -16932,31 +16939,35 @@ pub export fn zig_ret_CFF() CFF {...@@ -16932,31 +16939,35 @@ pub export fn zig_ret_CFF() CFF {
16932const PD = extern struct { v1: ?*anyopaque, v2: f64 };16939const PD = extern struct { v1: ?*anyopaque, v2: f64 };
1693316940
16934test "PD: Zig passes to C" {16941test "PD: Zig passes to C" {
16935 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16936 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16937 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16938 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16942 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16943 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16944 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16945 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16939 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;16946 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
16947
16940 try expectOk(c_assert_PD(.{ .v1 = null, .v2 = 0.5 }));16948 try expectOk(c_assert_PD(.{ .v1 = null, .v2 = 0.5 }));
16941}16949}
16942test "PD: Zig returns to C" {16950test "PD: Zig returns to C" {
16943 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16944 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16945 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;16951 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16952 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16953 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16954
16946 try expectOk(c_assert_ret_PD());16955 try expectOk(c_assert_ret_PD());
16947}16956}
16948test "PD: C passes to Zig" {16957test "PD: C passes to Zig" {
16949 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16950 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16951 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16952 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;16958 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
16959 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16960 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16961 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16953 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;16962 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
16963
16954 try expectOk(c_send_PD());16964 try expectOk(c_send_PD());
16955}16965}
16956test "PD: C returns to Zig" {16966test "PD: C returns to Zig" {
16957 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16958 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
16959 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;16967 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
16968 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
16969 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
16970
16960 try expectEqual(PD{ .v1 = null, .v2 = 0.5 }, c_ret_PD());16971 try expectEqual(PD{ .v1 = null, .v2 = 0.5 }, c_ret_PD());
16961}16972}
16962pub extern fn c_assert_PD(lv: PD) c_int;16973pub extern fn c_assert_PD(lv: PD) c_int;
...@@ -17010,10 +17021,10 @@ const ByVal = extern struct {...@@ -17010,10 +17021,10 @@ const ByVal = extern struct {
1701017021
17011extern fn c_func_ptr_byval(*anyopaque, *anyopaque, ByVal, c_ulong, *anyopaque, c_ulong) void;17022extern fn c_func_ptr_byval(*anyopaque, *anyopaque, ByVal, c_ulong, *anyopaque, c_ulong) void;
17012test "C function that takes byval struct called via function pointer" {17023test "C function that takes byval struct called via function pointer" {
17024 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17025 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17013 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;17026 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
17014 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;17027 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
17015 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17016 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
1701717028
17018 var fn_ptr = &c_func_ptr_byval;17029 var fn_ptr = &c_func_ptr_byval;
17019 _ = &fn_ptr;17030 _ = &fn_ptr;
...@@ -17032,17 +17043,16 @@ test "C function that takes byval struct called via function pointer" {...@@ -17032,17 +17043,16 @@ test "C function that takes byval struct called via function pointer" {
1703217043
17033extern fn c_f16(f16) f16;17044extern fn c_f16(f16) f16;
17034test "f16 bare" {17045test "f16 bare" {
17035 if (builtin.cpu.arch == .x86_64) return error.SkipZigTest;17046 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
17036 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
17037 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;17047 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17038 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;17048 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17039 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;17049 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
17050 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
17040 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;17051 if (builtin.cpu.arch.isRISCV()) return error.SkipZigTest;
17041 if (builtin.cpu.arch == .s390x) return error.SkipZigTest;17052 if (builtin.cpu.arch == .s390x) return error.SkipZigTest;
17042 if (builtin.cpu.arch.isWasm()) return error.SkipZigTest;17053 if (builtin.cpu.arch.isWasm()) return error.SkipZigTest;
17043 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;17054 if (builtin.cpu.arch == .x86) return error.SkipZigTest;
1704417055 if (builtin.cpu.arch == .x86_64) return error.SkipZigTest;
17045 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
1704617056
17047 const a = c_f16(12);17057 const a = c_f16(12);
17048 try expect(a == 34);17058 try expect(a == 34);
...@@ -17053,9 +17063,9 @@ const f16_struct = extern struct {...@@ -17053,9 +17063,9 @@ const f16_struct = extern struct {
17053};17063};
17054extern fn c_f16_struct(f16_struct) f16_struct;17064extern fn c_f16_struct(f16_struct) f16_struct;
17055test "f16 struct" {17065test "f16 struct" {
17066 if (builtin.cpu.arch.isArm() and builtin.mode != .debug) return error.SkipZigTest;
17056 if (builtin.target.cpu.arch.isMIPS64()) return error.SkipZigTest;17067 if (builtin.target.cpu.arch.isMIPS64()) return error.SkipZigTest;
17057 if (builtin.target.cpu.arch.isPowerPC32()) return error.SkipZigTest;17068 if (builtin.target.cpu.arch.isPowerPC32()) return error.SkipZigTest;
17058 if (builtin.cpu.arch.isArm() and builtin.mode != .debug) return error.SkipZigTest;
17059 if (builtin.cpu.arch == .s390x) return error.SkipZigTest;17069 if (builtin.cpu.arch == .s390x) return error.SkipZigTest;
17060 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;17070 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1706117071
...@@ -17162,10 +17172,10 @@ const Coord2 = extern struct {...@@ -17162,10 +17172,10 @@ const Coord2 = extern struct {
1716217172
17163extern fn stdcall_coord2(Coord2, Coord2, Coord2) callconv(stdcall_callconv) Coord2;17173extern fn stdcall_coord2(Coord2, Coord2, Coord2) callconv(stdcall_callconv) Coord2;
17164test "Stdcall ABI structs" {17174test "Stdcall ABI structs" {
17175 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17176 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17165 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;17177 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
17166 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;17178 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
17167 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17168 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17169 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;17179 if (builtin.cpu.arch == .x86 and builtin.os.tag == .windows) return error.SkipZigTest;
1717017180
17171 const res = stdcall_coord2(17181 const res = stdcall_coord2(
...@@ -17179,9 +17189,9 @@ test "Stdcall ABI structs" {...@@ -17179,9 +17189,9 @@ test "Stdcall ABI structs" {
1717917189
17180extern fn stdcall_big_union(BigUnion) callconv(stdcall_callconv) void;17190extern fn stdcall_big_union(BigUnion) callconv(stdcall_callconv) void;
17181test "Stdcall ABI big union" {17191test "Stdcall ABI big union" {
17182 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
17183 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17184 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;17192 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17193 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17194 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
1718517195
17186 const x = BigUnion{17196 const x = BigUnion{
17187 .a = BigStruct{17197 .a = BigStruct{
...@@ -17253,10 +17263,10 @@ const byval_tail_callsite_attr = struct {...@@ -17253,10 +17263,10 @@ const byval_tail_callsite_attr = struct {
17253};17263};
1725417264
17255test "byval tail callsite attribute" {17265test "byval tail callsite attribute" {
17256 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
17257 if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest;
17258 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17259 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;17266 if (builtin.cpu.arch == .hexagon) return error.SkipZigTest;
17267 if (builtin.cpu.arch.isLoongArch()) return error.SkipZigTest;
17268 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
17269 if (builtin.cpu.arch.isPowerPC()) return error.SkipZigTest;
1726017270
17261 // Originally reported at https://github.com/ziglang/zig/issues/1629017271 // Originally reported at https://github.com/ziglang/zig/issues/16290
17262 // the bug was that the extern function had the byval attribute, but17272 // the bug was that the extern function had the byval attribute, but