Move FCTIWZ handling out of the instruction selectors and into legalization,
getting them out of the business of making stack slots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23180 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 9a97829..082c876 100644
--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/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 @@
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 @@
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);