mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-22 23:24:59 +00:00
Make TargetLowering::getPointerTy() taking DataLayout as an argument
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one owned by the module. Reviewers: echristo Subscribers: jholewinski, ted, yaron.keren, rafael, llvm-commits Differential Revision: http://reviews.llvm.org/D11028 From: Mehdi Amini <mehdi.amini@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241775 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -351,8 +351,9 @@ bool PPCCTRLoops::mightUseCTR(const Triple &TT, BasicBlock *BB) {
|
||||
Opcode = ISD::FTRUNC; break;
|
||||
}
|
||||
|
||||
MVT VTy =
|
||||
TLI->getSimpleValueType(CI->getArgOperand(0)->getType(), true);
|
||||
auto &DL = CI->getModule()->getDataLayout();
|
||||
MVT VTy = TLI->getSimpleValueType(DL, CI->getArgOperand(0)->getType(),
|
||||
true);
|
||||
if (VTy == MVT::Other)
|
||||
return true;
|
||||
|
||||
|
@@ -262,7 +262,7 @@ static Optional<PPC::Predicate> getComparePred(CmpInst::Predicate Pred) {
|
||||
// fast-isel, and return its equivalent machine type in VT.
|
||||
// FIXME: Copied directly from ARM -- factor into base class?
|
||||
bool PPCFastISel::isTypeLegal(Type *Ty, MVT &VT) {
|
||||
EVT Evt = TLI.getValueType(Ty, true);
|
||||
EVT Evt = TLI.getValueType(DL, Ty, true);
|
||||
|
||||
// Only handle simple types.
|
||||
if (Evt == MVT::Other || !Evt.isSimple()) return false;
|
||||
@@ -324,12 +324,13 @@ bool PPCFastISel::PPCComputeAddress(const Value *Obj, Address &Addr) {
|
||||
return PPCComputeAddress(U->getOperand(0), Addr);
|
||||
case Instruction::IntToPtr:
|
||||
// Look past no-op inttoptrs.
|
||||
if (TLI.getValueType(U->getOperand(0)->getType()) == TLI.getPointerTy())
|
||||
if (TLI.getValueType(DL, U->getOperand(0)->getType()) ==
|
||||
TLI.getPointerTy(DL))
|
||||
return PPCComputeAddress(U->getOperand(0), Addr);
|
||||
break;
|
||||
case Instruction::PtrToInt:
|
||||
// Look past no-op ptrtoints.
|
||||
if (TLI.getValueType(U->getType()) == TLI.getPointerTy())
|
||||
if (TLI.getValueType(DL, U->getType()) == TLI.getPointerTy(DL))
|
||||
return PPCComputeAddress(U->getOperand(0), Addr);
|
||||
break;
|
||||
case Instruction::GetElementPtr: {
|
||||
@@ -799,7 +800,7 @@ bool PPCFastISel::SelectBranch(const Instruction *I) {
|
||||
bool PPCFastISel::PPCEmitCmp(const Value *SrcValue1, const Value *SrcValue2,
|
||||
bool IsZExt, unsigned DestReg) {
|
||||
Type *Ty = SrcValue1->getType();
|
||||
EVT SrcEVT = TLI.getValueType(Ty, true);
|
||||
EVT SrcEVT = TLI.getValueType(DL, Ty, true);
|
||||
if (!SrcEVT.isSimple())
|
||||
return false;
|
||||
MVT SrcVT = SrcEVT.getSimpleVT();
|
||||
@@ -893,8 +894,8 @@ bool PPCFastISel::PPCEmitCmp(const Value *SrcValue1, const Value *SrcValue2,
|
||||
// Attempt to fast-select a floating-point extend instruction.
|
||||
bool PPCFastISel::SelectFPExt(const Instruction *I) {
|
||||
Value *Src = I->getOperand(0);
|
||||
EVT SrcVT = TLI.getValueType(Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(I->getType(), true);
|
||||
EVT SrcVT = TLI.getValueType(DL, Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(DL, I->getType(), true);
|
||||
|
||||
if (SrcVT != MVT::f32 || DestVT != MVT::f64)
|
||||
return false;
|
||||
@@ -911,8 +912,8 @@ bool PPCFastISel::SelectFPExt(const Instruction *I) {
|
||||
// Attempt to fast-select a floating-point truncate instruction.
|
||||
bool PPCFastISel::SelectFPTrunc(const Instruction *I) {
|
||||
Value *Src = I->getOperand(0);
|
||||
EVT SrcVT = TLI.getValueType(Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(I->getType(), true);
|
||||
EVT SrcVT = TLI.getValueType(DL, Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(DL, I->getType(), true);
|
||||
|
||||
if (SrcVT != MVT::f64 || DestVT != MVT::f32)
|
||||
return false;
|
||||
@@ -992,7 +993,7 @@ bool PPCFastISel::SelectIToFP(const Instruction *I, bool IsSigned) {
|
||||
return false;
|
||||
|
||||
Value *Src = I->getOperand(0);
|
||||
EVT SrcEVT = TLI.getValueType(Src->getType(), true);
|
||||
EVT SrcEVT = TLI.getValueType(DL, Src->getType(), true);
|
||||
if (!SrcEVT.isSimple())
|
||||
return false;
|
||||
|
||||
@@ -1157,7 +1158,7 @@ bool PPCFastISel::SelectFPToI(const Instruction *I, bool IsSigned) {
|
||||
// Attempt to fast-select a binary integer operation that isn't already
|
||||
// handled automatically.
|
||||
bool PPCFastISel::SelectBinaryIntOp(const Instruction *I, unsigned ISDOpcode) {
|
||||
EVT DestVT = TLI.getValueType(I->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(DL, I->getType(), true);
|
||||
|
||||
// We can get here in the case when we have a binary operation on a non-legal
|
||||
// type and the target independent selector doesn't know how to handle it.
|
||||
@@ -1641,7 +1642,7 @@ bool PPCFastISel::SelectRet(const Instruction *I) {
|
||||
RetRegs.push_back(VA.getLocReg());
|
||||
unsigned SrcReg = Reg + VA.getValNo();
|
||||
|
||||
EVT RVEVT = TLI.getValueType(RV->getType());
|
||||
EVT RVEVT = TLI.getValueType(DL, RV->getType());
|
||||
if (!RVEVT.isSimple())
|
||||
return false;
|
||||
MVT RVVT = RVEVT.getSimpleVT();
|
||||
@@ -1769,8 +1770,8 @@ bool PPCFastISel::SelectIndirectBr(const Instruction *I) {
|
||||
// Attempt to fast-select an integer truncate instruction.
|
||||
bool PPCFastISel::SelectTrunc(const Instruction *I) {
|
||||
Value *Src = I->getOperand(0);
|
||||
EVT SrcVT = TLI.getValueType(Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(I->getType(), true);
|
||||
EVT SrcVT = TLI.getValueType(DL, Src->getType(), true);
|
||||
EVT DestVT = TLI.getValueType(DL, I->getType(), true);
|
||||
|
||||
if (SrcVT != MVT::i64 && SrcVT != MVT::i32 && SrcVT != MVT::i16)
|
||||
return false;
|
||||
@@ -1806,8 +1807,8 @@ bool PPCFastISel::SelectIntExt(const Instruction *I) {
|
||||
if (!SrcReg) return false;
|
||||
|
||||
EVT SrcEVT, DestEVT;
|
||||
SrcEVT = TLI.getValueType(SrcTy, true);
|
||||
DestEVT = TLI.getValueType(DestTy, true);
|
||||
SrcEVT = TLI.getValueType(DL, SrcTy, true);
|
||||
DestEVT = TLI.getValueType(DL, DestTy, true);
|
||||
if (!SrcEVT.isSimple())
|
||||
return false;
|
||||
if (!DestEVT.isSimple())
|
||||
@@ -2127,7 +2128,7 @@ unsigned PPCFastISel::PPCMaterializeInt(const Constant *C, MVT VT,
|
||||
// Materialize a constant into a register, and return the register
|
||||
// number (or zero if we failed to handle it).
|
||||
unsigned PPCFastISel::fastMaterializeConstant(const Constant *C) {
|
||||
EVT CEVT = TLI.getValueType(C->getType(), true);
|
||||
EVT CEVT = TLI.getValueType(DL, C->getType(), true);
|
||||
|
||||
// Only handle simple types.
|
||||
if (!CEVT.isSimple()) return 0;
|
||||
|
@@ -102,7 +102,8 @@ namespace {
|
||||
|
||||
/// getSmallIPtrImm - Return a target constant of pointer type.
|
||||
inline SDValue getSmallIPtrImm(unsigned Imm, SDLoc dl) {
|
||||
return CurDAG->getTargetConstant(Imm, dl, PPCLowering->getPointerTy());
|
||||
return CurDAG->getTargetConstant(
|
||||
Imm, dl, PPCLowering->getPointerTy(CurDAG->getDataLayout()));
|
||||
}
|
||||
|
||||
/// isRotateAndMask - Returns true if Mask and Shift can be folded into a
|
||||
@@ -313,7 +314,7 @@ SDNode *PPCDAGToDAGISel::getGlobalBaseReg() {
|
||||
const Module *M = MF->getFunction()->getParent();
|
||||
DebugLoc dl;
|
||||
|
||||
if (PPCLowering->getPointerTy() == MVT::i32) {
|
||||
if (PPCLowering->getPointerTy(CurDAG->getDataLayout()) == MVT::i32) {
|
||||
if (PPCSubTarget->isTargetELF()) {
|
||||
GlobalBaseReg = PPC::R30;
|
||||
if (M->getPICLevel() == PICLevel::Small) {
|
||||
@@ -342,7 +343,8 @@ SDNode *PPCDAGToDAGISel::getGlobalBaseReg() {
|
||||
}
|
||||
}
|
||||
return CurDAG->getRegister(GlobalBaseReg,
|
||||
PPCLowering->getPointerTy()).getNode();
|
||||
PPCLowering->getPointerTy(CurDAG->getDataLayout()))
|
||||
.getNode();
|
||||
}
|
||||
|
||||
/// isIntS16Immediate - This method tests to see if the node is either a 32-bit
|
||||
@@ -2205,7 +2207,8 @@ SDNode *PPCDAGToDAGISel::SelectSETCC(SDNode *N) {
|
||||
SDLoc dl(N);
|
||||
unsigned Imm;
|
||||
ISD::CondCode CC = cast<CondCodeSDNode>(N->getOperand(2))->get();
|
||||
EVT PtrVT = CurDAG->getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT =
|
||||
CurDAG->getTargetLoweringInfo().getPointerTy(CurDAG->getDataLayout());
|
||||
bool isPPC64 = (PtrVT == MVT::i64);
|
||||
|
||||
if (!PPCSubTarget->useCRBits() &&
|
||||
@@ -2468,10 +2471,11 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
|
||||
SDValue Chain = LD->getChain();
|
||||
SDValue Base = LD->getBasePtr();
|
||||
SDValue Ops[] = { Offset, Base, Chain };
|
||||
return transferMemOperands(N, CurDAG->getMachineNode(Opcode, dl,
|
||||
LD->getValueType(0),
|
||||
PPCLowering->getPointerTy(),
|
||||
MVT::Other, Ops));
|
||||
return transferMemOperands(
|
||||
N, CurDAG->getMachineNode(
|
||||
Opcode, dl, LD->getValueType(0),
|
||||
PPCLowering->getPointerTy(CurDAG->getDataLayout()), MVT::Other,
|
||||
Ops));
|
||||
} else {
|
||||
unsigned Opcode;
|
||||
bool isSExt = LD->getExtensionType() == ISD::SEXTLOAD;
|
||||
@@ -2506,10 +2510,11 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
|
||||
SDValue Chain = LD->getChain();
|
||||
SDValue Base = LD->getBasePtr();
|
||||
SDValue Ops[] = { Base, Offset, Chain };
|
||||
return transferMemOperands(N, CurDAG->getMachineNode(Opcode, dl,
|
||||
LD->getValueType(0),
|
||||
PPCLowering->getPointerTy(),
|
||||
MVT::Other, Ops));
|
||||
return transferMemOperands(
|
||||
N, CurDAG->getMachineNode(
|
||||
Opcode, dl, LD->getValueType(0),
|
||||
PPCLowering->getPointerTy(CurDAG->getDataLayout()), MVT::Other,
|
||||
Ops));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2662,7 +2667,8 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
|
||||
}
|
||||
case ISD::SELECT_CC: {
|
||||
ISD::CondCode CC = cast<CondCodeSDNode>(N->getOperand(4))->get();
|
||||
EVT PtrVT = CurDAG->getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT =
|
||||
CurDAG->getTargetLoweringInfo().getPointerTy(CurDAG->getDataLayout());
|
||||
bool isPPC64 = (PtrVT == MVT::i64);
|
||||
|
||||
// If this is a select of i1 operands, we'll pattern match it.
|
||||
@@ -2915,7 +2921,9 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
|
||||
// Generate a PIC-safe GOT reference.
|
||||
assert(!PPCSubTarget->isPPC64() && PPCSubTarget->isSVR4ABI() &&
|
||||
"PPCISD::PPC32_PICGOT is only supported for 32-bit SVR4");
|
||||
return CurDAG->SelectNodeTo(N, PPC::PPC32PICGOT, PPCLowering->getPointerTy(), MVT::i32);
|
||||
return CurDAG->SelectNodeTo(
|
||||
N, PPC::PPC32PICGOT, PPCLowering->getPointerTy(CurDAG->getDataLayout()),
|
||||
MVT::i32);
|
||||
}
|
||||
case PPCISD::VADD_SPLAT: {
|
||||
// This expands into one of three sequences, depending on whether
|
||||
|
@@ -1055,7 +1055,8 @@ const char *PPCTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EVT PPCTargetLowering::getSetCCResultType(LLVMContext &C, EVT VT) const {
|
||||
EVT PPCTargetLowering::getSetCCResultType(const DataLayout &DL, LLVMContext &C,
|
||||
EVT VT) const {
|
||||
if (!VT.isVector())
|
||||
return Subtarget.useCRBits() ? MVT::i1 : MVT::i32;
|
||||
|
||||
@@ -1796,7 +1797,7 @@ bool PPCTargetLowering::SelectAddressRegImm(SDValue N, SDValue &Disp,
|
||||
}
|
||||
}
|
||||
|
||||
Disp = DAG.getTargetConstant(0, dl, getPointerTy());
|
||||
Disp = DAG.getTargetConstant(0, dl, getPointerTy(DAG.getDataLayout()));
|
||||
if (FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(N)) {
|
||||
Base = DAG.getTargetFrameIndex(FI->getIndex(), N.getValueType());
|
||||
fixupFuncForFI(DAG, FI->getIndex(), N.getValueType());
|
||||
@@ -2084,7 +2085,7 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddress(SDValue Op,
|
||||
GlobalAddressSDNode *GA = cast<GlobalAddressSDNode>(Op);
|
||||
SDLoc dl(GA);
|
||||
const GlobalValue *GV = GA->getGlobal();
|
||||
EVT PtrVT = getPointerTy();
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
bool is64bit = Subtarget.isPPC64();
|
||||
const Module *M = DAG.getMachineFunction().getFunction()->getParent();
|
||||
PICLevel::Level picLevel = M->getPICLevel();
|
||||
@@ -2270,7 +2271,7 @@ SDValue PPCTargetLowering::LowerVAARG(SDValue Op, SelectionDAG &DAG,
|
||||
const PPCSubtarget &Subtarget) const {
|
||||
SDNode *Node = Op.getNode();
|
||||
EVT VT = Node->getValueType(0);
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
SDValue InChain = Node->getOperand(0);
|
||||
SDValue VAListPtr = Node->getOperand(1);
|
||||
const Value *SV = cast<SrcValueSDNode>(Node->getOperand(2))->getValue();
|
||||
@@ -2399,7 +2400,7 @@ SDValue PPCTargetLowering::LowerINIT_TRAMPOLINE(SDValue Op,
|
||||
SDValue Nest = Op.getOperand(3); // 'nest' parameter value
|
||||
SDLoc dl(Op);
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
bool isPPC64 = (PtrVT == MVT::i64);
|
||||
Type *IntPtrTy =
|
||||
DAG.getTargetLoweringInfo().getDataLayout()->getIntPtrType(
|
||||
@@ -2440,7 +2441,7 @@ SDValue PPCTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG,
|
||||
if (Subtarget.isDarwinABI() || Subtarget.isPPC64()) {
|
||||
// vastart just stores the address of the VarArgsFrameIndex slot into the
|
||||
// memory location argument.
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
SDValue FR = DAG.getFrameIndex(FuncInfo->getVarArgsFrameIndex(), PtrVT);
|
||||
const Value *SV = cast<SrcValueSDNode>(Op.getOperand(2))->getValue();
|
||||
return DAG.getStore(Op.getOperand(0), dl, FR, Op.getOperand(1),
|
||||
@@ -2476,8 +2477,7 @@ SDValue PPCTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG,
|
||||
SDValue ArgGPR = DAG.getConstant(FuncInfo->getVarArgsNumGPR(), dl, MVT::i32);
|
||||
SDValue ArgFPR = DAG.getConstant(FuncInfo->getVarArgsNumFPR(), dl, MVT::i32);
|
||||
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
|
||||
SDValue StackOffsetFI = DAG.getFrameIndex(FuncInfo->getVarArgsStackOffset(),
|
||||
PtrVT);
|
||||
@@ -2797,7 +2797,7 @@ PPCTargetLowering::LowerFormalArguments_32SVR4(
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
PPCFunctionInfo *FuncInfo = MF.getInfo<PPCFunctionInfo>();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
// Potential tail calls could cause overwriting of argument stack slots.
|
||||
bool isImmutable = !(getTargetMachine().Options.GuaranteedTailCallOpt &&
|
||||
(CallConv == CallingConv::Fast));
|
||||
@@ -3023,7 +3023,7 @@ PPCTargetLowering::LowerFormalArguments_64SVR4(
|
||||
assert(!(CallConv == CallingConv::Fast && isVarArg) &&
|
||||
"fastcc not supported on varargs functions");
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
// Potential tail calls could cause overwriting of argument stack slots.
|
||||
bool isImmutable = !(getTargetMachine().Options.GuaranteedTailCallOpt &&
|
||||
(CallConv == CallingConv::Fast));
|
||||
@@ -3425,7 +3425,7 @@ PPCTargetLowering::LowerFormalArguments_Darwin(
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
PPCFunctionInfo *FuncInfo = MF.getInfo<PPCFunctionInfo>();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
bool isPPC64 = PtrVT == MVT::i64;
|
||||
// Potential tail calls could cause overwriting of argument stack slots.
|
||||
bool isImmutable = !(getTargetMachine().Options.GuaranteedTailCallOpt &&
|
||||
@@ -3845,7 +3845,8 @@ static SDNode *isBLACompatibleAddress(SDValue Op, SelectionDAG &DAG) {
|
||||
return nullptr; // Top 6 bits have to be sext of immediate.
|
||||
|
||||
return DAG.getConstant((int)C->getZExtValue() >> 2, SDLoc(Op),
|
||||
DAG.getTargetLoweringInfo().getPointerTy()).getNode();
|
||||
DAG.getTargetLoweringInfo().getPointerTy(
|
||||
DAG.getDataLayout())).getNode();
|
||||
}
|
||||
|
||||
namespace {
|
||||
@@ -3991,7 +3992,7 @@ LowerMemOpCallTo(SelectionDAG &DAG, MachineFunction &MF, SDValue Chain,
|
||||
bool isVector, SmallVectorImpl<SDValue> &MemOpChains,
|
||||
SmallVectorImpl<TailCallArgumentInfo> &TailCallArguments,
|
||||
SDLoc dl) {
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
if (!isTailCall) {
|
||||
if (isVector) {
|
||||
SDValue StackPtr;
|
||||
@@ -4062,7 +4063,7 @@ unsigned PrepareCall(SelectionDAG &DAG, SDValue &Callee, SDValue &InFlag,
|
||||
bool isSVR4ABI = Subtarget.isSVR4ABI();
|
||||
bool isELFv2ABI = Subtarget.isELFv2ABI();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
NodeTys.push_back(MVT::Other); // Returns a chain
|
||||
NodeTys.push_back(MVT::Glue); // Returns a flag for retval copy to use.
|
||||
|
||||
@@ -4379,7 +4380,7 @@ PPCTargetLowering::FinishCall(CallingConv::ID CallConv, SDLoc dl,
|
||||
// allocated and an unnecessary move instruction being generated.
|
||||
CallOpc = PPCISD::BCTRL_LOAD_TOC;
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
SDValue StackPtr = DAG.getRegister(PPC::X1, PtrVT);
|
||||
unsigned TOCSaveOffset = Subtarget.getFrameLowering()->getTOCSaveOffset();
|
||||
SDValue TOCOff = DAG.getIntPtrConstant(TOCSaveOffset, dl);
|
||||
@@ -4584,7 +4585,8 @@ PPCTargetLowering::LowerCall_32SVR4(SDValue Chain, SDValue Callee,
|
||||
unsigned LocMemOffset = ByValVA.getLocMemOffset();
|
||||
|
||||
SDValue PtrOff = DAG.getIntPtrConstant(LocMemOffset, dl);
|
||||
PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(), StackPtr, PtrOff);
|
||||
PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(MF.getDataLayout()),
|
||||
StackPtr, PtrOff);
|
||||
|
||||
// Create a copy of the argument in the local area of the current
|
||||
// stack frame.
|
||||
@@ -4621,7 +4623,8 @@ PPCTargetLowering::LowerCall_32SVR4(SDValue Chain, SDValue Callee,
|
||||
|
||||
if (!isTailCall) {
|
||||
SDValue PtrOff = DAG.getIntPtrConstant(LocMemOffset, dl);
|
||||
PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(), StackPtr, PtrOff);
|
||||
PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(MF.getDataLayout()),
|
||||
StackPtr, PtrOff);
|
||||
|
||||
MemOpChains.push_back(DAG.getStore(Chain, dl, Arg, PtrOff,
|
||||
MachinePointerInfo(),
|
||||
@@ -4702,7 +4705,7 @@ PPCTargetLowering::LowerCall_64SVR4(SDValue Chain, SDValue Callee,
|
||||
bool isLittleEndian = Subtarget.isLittleEndian();
|
||||
unsigned NumOps = Outs.size();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
unsigned PtrByteSize = 8;
|
||||
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
@@ -5318,7 +5321,7 @@ PPCTargetLowering::LowerCall_Darwin(SDValue Chain, SDValue Callee,
|
||||
|
||||
unsigned NumOps = Outs.size();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
bool isPPC64 = PtrVT == MVT::i64;
|
||||
unsigned PtrByteSize = isPPC64 ? 8 : 4;
|
||||
|
||||
@@ -5762,7 +5765,7 @@ SDValue PPCTargetLowering::LowerSTACKRESTORE(SDValue Op, SelectionDAG &DAG,
|
||||
SDLoc dl(Op);
|
||||
|
||||
// Get the corect type for pointers.
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
|
||||
// Construct the stack pointer operand.
|
||||
bool isPPC64 = Subtarget.isPPC64();
|
||||
@@ -5792,7 +5795,7 @@ SDValue
|
||||
PPCTargetLowering::getReturnAddrFrameIndex(SelectionDAG & DAG) const {
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
bool isPPC64 = Subtarget.isPPC64();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
|
||||
// Get current frame pointer save index. The users of this index will be
|
||||
// primarily DYNALLOC instructions.
|
||||
@@ -5815,7 +5818,7 @@ SDValue
|
||||
PPCTargetLowering::getFramePointerFrameIndex(SelectionDAG & DAG) const {
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
bool isPPC64 = Subtarget.isPPC64();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
|
||||
// Get current frame pointer save index. The users of this index will be
|
||||
// primarily DYNALLOC instructions.
|
||||
@@ -5843,7 +5846,7 @@ SDValue PPCTargetLowering::LowerDYNAMIC_STACKALLOC(SDValue Op,
|
||||
SDLoc dl(Op);
|
||||
|
||||
// Get the corect type for pointers.
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
// Negate the size.
|
||||
SDValue NegSize = DAG.getNode(ISD::SUB, dl, PtrVT,
|
||||
DAG.getConstant(0, dl, PtrVT), Size);
|
||||
@@ -5886,8 +5889,9 @@ SDValue PPCTargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue BasePtr = LD->getBasePtr();
|
||||
MachineMemOperand *MMO = LD->getMemOperand();
|
||||
|
||||
SDValue NewLD = DAG.getExtLoad(ISD::EXTLOAD, dl, getPointerTy(), Chain,
|
||||
BasePtr, MVT::i8, MMO);
|
||||
SDValue NewLD =
|
||||
DAG.getExtLoad(ISD::EXTLOAD, dl, getPointerTy(DAG.getDataLayout()), Chain,
|
||||
BasePtr, MVT::i8, MMO);
|
||||
SDValue Result = DAG.getNode(ISD::TRUNCATE, dl, MVT::i1, NewLD);
|
||||
|
||||
SDValue Ops[] = { Result, SDValue(NewLD.getNode(), 1) };
|
||||
@@ -5911,7 +5915,8 @@ SDValue PPCTargetLowering::LowerSTORE(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue Value = ST->getValue();
|
||||
MachineMemOperand *MMO = ST->getMemOperand();
|
||||
|
||||
Value = DAG.getNode(ISD::ZERO_EXTEND, dl, getPointerTy(), Value);
|
||||
Value = DAG.getNode(ISD::ZERO_EXTEND, dl, getPointerTy(DAG.getDataLayout()),
|
||||
Value);
|
||||
return DAG.getTruncStore(Chain, dl, Value, BasePtr, MVT::i8, MMO);
|
||||
}
|
||||
|
||||
@@ -6372,7 +6377,7 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
||||
SINT.getOpcode() == ISD::ZERO_EXTEND)) &&
|
||||
SINT.getOperand(0).getValueType() == MVT::i32) {
|
||||
MachineFrameInfo *FrameInfo = MF.getFrameInfo();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(DAG.getDataLayout());
|
||||
|
||||
int FrameIdx = FrameInfo->CreateStackObject(4, 4, false);
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
@@ -6417,7 +6422,7 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
|
||||
// then lfd it and fcfid it.
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MachineFrameInfo *FrameInfo = MF.getFrameInfo();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
|
||||
SDValue Ld;
|
||||
if (Subtarget.hasLFIWAX() || Subtarget.hasFPCVT()) {
|
||||
@@ -6504,7 +6509,7 @@ SDValue PPCTargetLowering::LowerFLT_ROUNDS_(SDValue Op,
|
||||
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
EVT VT = Op.getValueType();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
|
||||
// Save FP Control Word to register
|
||||
EVT NodeTys[] = {
|
||||
@@ -6725,7 +6730,7 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
EVT PtrVT = getPointerTy();
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
assert(BVN->getNumOperands() == 4 &&
|
||||
@@ -6758,9 +6763,9 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
|
||||
}
|
||||
|
||||
Constant *CP = ConstantVector::get(CV);
|
||||
SDValue CPIdx = DAG.getConstantPool(CP, getPointerTy(),
|
||||
16 /* alignment */);
|
||||
|
||||
SDValue CPIdx = DAG.getConstantPool(CP, getPointerTy(DAG.getDataLayout()),
|
||||
16 /* alignment */);
|
||||
|
||||
SmallVector<SDValue, 2> Ops;
|
||||
Ops.push_back(DAG.getEntryNode());
|
||||
Ops.push_back(CPIdx);
|
||||
@@ -7451,7 +7456,7 @@ SDValue PPCTargetLowering::LowerSCALAR_TO_VECTOR(SDValue Op,
|
||||
// Create a stack slot that is 16-byte aligned.
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
EVT PtrVT = getPointerTy();
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
// Store the input value into Value#0 of the stack slot.
|
||||
@@ -7497,7 +7502,7 @@ SDValue PPCTargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
EVT PtrVT = getPointerTy();
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
SDValue StoreChain = DAG.getEntryNode();
|
||||
@@ -7649,9 +7654,9 @@ SDValue PPCTargetLowering::LowerVectorStore(SDValue Op,
|
||||
|
||||
SmallVector<SDValue, 8> Stores;
|
||||
for (unsigned Idx = 0; Idx < 4; ++Idx) {
|
||||
SDValue Ex =
|
||||
DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, ScalarVT, Value,
|
||||
DAG.getConstant(Idx, dl, getVectorIdxTy()));
|
||||
SDValue Ex = DAG.getNode(
|
||||
ISD::EXTRACT_VECTOR_ELT, dl, ScalarVT, Value,
|
||||
DAG.getConstant(Idx, dl, getVectorIdxTy(DAG.getDataLayout())));
|
||||
SDValue Store;
|
||||
if (ScalarVT != ScalarMemVT)
|
||||
Store =
|
||||
@@ -7713,7 +7718,7 @@ SDValue PPCTargetLowering::LowerVectorStore(SDValue Op,
|
||||
MachineFrameInfo *FrameInfo = DAG.getMachineFunction().getFrameInfo();
|
||||
int FrameIdx = FrameInfo->CreateStackObject(16, 16, false);
|
||||
MachinePointerInfo PtrInfo = MachinePointerInfo::getFixedStack(FrameIdx);
|
||||
EVT PtrVT = getPointerTy();
|
||||
EVT PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
SDValue FIdx = DAG.getFrameIndex(FrameIdx, PtrVT);
|
||||
|
||||
SmallVector<SDValue, 2> Ops;
|
||||
@@ -7918,7 +7923,8 @@ void PPCTargetLowering::ReplaceNodeResults(SDNode *N,
|
||||
|
||||
assert(N->getValueType(0) == MVT::i1 &&
|
||||
"Unexpected result type for CTR decrement intrinsic");
|
||||
EVT SVT = getSetCCResultType(*DAG.getContext(), N->getValueType(0));
|
||||
EVT SVT = getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(),
|
||||
N->getValueType(0));
|
||||
SDVTList VTs = DAG.getVTList(SVT, MVT::Other);
|
||||
SDValue NewInt = DAG.getNode(N->getOpcode(), dl, VTs, N->getOperand(0),
|
||||
N->getOperand(1));
|
||||
@@ -8246,7 +8252,7 @@ PPCTargetLowering::emitEHSjLjSetJmp(MachineInstr *MI,
|
||||
unsigned mainDstReg = MRI.createVirtualRegister(RC);
|
||||
unsigned restoreDstReg = MRI.createVirtualRegister(RC);
|
||||
|
||||
MVT PVT = getPointerTy();
|
||||
MVT PVT = getPointerTy(MF->getDataLayout());
|
||||
assert((PVT == MVT::i64 || PVT == MVT::i32) &&
|
||||
"Invalid Pointer Size!");
|
||||
// For v = setjmp(buf), we generate
|
||||
@@ -8384,7 +8390,7 @@ PPCTargetLowering::emitEHSjLjLongJmp(MachineInstr *MI,
|
||||
MachineInstr::mmo_iterator MMOBegin = MI->memoperands_begin();
|
||||
MachineInstr::mmo_iterator MMOEnd = MI->memoperands_end();
|
||||
|
||||
MVT PVT = getPointerTy();
|
||||
MVT PVT = getPointerTy(MF->getDataLayout());
|
||||
assert((PVT == MVT::i64 || PVT == MVT::i32) &&
|
||||
"Invalid Pointer Size!");
|
||||
|
||||
@@ -10217,7 +10223,8 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
2*MemVT.getStoreSize()-1);
|
||||
|
||||
// Create the new base load.
|
||||
SDValue LDXIntID = DAG.getTargetConstant(IntrLD, dl, getPointerTy());
|
||||
SDValue LDXIntID =
|
||||
DAG.getTargetConstant(IntrLD, dl, getPointerTy(MF.getDataLayout()));
|
||||
SDValue BaseLoadOps[] = { Chain, LDXIntID, Ptr };
|
||||
SDValue BaseLoad =
|
||||
DAG.getMemIntrinsicNode(ISD::INTRINSIC_W_CHAIN, dl,
|
||||
@@ -10241,7 +10248,8 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
if (!findConsecutiveLoad(LD, DAG))
|
||||
--IncValue;
|
||||
|
||||
SDValue Increment = DAG.getConstant(IncValue, dl, getPointerTy());
|
||||
SDValue Increment =
|
||||
DAG.getConstant(IncValue, dl, getPointerTy(MF.getDataLayout()));
|
||||
Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr, Increment);
|
||||
|
||||
MachineMemOperand *ExtraMMO =
|
||||
@@ -10975,22 +10983,22 @@ SDValue PPCTargetLowering::LowerRETURNADDR(SDValue Op,
|
||||
PPCFunctionInfo *FuncInfo = MF.getInfo<PPCFunctionInfo>();
|
||||
FuncInfo->setLRStoreRequired();
|
||||
bool isPPC64 = Subtarget.isPPC64();
|
||||
auto PtrVT = getPointerTy(MF.getDataLayout());
|
||||
|
||||
if (Depth > 0) {
|
||||
SDValue FrameAddr = LowerFRAMEADDR(Op, DAG);
|
||||
SDValue Offset =
|
||||
DAG.getConstant(Subtarget.getFrameLowering()->getReturnSaveOffset(), dl,
|
||||
isPPC64 ? MVT::i64 : MVT::i32);
|
||||
return DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(),
|
||||
DAG.getNode(ISD::ADD, dl, getPointerTy(),
|
||||
FrameAddr, Offset),
|
||||
return DAG.getLoad(PtrVT, dl, DAG.getEntryNode(),
|
||||
DAG.getNode(ISD::ADD, dl, PtrVT, FrameAddr, Offset),
|
||||
MachinePointerInfo(), false, false, false, 0);
|
||||
}
|
||||
|
||||
// Just load the return address off the stack.
|
||||
SDValue RetAddrFI = getReturnAddrFrameIndex(DAG);
|
||||
return DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(),
|
||||
RetAddrFI, MachinePointerInfo(), false, false, false, 0);
|
||||
return DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), RetAddrFI,
|
||||
MachinePointerInfo(), false, false, false, 0);
|
||||
}
|
||||
|
||||
SDValue PPCTargetLowering::LowerFRAMEADDR(SDValue Op,
|
||||
@@ -10998,13 +11006,13 @@ SDValue PPCTargetLowering::LowerFRAMEADDR(SDValue Op,
|
||||
SDLoc dl(Op);
|
||||
unsigned Depth = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue();
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy();
|
||||
bool isPPC64 = PtrVT == MVT::i64;
|
||||
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MFI->setFrameAddressIsTaken(true);
|
||||
|
||||
EVT PtrVT = DAG.getTargetLoweringInfo().getPointerTy(MF.getDataLayout());
|
||||
bool isPPC64 = PtrVT == MVT::i64;
|
||||
|
||||
// Naked functions never have a frame pointer, and so we use r1. For all
|
||||
// other functions, this decision must be delayed until during PEI.
|
||||
unsigned FrameReg;
|
||||
|
@@ -434,7 +434,8 @@ namespace llvm {
|
||||
}
|
||||
|
||||
/// getSetCCResultType - Return the ISD::SETCC ValueType
|
||||
EVT getSetCCResultType(LLVMContext &Context, EVT VT) const override;
|
||||
EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Context,
|
||||
EVT VT) const override;
|
||||
|
||||
/// Return true if target always beneficiates from combining into FMA for a
|
||||
/// given value type. This must typically return false on targets where FMA
|
||||
|
@@ -317,7 +317,7 @@ unsigned PPCTTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
unsigned Alignment,
|
||||
unsigned AddressSpace) {
|
||||
// Legalize the type.
|
||||
std::pair<unsigned, MVT> LT = TLI->getTypeLegalizationCost(Src);
|
||||
std::pair<unsigned, MVT> LT = TLI->getTypeLegalizationCost(DL, Src);
|
||||
assert((Opcode == Instruction::Load || Opcode == Instruction::Store) &&
|
||||
"Invalid Opcode");
|
||||
|
||||
|
Reference in New Issue
Block a user