| ... | @@ -13,6 +13,8 @@ comptime { | ... | @@ -13,6 +13,8 @@ comptime { |
| 13 | @export(&__sqrtx, .{ .name = "__sqrtx", .linkage = common.linkage, .visibility = common.visibility }); | 13 | @export(&__sqrtx, .{ .name = "__sqrtx", .linkage = common.linkage, .visibility = common.visibility }); |
| 14 | if (common.want_ppc_abi) { | 14 | if (common.want_ppc_abi) { |
| 15 | @export(&sqrtq, .{ .name = "sqrtf128", .linkage = common.linkage, .visibility = common.visibility }); | 15 | @export(&sqrtq, .{ .name = "sqrtf128", .linkage = common.linkage, .visibility = common.visibility }); |
| | 16 | } else if (common.want_sparc_abi) { |
| | 17 | @export(&_Qp_sqrt, .{ .name = "_Qp_sqrt", .linkage = common.linkage, .visibility = common.visibility }); |
| 16 | } | 18 | } |
| 17 | @export(&sqrtq, .{ .name = "sqrtq", .linkage = common.linkage, .visibility = common.visibility }); | 19 | @export(&sqrtq, .{ .name = "sqrtq", .linkage = common.linkage, .visibility = common.visibility }); |
| 18 | @export(&sqrtl, .{ .name = "sqrtl", .linkage = common.linkage, .visibility = common.visibility }); | 20 | @export(&sqrtl, .{ .name = "sqrtl", .linkage = common.linkage, .visibility = common.visibility }); |
| ... | @@ -242,6 +244,10 @@ pub fn sqrtq(x: f128) callconv(.C) f128 { | ... | @@ -242,6 +244,10 @@ pub fn sqrtq(x: f128) callconv(.C) f128 { |
| 242 | return sqrt(@floatCast(x)); | 244 | return sqrt(@floatCast(x)); |
| 243 | } | 245 | } |
| 244 | | 246 | |
| | 247 | fn _Qp_sqrt(c: *f128, a: *f128) callconv(.c) void { |
| | 248 | c.* = sqrt(@floatCast(a.*)); |
| | 249 | } |
| | 250 | |
| 245 | pub fn sqrtl(x: c_longdouble) callconv(.C) c_longdouble { | 251 | pub fn sqrtl(x: c_longdouble) callconv(.C) c_longdouble { |
| 246 | switch (@typeInfo(c_longdouble).float.bits) { | 252 | switch (@typeInfo(c_longdouble).float.bits) { |
| 247 | 16 => return __sqrth(x), | 253 | 16 => return __sqrth(x), |