From 2c5f54c8983ed8649c1a35742bd24e696d6e34b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 28 Apr 2025 12:02:15 +0200 Subject: [PATCH] compiler-rt: Add missing _Qp_sqrt export for sparc64. https://github.com/ziglang/zig/issues/23716 --- lib/compiler_rt/sqrt.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/compiler_rt/sqrt.zig b/lib/compiler_rt/sqrt.zig index 331606f0f4..5c8dcc1f5a 100644 --- a/lib/compiler_rt/sqrt.zig +++ b/lib/compiler_rt/sqrt.zig @@ -13,6 +13,8 @@ comptime { @export(&__sqrtx, .{ .name = "__sqrtx", .linkage = common.linkage, .visibility = common.visibility }); if (common.want_ppc_abi) { @export(&sqrtq, .{ .name = "sqrtf128", .linkage = common.linkage, .visibility = common.visibility }); + } else if (common.want_sparc_abi) { + @export(&_Qp_sqrt, .{ .name = "_Qp_sqrt", .linkage = common.linkage, .visibility = common.visibility }); } @export(&sqrtq, .{ .name = "sqrtq", .linkage = common.linkage, .visibility = common.visibility }); @export(&sqrtl, .{ .name = "sqrtl", .linkage = common.linkage, .visibility = common.visibility }); @@ -242,6 +244,10 @@ pub fn sqrtq(x: f128) callconv(.c) f128 { return sqrt(@floatCast(x)); } +fn _Qp_sqrt(c: *f128, a: *f128) callconv(.c) void { + c.* = sqrt(@floatCast(a.*)); +} + pub fn sqrtl(x: c_longdouble) callconv(.c) c_longdouble { switch (@typeInfo(c_longdouble).float.bits) { 16 => return __sqrth(x),