[llvm-commits] [llvm] r56028 - in /llvm/trunk: lib/CodeGen/SelectionDAG/LegalizeDAG.cpp test/CodeGen/ARM/fpow.ll

Evan Cheng evan.cheng at apple.com
Tue Sep 9 16:02:15 PDT 2008


Author: evancheng
Date: Tue Sep  9 18:02:14 2008
New Revision: 56028

URL: http://llvm.org/viewvc/llvm-project?rev=56028&view=rev
Log:
Legalizer was missing code that expand fpow to a libcall.

Added:
    llvm/trunk/test/CodeGen/ARM/fpow.ll
Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=56028&r1=56027&r2=56028&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Sep  9 18:02:14 2008
@@ -6602,13 +6602,9 @@
     Lo = ExpandLibCall(LC, Node, true, Hi);
     break;
   }
-  case ISD::FPOWI:
-    Lo = ExpandLibCall(GetFPLibCall(VT, RTLIB::POWI_F32,
-                                        RTLIB::POWI_F64,
-                                        RTLIB::POWI_F80,
-                                        RTLIB::POWI_PPCF128),
-                       Node, false, Hi);
-    break;
+  case ISD::FSQRT:
+  case ISD::FSIN:
+  case ISD::FCOS: 
   case ISD::FLOG:
   case ISD::FLOG2:
   case ISD::FLOG10:
@@ -6619,9 +6615,7 @@
   case ISD::FCEIL:
   case ISD::FRINT:
   case ISD::FNEARBYINT:
-  case ISD::FSQRT:
-  case ISD::FSIN:
-  case ISD::FCOS: {
+  case ISD::FPOW: {
     RTLIB::Libcall LC = RTLIB::UNKNOWN_LIBCALL;
     switch(Node->getOpcode()) {
     case ISD::FSQRT:
@@ -6676,6 +6670,14 @@
       LC = GetFPLibCall(VT, RTLIB::NEARBYINT_F32, RTLIB::NEARBYINT_F64,
                         RTLIB::NEARBYINT_F80, RTLIB::NEARBYINT_PPCF128);
       break;
+    case ISD::FPOW:
+      LC = GetFPLibCall(VT, RTLIB::POW_F32, RTLIB::POW_F64, RTLIB::POW_F80,
+                        RTLIB::POW_PPCF128);
+      break;
+    case ISD::FPOWI:
+      LC = GetFPLibCall(VT, RTLIB::POWI_F32, RTLIB::POWI_F64, RTLIB::POWI_F80,
+                        RTLIB::POWI_PPCF128);
+      break;
     default: assert(0 && "Unreachable!");
     }
     Lo = ExpandLibCall(LC, Node, false, Hi);

Added: llvm/trunk/test/CodeGen/ARM/fpow.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/fpow.ll?rev=56028&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/ARM/fpow.ll (added)
+++ llvm/trunk/test/CodeGen/ARM/fpow.ll Tue Sep  9 18:02:14 2008
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc -march=arm
+; RUN: llvm-as < %s | llc -march=thumb
+
+define double @t(double %x, double %y) nounwind notes(opt_size) {
+entry:
+	%0 = tail call double @llvm.pow.f64( double %x, double %y )		; <double> [#uses=1]
+	ret double %0
+}
+
+declare double @llvm.pow.f64(double, double) nounwind readonly





More information about the llvm-commits mailing list