[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp SelectionDAG.cpp SelectionDAGISel.cpp
Chris Lattner
lattner at cs.uiuc.edu
Fri Sep 8 23:03:44 PDT 2006
Changes in directory llvm/lib/CodeGen/SelectionDAG:
LegalizeDAG.cpp updated: 1.391 -> 1.392
SelectionDAG.cpp updated: 1.336 -> 1.337
SelectionDAGISel.cpp updated: 1.273 -> 1.274
---
Log message:
Implement the fpowi now by lowering to a libcall
---
Diffs of the changes: (+16 -1)
LegalizeDAG.cpp | 9 ++++++++-
SelectionDAG.cpp | 1 +
SelectionDAGISel.cpp | 7 +++++++
3 files changed, 16 insertions(+), 1 deletion(-)
Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.391 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.392
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.391 Fri Sep 8 19:20:27 2006
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Sat Sep 9 01:03:30 2006
@@ -2581,7 +2581,14 @@
break;
}
break;
-
+ case ISD::FPOWI: {
+ // We always lower FPOWI into a libcall. No target support it yet.
+ const char *FnName = Node->getValueType(0) == MVT::f32
+ ? "__powisf2" : "__powidf2";
+ SDOperand Dummy;
+ Result = ExpandLibCall(FnName, Node, Dummy);
+ break;
+ }
case ISD::BIT_CONVERT:
if (!isTypeLegal(Node->getOperand(0).getValueType())) {
Result = ExpandBIT_CONVERT(Node->getValueType(0), Node->getOperand(0));
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.336 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.337
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.336 Tue Aug 29 01:42:35 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Sat Sep 9 01:03:30 2006
@@ -2404,6 +2404,7 @@
case ISD::FSQRT: return "fsqrt";
case ISD::FSIN: return "fsin";
case ISD::FCOS: return "fcos";
+ case ISD::FPOWI: return "fpowi";
// Binary operators
case ISD::ADD: return "add";
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.273 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.274
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.273 Wed Sep 6 20:59:34 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Sat Sep 9 01:03:30 2006
@@ -1620,6 +1620,13 @@
getValue(I.getOperand(1)).getValueType(),
getValue(I.getOperand(1))));
return 0;
+ case Intrinsic::powi_f32:
+ case Intrinsic::powi_f64:
+ setValue(&I, DAG.getNode(ISD::FPOWI,
+ getValue(I.getOperand(1)).getValueType(),
+ getValue(I.getOperand(1)),
+ getValue(I.getOperand(2))));
+ return 0;
case Intrinsic::pcmarker: {
SDOperand Tmp = getValue(I.getOperand(1));
DAG.setRoot(DAG.getNode(ISD::PCMARKER, MVT::Other, getRoot(), Tmp));
More information about the llvm-commits
mailing list