zig/lib/compiler_rt/truncsfhf2.zig
Andrew Kelley 30ef033693 compiler-rt: fix logic for choosing __gnu_{f2h,h2f}_ieee
wasm32-wasi-musl wants the standard symbol names however Linux requires
the `__gnu_*` flavors. I did not find any authoritative source on what
decides which symbol flavors to use. If we run into more trouble in the
future we can go back to having both.
2022-06-17 20:25:17 -07:00

27 lines
810 B
Zig

const common = @import("./common.zig");
const truncf = @import("./truncf.zig").truncf;
pub const panic = common.panic;
comptime {
if (common.gnu_f16_abi) {
@export(__gnu_f2h_ieee, .{ .name = "__gnu_f2h_ieee", .linkage = common.linkage });
} else if (common.want_aeabi) {
@export(__aeabi_f2h, .{ .name = "__aeabi_f2h", .linkage = common.linkage });
} else {
@export(__truncsfhf2, .{ .name = "__truncsfhf2", .linkage = common.linkage });
}
}
pub fn __truncsfhf2(a: f32) callconv(.C) common.F16T {
return @bitCast(common.F16T, truncf(f16, f32, a));
}
fn __gnu_f2h_ieee(a: f32) callconv(.C) common.F16T {
return @bitCast(common.F16T, truncf(f16, f32, a));
}
fn __aeabi_f2h(a: f32) callconv(.AAPCS) u16 {
return @bitCast(common.F16T, truncf(f16, f32, a));
}