diff options
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 17 |
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); |

