forked from OSchip/llvm-project
[CodeGen] Use standard -not gnueabi- naming for f16 libcalls on Darwin.
Other targets probably should as well. Since r237161, compiler-rt has both, but I don't see why anything other than gnueabi would use a gnueabi naming scheme. llvm-svn: 237324
This commit is contained in:
parent
9a43d5be2f
commit
6402ad27c0
|
@ -420,6 +420,14 @@ static void InitLibcallNames(const char **Names, const Triple &TT) {
|
||||||
// These are generally not available.
|
// These are generally not available.
|
||||||
Names[RTLIB::STACKPROTECTOR_CHECK_FAIL] = nullptr;
|
Names[RTLIB::STACKPROTECTOR_CHECK_FAIL] = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For f16/f32 conversions, Darwin uses the standard naming scheme, instead
|
||||||
|
// of the gnueabi-style __gnu_*_ieee.
|
||||||
|
// FIXME: What about other targets?
|
||||||
|
if (TT.isOSDarwin()) {
|
||||||
|
Names[RTLIB::FPEXT_F16_F32] = "__extendhfsf2";
|
||||||
|
Names[RTLIB::FPROUND_F32_F16] = "__truncsfhf2";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// InitLibcallCallingConvs - Set default libcall CallingConvs.
|
/// InitLibcallCallingConvs - Set default libcall CallingConvs.
|
||||||
|
|
|
@ -30,7 +30,7 @@ define void @test_bitcast_to_half(half* %addr, i16 %in) {
|
||||||
define float @test_extend32(half* %addr) {
|
define float @test_extend32(half* %addr) {
|
||||||
; CHECK-LABEL: test_extend32:
|
; CHECK-LABEL: test_extend32:
|
||||||
|
|
||||||
; CHECK-OLD: b.w ___gnu_h2f_ieee
|
; CHECK-OLD: b.w ___extendhfsf2
|
||||||
; CHECK-F16: vcvtb.f32.f16
|
; CHECK-F16: vcvtb.f32.f16
|
||||||
; CHECK-V8: vcvtb.f32.f16
|
; CHECK-V8: vcvtb.f32.f16
|
||||||
%val16 = load half, half* %addr
|
%val16 = load half, half* %addr
|
||||||
|
@ -41,7 +41,7 @@ define float @test_extend32(half* %addr) {
|
||||||
define double @test_extend64(half* %addr) {
|
define double @test_extend64(half* %addr) {
|
||||||
; CHECK-LABEL: test_extend64:
|
; CHECK-LABEL: test_extend64:
|
||||||
|
|
||||||
; CHECK-OLD: blx ___gnu_h2f_ieee
|
; CHECK-OLD: blx ___extendhfsf2
|
||||||
; CHECK-OLD: vcvt.f64.f32
|
; CHECK-OLD: vcvt.f64.f32
|
||||||
; CHECK-F16: vcvtb.f32.f16
|
; CHECK-F16: vcvtb.f32.f16
|
||||||
; CHECK-F16: vcvt.f64.f32
|
; CHECK-F16: vcvt.f64.f32
|
||||||
|
@ -54,7 +54,7 @@ define double @test_extend64(half* %addr) {
|
||||||
define void @test_trunc32(float %in, half* %addr) {
|
define void @test_trunc32(float %in, half* %addr) {
|
||||||
; CHECK-LABEL: test_trunc32:
|
; CHECK-LABEL: test_trunc32:
|
||||||
|
|
||||||
; CHECK-OLD: blx ___gnu_f2h_ieee
|
; CHECK-OLD: blx ___truncsfhf2
|
||||||
; CHECK-F16: vcvtb.f16.f32
|
; CHECK-F16: vcvtb.f16.f32
|
||||||
; CHECK-V8: vcvtb.f16.f32
|
; CHECK-V8: vcvtb.f16.f32
|
||||||
%val16 = fptrunc float %in to half
|
%val16 = fptrunc float %in to half
|
||||||
|
|
Loading…
Reference in New Issue