diff --git a/test/c_abi/cfuncs.c b/test/c_abi/cfuncs.c index 0433423ef3..89f611c274 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 e37696a062..f1566c2ae3 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 93343468cb..e4a65a5479 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 = .{