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)); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits