forked from OSchip/llvm-project
Implement the fpowi now by lowering to a libcall
llvm-svn: 30225
This commit is contained in:
parent
a4b7de8669
commit
f0359b343a
|
@ -2581,7 +2581,14 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
|||
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));
|
||||
|
|
|
@ -2404,6 +2404,7 @@ const char *SDNode::getOperationName(const SelectionDAG *G) const {
|
|||
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";
|
||||
|
|
|
@ -1620,6 +1620,13 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
|||
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));
|
||||
|
|
Loading…
Reference in New Issue