[llvm] r237324 - [CodeGen] Use standard -not gnueabi- naming for f16 libcalls on Darwin.
Ahmed Bougacha
ahmed.bougacha at gmail.com
Wed May 13 18:00:51 PDT 2015
Author: ab
Date: Wed May 13 20:00:51 2015
New Revision: 237324
URL: http://llvm.org/viewvc/llvm-project?rev=237324&view=rev
Log:
[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.
Modified:
llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
llvm/trunk/test/CodeGen/ARM/half.ll
Modified: llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp?rev=237324&r1=237323&r2=237324&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp (original)
+++ llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp Wed May 13 20:00:51 2015
@@ -420,6 +420,14 @@ static void InitLibcallNames(const char
// These are generally not available.
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.
Modified: llvm/trunk/test/CodeGen/ARM/half.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/half.ll?rev=237324&r1=237323&r2=237324&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/half.ll (original)
+++ llvm/trunk/test/CodeGen/ARM/half.ll Wed May 13 20:00:51 2015
@@ -30,7 +30,7 @@ define void @test_bitcast_to_half(half*
define float @test_extend32(half* %addr) {
; CHECK-LABEL: test_extend32:
-; CHECK-OLD: b.w ___gnu_h2f_ieee
+; CHECK-OLD: b.w ___extendhfsf2
; CHECK-F16: vcvtb.f32.f16
; CHECK-V8: vcvtb.f32.f16
%val16 = load half, half* %addr
@@ -41,7 +41,7 @@ define float @test_extend32(half* %addr)
define double @test_extend64(half* %addr) {
; CHECK-LABEL: test_extend64:
-; CHECK-OLD: blx ___gnu_h2f_ieee
+; CHECK-OLD: blx ___extendhfsf2
; CHECK-OLD: vcvt.f64.f32
; CHECK-F16: vcvtb.f32.f16
; CHECK-F16: vcvt.f64.f32
@@ -54,7 +54,7 @@ define double @test_extend64(half* %addr
define void @test_trunc32(float %in, half* %addr) {
; CHECK-LABEL: test_trunc32:
-; CHECK-OLD: blx ___gnu_f2h_ieee
+; CHECK-OLD: blx ___truncsfhf2
; CHECK-F16: vcvtb.f16.f32
; CHECK-V8: vcvtb.f16.f32
%val16 = fptrunc float %in to half
More information about the llvm-commits
mailing list