diff --git a/test/c_abi/cfuncs.c b/test/c_abi/cfuncs.c index 0433423ef3d12dc4e5639ae6ca78c89babd2f7c8..89f611c274f24825199567073e705b8a5031babb 100644 --- a/test/c_abi/cfuncs.c +++ b/test/c_abi/cfuncs.c @@ -64,6 +64,10 @@ static void assert_or_panic(bool ok) { # define ZIG_NO_COMPLEX #endif +#if defined(__loongarch__) && defined(__loongarch_soft_float) +# define ZIG_NO_COMPLEX +#endif + #ifdef __powerpc__ # define ZIG_NO_COMPLEX #endif diff --git a/test/c_abi/main.zig b/test/c_abi/main.zig index e37696a06288d15b006be4dea52ae324ee3eb663..f1566c2ae379ee7fd944dbad0a553b6c2bebfc67 100644 --- a/test/c_abi/main.zig +++ b/test/c_abi/main.zig @@ -187,7 +187,8 @@ extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble; const complex_abi_compatible = builtin.cpu.arch != .x86 and !builtin.cpu.arch.isMIPS() and !builtin.cpu.arch.isArm() and !builtin.cpu.arch.isPowerPC32() and !builtin.cpu.arch.isRISCV() and builtin.cpu.arch != .hexagon and - builtin.cpu.arch != .s390x; + builtin.cpu.arch != .s390x and + !(builtin.cpu.arch.isLoongArch() and builtin.abi.float() == .soft); test "C ABI complex float" { if (!complex_abi_compatible) return error.SkipZigTest; @@ -5611,6 +5612,7 @@ test "C ABI pointer sized float struct" { if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; if (builtin.cpu.arch.isPowerPC32()) return error.SkipZigTest; if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest; + if (builtin.cpu.arch.isLoongArch() and builtin.abi.float() == .soft) return error.SkipZigTest; if (builtin.cpu.arch == .s390x) return error.SkipZigTest; c_ptr_size_float_struct(.{ .x = 1, .y = 2 }); diff --git a/test/tests.zig b/test/tests.zig index 93343468cb8327916e8b002ce3a3941d2732783a..e4a65a5479f02512b68cd7328ad55679d891463f 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -1764,6 +1764,13 @@ const c_abi_targets = blk: { .abi = .musl, }, }, + .{ + .target = .{ + .cpu_arch = .loongarch64, + .os_tag = .linux, + .abi = .muslsf, + }, + }, .{ .target = .{