[llvm-commits] [llvm] r53285 - in /llvm/trunk/lib/CodeGen/SelectionDAG: LegalizeFloatTypes.cpp LegalizeTypes.h

Duncan Sands baldrick at free.fr
Wed Jul 9 04:11:49 PDT 2008


Author: baldrick
Date: Wed Jul  9 06:11:47 2008
New Revision: 53285

URL: http://llvm.org/viewvc/llvm-project?rev=53285&view=rev
Log:
LegalizeTypes support for powi soft float.

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h

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

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp Wed Jul  9 06:11:47 2008
@@ -71,9 +71,10 @@
     case ISD::SINT_TO_FP:
     case ISD::UINT_TO_FP:  R = SoftenFloatRes_XINT_TO_FP(N); break;
 
-    case ISD::FADD: R = SoftenFloatRes_FADD(N); break;
-    case ISD::FMUL: R = SoftenFloatRes_FMUL(N); break;
-    case ISD::FSUB: R = SoftenFloatRes_FSUB(N); break;
+    case ISD::FADD:  R = SoftenFloatRes_FADD(N); break;
+    case ISD::FMUL:  R = SoftenFloatRes_FMUL(N); break;
+    case ISD::FPOWI: R = SoftenFloatRes_FPOWI(N); break;
+    case ISD::FSUB:  R = SoftenFloatRes_FSUB(N); break;
   }
 
   // If R is null, the sub-method took care of registering the result.
@@ -201,6 +202,17 @@
   return MakeLibCall(LC, NVT, &Op, 1, false);
 }
 
+SDOperand DAGTypeLegalizer::SoftenFloatRes_FPOWI(SDNode *N) {
+  MVT NVT = TLI.getTypeToTransformTo(N->getValueType(0));
+  SDOperand Ops[2] = { GetSoftenedFloat(N->getOperand(0)), N->getOperand(1) };
+  return MakeLibCall(GetFPLibCall(N->getValueType(0),
+                                  RTLIB::POWI_F32,
+                                  RTLIB::POWI_F64,
+                                  RTLIB::POWI_F80,
+                                  RTLIB::POWI_PPCF128),
+                     NVT, Ops, 2, false);
+}
+
 SDOperand DAGTypeLegalizer::SoftenFloatRes_FSUB(SDNode *N) {
   MVT NVT = TLI.getTypeToTransformTo(N->getValueType(0));
   SDOperand Ops[2] = { GetSoftenedFloat(N->getOperand(0)),

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h?rev=53285&r1=53284&r2=53285&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h Wed Jul  9 06:11:47 2008
@@ -336,6 +336,7 @@
   SDOperand SoftenFloatRes_FMUL(SDNode *N);
   SDOperand SoftenFloatRes_FP_EXTEND(SDNode *N);
   SDOperand SoftenFloatRes_FP_ROUND(SDNode *N);
+  SDOperand SoftenFloatRes_FPOWI(SDNode *N);
   SDOperand SoftenFloatRes_FSUB(SDNode *N);
   SDOperand SoftenFloatRes_LOAD(SDNode *N);
   SDOperand SoftenFloatRes_SELECT(SDNode *N);





More information about the llvm-commits mailing list