summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 9a978295b84..082c876859b 100644
--- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -17,7 +17,6 @@
#include "PPC32ISelLowering.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineFunction.h"
-#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
@@ -793,6 +792,10 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
Select(N->getOperand(1)),
Select(N->getOperand(2)));
break;
+ case PPCISD::FCTIWZ:
+ CurDAG->SelectNodeTo(N, PPC::FCTIWZ, N->getValueType(0),
+ Select(N->getOperand(0)));
+ break;
case ISD::ADD: {
MVT::ValueType Ty = N->getValueType(0);
if (Ty == MVT::i32) {
@@ -1119,18 +1122,6 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
MVT::f64 == N->getOperand(0).getValueType() && "Illegal FP_ROUND");
CurDAG->SelectNodeTo(N, PPC::FRSP, MVT::f32, Select(N->getOperand(0)));
break;
- case ISD::FP_TO_SINT: {
- SDOperand In = Select(N->getOperand(0));
- In = CurDAG->getTargetNode(PPC::FCTIWZ, MVT::f64, In);
-
- int FrameIdx = BB->getParent()->getFrameInfo()->CreateStackObject(8, 8);
- SDOperand FI = CurDAG->getTargetFrameIndex(FrameIdx, MVT::f64);
- SDOperand ST = CurDAG->getTargetNode(PPC::STFD, MVT::Other, In,
- getI32Imm(0), FI);
- CurDAG->SelectNodeTo(N, PPC::LWZ, MVT::i32, MVT::Other,
- getI32Imm(4), FI, ST);
- break;
- }
case ISD::FNEG: {
SDOperand Val = Select(N->getOperand(0));
MVT::ValueType Ty = N->getValueType(0);
OpenPOWER on IntegriCloud