Actually ARM / Mac OS X does have UINTTOFP_I64_F{64|32} libcalls.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 4 Nov 2008 22:19:55 +0000 (22:19 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 4 Nov 2008 22:19:55 +0000 (22:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58725 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/uint64tof64.ll [new file with mode: 0644]

index 721213ddc1061fa5556c9a3c0fd541e88bd5843e..c54ebdc0b0d92c4f3b986b287447892477a2061f 100644 (file)
@@ -41,10 +41,6 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
   Subtarget = &TM.getSubtarget<ARMSubtarget>();
 
   if (Subtarget->isTargetDarwin()) {
-    // Don't have these.
-    setLibcallName(RTLIB::UINTTOFP_I64_F32, NULL);
-    setLibcallName(RTLIB::UINTTOFP_I64_F64, NULL);
-
     // Uses VFP for Thumb libfuncs if available.
     if (Subtarget->isThumb() && Subtarget->hasVFP2()) {
       // Single-precision floating-point arithmetic.
diff --git a/test/CodeGen/ARM/uint64tof64.ll b/test/CodeGen/ARM/uint64tof64.ll
new file mode 100644 (file)
index 0000000..055c3c3
--- /dev/null
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc -mtriple=arm-apple-darwin -mattr=+vfp2
+
+       %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+       %struct.__sFILEX = type opaque
+       %struct.__sbuf = type { i8*, i32 }
+@"\01LC10" = external constant [54 x i8]               ; <[54 x i8]*> [#uses=1]
+
+define fastcc void @t() {
+entry:
+       %0 = load i64* null, align 4            ; <i64> [#uses=1]
+       %1 = uitofp i64 %0 to double            ; <double> [#uses=1]
+       %2 = fdiv double 0.000000e+00, %1               ; <double> [#uses=1]
+       %3 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* null, i8* getelementptr ([54 x i8]* @"\01LC10", i32 0, i32 0), i64 0, double %2)                ; <i32> [#uses=0]
+       ret void
+}
+
+declare i32 @fprintf(%struct.FILE*, i8*, ...)