mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 11:33:24 +02:00
Added FPOW, FEXP, FLOG to PromoteNode so that custom actions can be set to Promote for those operations.
Sorry, no test case yet llvm-svn: 148050
This commit is contained in:
parent
beb66de0f9
commit
1db82e3b84
@ -3592,6 +3592,24 @@ void SelectionDAGLegalize::PromoteNode(SDNode *Node) {
|
||||
Tmp1, Tmp2, Node->getOperand(2)));
|
||||
break;
|
||||
}
|
||||
case ISD::FPOW: {
|
||||
Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
|
||||
Tmp2 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(1));
|
||||
Tmp3 = DAG.getNode(ISD::FPOW, dl, NVT, Tmp1, Tmp2);
|
||||
Results.push_back(DAG.getNode(ISD::FP_ROUND, dl, OVT,
|
||||
Tmp3, DAG.getIntPtrConstant(0)));
|
||||
break;
|
||||
}
|
||||
case ISD::FLOG2:
|
||||
case ISD::FEXP2:
|
||||
case ISD::FLOG:
|
||||
case ISD::FEXP: {
|
||||
Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0));
|
||||
Tmp2 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1);
|
||||
Results.push_back(DAG.getNode(ISD::FP_ROUND, dl, OVT,
|
||||
Tmp2, DAG.getIntPtrConstant(0)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Replace the original node with the legalized result.
|
||||
|
Loading…
Reference in New Issue
Block a user