mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-23 11:49:50 +00:00
Have MachineFunction cache a pointer to the subtarget to make lookups
shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lookups from the MachineFunction easily. Update the MIPS subtarget switching machinery to update this pointer at the same time it runs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c2328d552c
commit
6035518e3b
@ -39,6 +39,7 @@ class MachineModuleInfo;
|
||||
class MCContext;
|
||||
class Pass;
|
||||
class TargetMachine;
|
||||
class TargetSubtargetInfo;
|
||||
class TargetRegisterClass;
|
||||
struct MachinePointerInfo;
|
||||
|
||||
@ -76,6 +77,7 @@ struct MachineFunctionInfo {
|
||||
class MachineFunction {
|
||||
const Function *Fn;
|
||||
const TargetMachine &Target;
|
||||
const TargetSubtargetInfo *STI;
|
||||
MCContext &Ctx;
|
||||
MachineModuleInfo &MMI;
|
||||
GCModuleInfo *GMI;
|
||||
@ -163,6 +165,11 @@ public:
|
||||
///
|
||||
const TargetMachine &getTarget() const { return Target; }
|
||||
|
||||
/// getSubtarget - Return the subtarget for which this machine code is being
|
||||
/// compiled.
|
||||
const TargetSubtargetInfo &getSubtarget() const { return *STI; }
|
||||
void setSubtarget(TargetSubtargetInfo *ST) { STI = ST; }
|
||||
|
||||
/// getRegInfo - Return information about the registers currently in use.
|
||||
///
|
||||
MachineRegisterInfo &getRegInfo() { return *RegInfo; }
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/ADT/ilist.h"
|
||||
#include "llvm/CodeGen/DAGCombine.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/SelectionDAGNodes.h"
|
||||
#include "llvm/Support/RecyclingAllocator.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
@ -276,6 +277,7 @@ public:
|
||||
|
||||
MachineFunction &getMachineFunction() const { return *MF; }
|
||||
const TargetMachine &getTarget() const { return TM; }
|
||||
const TargetSubtargetInfo &getSubtarget() const { return MF->getSubtarget(); }
|
||||
const TargetLowering &getTargetLoweringInfo() const { return *TLI; }
|
||||
const TargetSelectionDAGInfo &getSelectionDAGInfo() const { return TSI; }
|
||||
LLVMContext *getContext() const {return Context; }
|
||||
|
@ -115,9 +115,9 @@ AggressiveAntiDepBreaker::AggressiveAntiDepBreaker(
|
||||
MachineFunction &MFi, const RegisterClassInfo &RCI,
|
||||
TargetSubtargetInfo::RegClassVector &CriticalPathRCs)
|
||||
: AntiDepBreaker(), MF(MFi), MRI(MF.getRegInfo()),
|
||||
TII(MF.getTarget().getSubtargetImpl()->getInstrInfo()),
|
||||
TRI(MF.getTarget().getSubtargetImpl()->getRegisterInfo()),
|
||||
RegClassInfo(RCI), State(nullptr) {
|
||||
TII(MF.getSubtarget().getInstrInfo()),
|
||||
TRI(MF.getSubtarget().getRegisterInfo()), RegClassInfo(RCI),
|
||||
State(nullptr) {
|
||||
/* Collect a bitset of all registers that are only broken if they
|
||||
are on the critical path. */
|
||||
for (unsigned i = 0, e = CriticalPathRCs.size(); i < e; ++i) {
|
||||
|
@ -1121,7 +1121,7 @@ void AsmPrinter::EmitConstantPool() {
|
||||
/// by the current function to the current output stream.
|
||||
///
|
||||
void AsmPrinter::EmitJumpTableInfo() {
|
||||
const DataLayout *DL = MF->getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout *DL = MF->getSubtarget().getDataLayout();
|
||||
const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
if (!MJTI) return;
|
||||
if (MJTI->getEntryKind() == MachineJumpTableInfo::EK_Inline) return;
|
||||
|
@ -93,10 +93,9 @@ bool BranchFolderPass::runOnMachineFunction(MachineFunction &MF) {
|
||||
bool EnableTailMerge = !MF.getTarget().requiresStructuredCFG() &&
|
||||
PassConfig->getEnableTailMerge();
|
||||
BranchFolder Folder(EnableTailMerge, /*CommonHoist=*/true);
|
||||
return Folder.OptimizeFunction(
|
||||
MF, MF.getTarget().getSubtargetImpl()->getInstrInfo(),
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo(),
|
||||
getAnalysisIfAvailable<MachineModuleInfo>());
|
||||
return Folder.OptimizeFunction(MF, MF.getSubtarget().getInstrInfo(),
|
||||
MF.getSubtarget().getRegisterInfo(),
|
||||
getAnalysisIfAvailable<MachineModuleInfo>());
|
||||
}
|
||||
|
||||
|
||||
|
@ -96,8 +96,7 @@ static bool isRematerializable(const LiveInterval &LI,
|
||||
void
|
||||
VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &li) {
|
||||
MachineRegisterInfo &mri = MF.getRegInfo();
|
||||
const TargetRegisterInfo &tri =
|
||||
*MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo &tri = *MF.getSubtarget().getRegisterInfo();
|
||||
MachineBasicBlock *mbb = nullptr;
|
||||
MachineLoop *loop = nullptr;
|
||||
bool isExiting = false;
|
||||
@ -188,8 +187,7 @@ VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &li) {
|
||||
// it is a preferred candidate for spilling.
|
||||
// FIXME: this gets much more complicated once we support non-trivial
|
||||
// re-materialization.
|
||||
if (isRematerializable(li, LIS,
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo()))
|
||||
if (isRematerializable(li, LIS, *MF.getSubtarget().getInstrInfo()))
|
||||
totalWeight *= 0.5F;
|
||||
|
||||
li.weight = normalize(totalWeight, li.getSize());
|
||||
|
@ -31,11 +31,10 @@ using namespace llvm;
|
||||
CriticalAntiDepBreaker::CriticalAntiDepBreaker(MachineFunction &MFi,
|
||||
const RegisterClassInfo &RCI)
|
||||
: AntiDepBreaker(), MF(MFi), MRI(MF.getRegInfo()),
|
||||
TII(MF.getTarget().getSubtargetImpl()->getInstrInfo()),
|
||||
TRI(MF.getTarget().getSubtargetImpl()->getRegisterInfo()),
|
||||
RegClassInfo(RCI), Classes(TRI->getNumRegs(), nullptr),
|
||||
KillIndices(TRI->getNumRegs(), 0), DefIndices(TRI->getNumRegs(), 0),
|
||||
KeepRegs(TRI->getNumRegs(), false) {}
|
||||
TII(MF.getSubtarget().getInstrInfo()),
|
||||
TRI(MF.getSubtarget().getRegisterInfo()), RegClassInfo(RCI),
|
||||
Classes(TRI->getNumRegs(), nullptr), KillIndices(TRI->getNumRegs(), 0),
|
||||
DefIndices(TRI->getNumRegs(), 0), KeepRegs(TRI->getNumRegs(), false) {}
|
||||
|
||||
CriticalAntiDepBreaker::~CriticalAntiDepBreaker() {
|
||||
}
|
||||
|
@ -92,8 +92,8 @@ bool DeadMachineInstructionElim::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
bool AnyChanges = false;
|
||||
MRI = &MF.getRegInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
|
||||
// Loop over all instructions in all blocks, from bottom to top, so that it's
|
||||
// more likely that chains of dependent but ultimately dead instructions will
|
||||
|
@ -153,8 +153,8 @@ private:
|
||||
public:
|
||||
/// runOnMachineFunction - Initialize per-function data structures.
|
||||
void runOnMachineFunction(MachineFunction &MF) {
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
LiveRegUnits.clear();
|
||||
LiveRegUnits.setUniverse(TRI->getNumRegUnits());
|
||||
@ -782,8 +782,8 @@ bool EarlyIfConverter::runOnMachineFunction(MachineFunction &MF) {
|
||||
.enableEarlyIfConversion())
|
||||
return false;
|
||||
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
SchedModel =
|
||||
MF.getTarget().getSubtarget<TargetSubtargetInfo>().getSchedModel();
|
||||
MRI = &MF.getRegInfo();
|
||||
|
@ -54,8 +54,7 @@ ErlangGC::ErlangGC() {
|
||||
MCSymbol *ErlangGC::InsertLabel(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
DebugLoc DL) const {
|
||||
const TargetInstrInfo *TII =
|
||||
MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MBB.getParent()->getSubtarget().getInstrInfo();
|
||||
MCSymbol *Label = MBB.getParent()->getContext().CreateTempSymbol();
|
||||
BuildMI(MBB, MI, DL, TII->get(TargetOpcode::GC_LABEL)).addSym(Label);
|
||||
return Label;
|
||||
|
@ -715,8 +715,8 @@ void ExeDepsFix::visitSoftInstr(MachineInstr *mi, unsigned mask) {
|
||||
|
||||
bool ExeDepsFix::runOnMachineFunction(MachineFunction &mf) {
|
||||
MF = &mf;
|
||||
TII = MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF->getSubtarget().getInstrInfo();
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
LiveRegs = nullptr;
|
||||
assert(NumRegs == RC->getNumRegs() && "Bad regclass");
|
||||
|
||||
|
@ -47,8 +47,7 @@ INITIALIZE_PASS(ExpandISelPseudos, "expand-isel-pseudos",
|
||||
|
||||
bool ExpandISelPseudos::runOnMachineFunction(MachineFunction &MF) {
|
||||
bool Changed = false;
|
||||
const TargetLowering *TLI =
|
||||
MF.getTarget().getSubtargetImpl()->getTargetLowering();
|
||||
const TargetLowering *TLI = MF.getSubtarget().getTargetLowering();
|
||||
|
||||
// Iterate through each instruction in the function, looking for pseudos.
|
||||
for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I) {
|
||||
|
@ -184,8 +184,8 @@ bool ExpandPostRA::runOnMachineFunction(MachineFunction &MF) {
|
||||
DEBUG(dbgs() << "Machine Function\n"
|
||||
<< "********** EXPANDING POST-RA PSEUDO INSTRS **********\n"
|
||||
<< "********** Function: " << MF.getName() << '\n');
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
|
||||
bool MadeChange = false;
|
||||
|
||||
|
@ -269,9 +269,9 @@ INITIALIZE_PASS_DEPENDENCY(MachineBranchProbabilityInfo)
|
||||
INITIALIZE_PASS_END(IfConverter, "if-converter", "If Converter", false, false)
|
||||
|
||||
bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
|
||||
TLI = MF.getTarget().getSubtargetImpl()->getTargetLowering();
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TLI = MF.getSubtarget().getTargetLowering();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MBPI = &getAnalysis<MachineBranchProbabilityInfo>();
|
||||
MRI = &MF.getRegInfo();
|
||||
|
||||
@ -287,9 +287,8 @@ bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
|
||||
if (!PreRegAlloc) {
|
||||
// Tail merge tend to expose more if-conversion opportunities.
|
||||
BranchFolder BF(true, false);
|
||||
BFChange = BF.OptimizeFunction(
|
||||
MF, TII, MF.getTarget().getSubtargetImpl()->getRegisterInfo(),
|
||||
getAnalysisIfAvailable<MachineModuleInfo>());
|
||||
BFChange = BF.OptimizeFunction(MF, TII, MF.getSubtarget().getRegisterInfo(),
|
||||
getAnalysisIfAvailable<MachineModuleInfo>());
|
||||
}
|
||||
|
||||
DEBUG(dbgs() << "\nIfcvt: function (" << ++FnNum << ") \'"
|
||||
@ -421,8 +420,7 @@ bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
if (MadeChange && IfCvtBranchFold) {
|
||||
BranchFolder BF(false, false);
|
||||
BF.OptimizeFunction(MF, TII,
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo(),
|
||||
BF.OptimizeFunction(MF, TII, MF.getSubtarget().getRegisterInfo(),
|
||||
getAnalysisIfAvailable<MachineModuleInfo>());
|
||||
}
|
||||
|
||||
|
@ -146,8 +146,8 @@ public:
|
||||
MDT(pass.getAnalysis<MachineDominatorTree>()),
|
||||
Loops(pass.getAnalysis<MachineLoopInfo>()), VRM(vrm),
|
||||
MFI(*mf.getFrameInfo()), MRI(mf.getRegInfo()),
|
||||
TII(*mf.getTarget().getSubtargetImpl()->getInstrInfo()),
|
||||
TRI(*mf.getTarget().getSubtargetImpl()->getRegisterInfo()),
|
||||
TII(*mf.getSubtarget().getInstrInfo()),
|
||||
TRI(*mf.getSubtarget().getRegisterInfo()),
|
||||
MBFI(pass.getAnalysis<MachineBlockFrequencyInfo>()) {}
|
||||
|
||||
void spill(LiveRangeEdit &) override;
|
||||
|
@ -699,7 +699,7 @@ bool LDVImpl::runOnMachineFunction(MachineFunction &mf) {
|
||||
MF = &mf;
|
||||
LIS = &pass.getAnalysis<LiveIntervals>();
|
||||
MDT = &pass.getAnalysis<MachineDominatorTree>();
|
||||
TRI = mf.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = mf.getSubtarget().getRegisterInfo();
|
||||
LS.initialize(mf);
|
||||
DEBUG(dbgs() << "********** COMPUTING LIVE DEBUG VARIABLES: "
|
||||
<< mf.getName() << " **********\n");
|
||||
@ -994,8 +994,7 @@ void LDVImpl::emitDebugValues(VirtRegMap *VRM) {
|
||||
DEBUG(dbgs() << "********** EMITTING LIVE DEBUG VARIABLES **********\n");
|
||||
if (!MF)
|
||||
return;
|
||||
const TargetInstrInfo *TII =
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
|
||||
for (unsigned i = 0, e = userValues.size(); i != e; ++i) {
|
||||
DEBUG(userValues[i]->print(dbgs(), &MF->getTarget()));
|
||||
userValues[i]->rewriteLocations(*VRM, *TRI);
|
||||
|
@ -48,7 +48,7 @@ void LiveRegMatrix::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
}
|
||||
|
||||
bool LiveRegMatrix::runOnMachineFunction(MachineFunction &MF) {
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
LIS = &getAnalysis<LiveIntervals>();
|
||||
VRM = &getAnalysis<VirtRegMap>();
|
||||
|
@ -50,7 +50,7 @@ void LiveStacks::releaseMemory() {
|
||||
}
|
||||
|
||||
bool LiveStacks::runOnMachineFunction(MachineFunction &MF) {
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
// FIXME: No analysis is being done right now. We are relying on the
|
||||
// register allocators to provide the information.
|
||||
return false;
|
||||
|
@ -500,7 +500,7 @@ void LiveVariables::UpdatePhysRegDefs(MachineInstr *MI,
|
||||
bool LiveVariables::runOnMachineFunction(MachineFunction &mf) {
|
||||
MF = &mf;
|
||||
MRI = &mf.getRegInfo();
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
|
||||
unsigned NumRegs = TRI->getNumRegs();
|
||||
PhysRegDef = new MachineInstr*[NumRegs];
|
||||
|
@ -103,8 +103,7 @@ INITIALIZE_PASS_END(LocalStackSlotPass, "localstackalloc",
|
||||
|
||||
bool LocalStackSlotPass::runOnMachineFunction(MachineFunction &MF) {
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
unsigned LocalObjectCount = MFI->getObjectIndexEnd();
|
||||
|
||||
// If the target doesn't want/need this pass, or if there are no locals
|
||||
@ -185,8 +184,7 @@ void LocalStackSlotPass::AssignProtectedObjSet(const StackObjSet &UnassignedObjs
|
||||
void LocalStackSlotPass::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
// Loop over all of the stack objects, assigning sequential addresses...
|
||||
MachineFrameInfo *MFI = Fn.getFrameInfo();
|
||||
const TargetFrameLowering &TFI =
|
||||
*Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering &TFI = *Fn.getSubtarget().getFrameLowering();
|
||||
bool StackGrowsDown =
|
||||
TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsDown;
|
||||
int64_t Offset = 0;
|
||||
@ -275,10 +273,8 @@ bool LocalStackSlotPass::insertFrameReferenceRegisters(MachineFunction &Fn) {
|
||||
bool UsedBaseReg = false;
|
||||
|
||||
MachineFrameInfo *MFI = Fn.getFrameInfo();
|
||||
const TargetRegisterInfo *TRI =
|
||||
Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering &TFI =
|
||||
*Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
const TargetFrameLowering &TFI = *Fn.getSubtarget().getFrameLowering();
|
||||
bool StackGrowsDown =
|
||||
TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsDown;
|
||||
|
||||
|
@ -292,8 +292,7 @@ void MachineBasicBlock::print(raw_ostream &OS, SlotIndexes *Indexes) const {
|
||||
|
||||
OS << '\n';
|
||||
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
if (!livein_empty()) {
|
||||
if (Indexes) OS << '\t';
|
||||
OS << " Live Ins:";
|
||||
@ -362,8 +361,7 @@ MachineBasicBlock::addLiveIn(unsigned PhysReg, const TargetRegisterClass *RC) {
|
||||
bool LiveIn = isLiveIn(PhysReg);
|
||||
iterator I = SkipPHIsAndLabels(begin()), E = end();
|
||||
MachineRegisterInfo &MRI = getParent()->getRegInfo();
|
||||
const TargetInstrInfo &TII =
|
||||
*getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *getParent()->getSubtarget().getInstrInfo();
|
||||
|
||||
// Look for an existing copy.
|
||||
if (LiveIn)
|
||||
@ -394,8 +392,7 @@ void MachineBasicBlock::moveAfter(MachineBasicBlock *NewBefore) {
|
||||
}
|
||||
|
||||
void MachineBasicBlock::updateTerminator() {
|
||||
const TargetInstrInfo *TII =
|
||||
getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = getParent()->getSubtarget().getInstrInfo();
|
||||
// A block with no successors has no concerns with fall-through edges.
|
||||
if (this->succ_empty()) return;
|
||||
|
||||
@ -650,8 +647,7 @@ bool MachineBasicBlock::canFallThrough() {
|
||||
// Analyze the branches, if any, at the end of the block.
|
||||
MachineBasicBlock *TBB = nullptr, *FBB = nullptr;
|
||||
SmallVector<MachineOperand, 4> Cond;
|
||||
const TargetInstrInfo *TII =
|
||||
getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = getParent()->getSubtarget().getInstrInfo();
|
||||
if (TII->AnalyzeBranch(*this, TBB, FBB, Cond)) {
|
||||
// If we couldn't analyze the branch, examine the last instruction.
|
||||
// If the block doesn't end in a known control barrier, assume fallthrough
|
||||
@ -696,8 +692,7 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) {
|
||||
|
||||
// We may need to update this's terminator, but we can't do that if
|
||||
// AnalyzeBranch fails. If this uses a jump table, we won't touch it.
|
||||
const TargetInstrInfo *TII =
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
|
||||
MachineBasicBlock *TBB = nullptr, *FBB = nullptr;
|
||||
SmallVector<MachineOperand, 4> Cond;
|
||||
if (TII->AnalyzeBranch(*this, TBB, FBB, Cond))
|
||||
@ -802,8 +797,8 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) {
|
||||
NMBB->addSuccessor(Succ);
|
||||
if (!NMBB->isLayoutSuccessor(Succ)) {
|
||||
Cond.clear();
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo()->InsertBranch(
|
||||
*NMBB, Succ, nullptr, Cond, dl);
|
||||
MF->getSubtarget().getInstrInfo()->InsertBranch(*NMBB, Succ, nullptr, Cond,
|
||||
dl);
|
||||
|
||||
if (Indexes) {
|
||||
for (instr_iterator I = NMBB->instr_begin(), E = NMBB->instr_end();
|
||||
@ -831,8 +826,7 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) {
|
||||
NMBB->addLiveIn(*I);
|
||||
|
||||
// Update LiveVariables.
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
if (LV) {
|
||||
// Restore kills of virtual registers that were killed by the terminators.
|
||||
while (!KilledRegs.empty()) {
|
||||
|
@ -1112,8 +1112,8 @@ bool MachineBlockPlacement::runOnMachineFunction(MachineFunction &F) {
|
||||
MBPI = &getAnalysis<MachineBranchProbabilityInfo>();
|
||||
MBFI = &getAnalysis<MachineBlockFrequencyInfo>();
|
||||
MLI = &getAnalysis<MachineLoopInfo>();
|
||||
TII = F.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TLI = F.getTarget().getSubtargetImpl()->getTargetLowering();
|
||||
TII = F.getSubtarget().getInstrInfo();
|
||||
TLI = F.getSubtarget().getTargetLowering();
|
||||
assert(BlockToChain.empty());
|
||||
|
||||
buildCFGChains(F);
|
||||
|
@ -664,8 +664,8 @@ bool MachineCSE::runOnMachineFunction(MachineFunction &MF) {
|
||||
if (skipOptnoneFunction(*MF.getFunction()))
|
||||
return false;
|
||||
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
DT = &getAnalysis<MachineDominatorTree>();
|
||||
|
@ -336,8 +336,8 @@ bool MachineCopyPropagation::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
bool Changed = false;
|
||||
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
|
||||
for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
|
||||
|
@ -54,8 +54,9 @@ void ilist_traits<MachineBasicBlock>::deleteNode(MachineBasicBlock *MBB) {
|
||||
|
||||
MachineFunction::MachineFunction(const Function *F, const TargetMachine &TM,
|
||||
unsigned FunctionNum, MachineModuleInfo &mmi,
|
||||
GCModuleInfo* gmi)
|
||||
: Fn(F), Target(TM), Ctx(mmi.getContext()), MMI(mmi), GMI(gmi) {
|
||||
GCModuleInfo *gmi)
|
||||
: Fn(F), Target(TM), STI(TM.getSubtargetImpl()), Ctx(mmi.getContext()),
|
||||
MMI(mmi), GMI(gmi) {
|
||||
if (TM.getSubtargetImpl()->getRegisterInfo())
|
||||
RegInfo = new (Allocator) MachineRegisterInfo(TM);
|
||||
else
|
||||
@ -353,8 +354,7 @@ void MachineFunction::print(raw_ostream &OS, SlotIndexes *Indexes) const {
|
||||
// Print Constant Pool
|
||||
ConstantPool->print(OS);
|
||||
|
||||
const TargetRegisterInfo *TRI =
|
||||
getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = getSubtarget().getRegisterInfo();
|
||||
|
||||
if (RegInfo && !RegInfo->livein_empty()) {
|
||||
OS << "Function Live Ins: ";
|
||||
@ -463,7 +463,7 @@ unsigned MachineFunction::addLiveIn(unsigned PReg,
|
||||
/// normal 'L' label is returned.
|
||||
MCSymbol *MachineFunction::getJTISymbol(unsigned JTI, MCContext &Ctx,
|
||||
bool isLinkerPrivate) const {
|
||||
const DataLayout *DL = getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout *DL = getSubtarget().getDataLayout();
|
||||
assert(JumpTableInfo && "No jump tables");
|
||||
assert(JTI < JumpTableInfo->getJumpTables().size() && "Invalid JTI!");
|
||||
|
||||
@ -478,7 +478,7 @@ MCSymbol *MachineFunction::getJTISymbol(unsigned JTI, MCContext &Ctx,
|
||||
/// getPICBaseSymbol - Return a function-local symbol to represent the PIC
|
||||
/// base.
|
||||
MCSymbol *MachineFunction::getPICBaseSymbol() const {
|
||||
const DataLayout *DL = getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout *DL = getSubtarget().getDataLayout();
|
||||
return Ctx.GetOrCreateSymbol(Twine(DL->getPrivateGlobalPrefix())+
|
||||
Twine(getFunctionNumber())+"$pb");
|
||||
}
|
||||
@ -629,10 +629,8 @@ MachineFrameInfo::getPristineRegs(const MachineBasicBlock *MBB) const {
|
||||
}
|
||||
|
||||
unsigned MachineFrameInfo::estimateStackSize(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
|
||||
unsigned MaxAlign = getMaxAlignment();
|
||||
int Offset = 0;
|
||||
|
||||
@ -682,8 +680,7 @@ unsigned MachineFrameInfo::estimateStackSize(const MachineFunction &MF) const {
|
||||
void MachineFrameInfo::print(const MachineFunction &MF, raw_ostream &OS) const{
|
||||
if (Objects.empty()) return;
|
||||
|
||||
const TargetFrameLowering *FI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *FI = MF.getSubtarget().getFrameLowering();
|
||||
int ValOffset = (FI ? FI->getOffsetOfLocalArea() : 0);
|
||||
|
||||
OS << "Frame Objects:\n";
|
||||
|
@ -40,7 +40,7 @@ static AvailableValsTy &getAvailableVals(void *AV) {
|
||||
MachineSSAUpdater::MachineSSAUpdater(MachineFunction &MF,
|
||||
SmallVectorImpl<MachineInstr*> *NewPHI)
|
||||
: AV(nullptr), InsertedPHIs(NewPHI) {
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
}
|
||||
|
||||
|
@ -378,8 +378,7 @@ static bool isSchedBoundary(MachineBasicBlock::iterator MI,
|
||||
|
||||
/// Main driver for both MachineScheduler and PostMachineScheduler.
|
||||
void MachineSchedulerBase::scheduleRegions(ScheduleDAGInstrs &Scheduler) {
|
||||
const TargetInstrInfo *TII =
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
|
||||
bool IsPostRA = Scheduler.isPostRA();
|
||||
|
||||
// Visit all machine basic blocks.
|
||||
|
@ -52,8 +52,8 @@ void MachineTraceMetrics::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
|
||||
bool MachineTraceMetrics::runOnMachineFunction(MachineFunction &Func) {
|
||||
MF = &Func;
|
||||
TII = MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF->getSubtarget().getInstrInfo();
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
MRI = &MF->getRegInfo();
|
||||
Loops = &getAnalysis<MachineLoopInfo>();
|
||||
const TargetSubtargetInfo &ST =
|
||||
|
@ -67,7 +67,7 @@ bool OptimizePHIs::runOnMachineFunction(MachineFunction &Fn) {
|
||||
return false;
|
||||
|
||||
MRI = &Fn.getRegInfo();
|
||||
TII = Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TII = Fn.getSubtarget().getInstrInfo();
|
||||
|
||||
// Find dead PHI cycles and PHI cycles that can be replaced by a single
|
||||
// value. InstCombine does these optimizations, but DAG legalization may
|
||||
|
@ -241,8 +241,7 @@ void PHIElimination::LowerPHINode(MachineBasicBlock &MBB,
|
||||
// Insert a register to register copy at the top of the current block (but
|
||||
// after any remaining phi nodes) which copies the new incoming register
|
||||
// into the phi node destination.
|
||||
const TargetInstrInfo *TII =
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo();
|
||||
if (isSourceDefinedByImplicitDef(MPhi, MRI))
|
||||
// If all sources of a PHI node are implicit_def, just emit an
|
||||
// implicit_def instead of a copy.
|
||||
|
@ -267,7 +267,7 @@ bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
|
||||
if (skipOptnoneFunction(*Fn.getFunction()))
|
||||
return false;
|
||||
|
||||
TII = Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TII = Fn.getSubtarget().getInstrInfo();
|
||||
MachineLoopInfo &MLI = getAnalysis<MachineLoopInfo>();
|
||||
MachineDominatorTree &MDT = getAnalysis<MachineDominatorTree>();
|
||||
AliasAnalysis *AA = &getAnalysis<AliasAnalysis>();
|
||||
|
@ -139,8 +139,8 @@ bool ProcessImplicitDefs::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
bool Changed = false;
|
||||
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
assert(MRI->isSSA() && "ProcessImplicitDefs only works on SSA form.");
|
||||
assert(WorkList.empty() && "Inconsistent worklist state");
|
||||
|
@ -111,10 +111,8 @@ typedef SmallSetVector<int, 8> StackObjSet;
|
||||
///
|
||||
bool PEI::runOnMachineFunction(MachineFunction &Fn) {
|
||||
const Function* F = Fn.getFunction();
|
||||
const TargetRegisterInfo *TRI =
|
||||
Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering *TFI =
|
||||
Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
const TargetFrameLowering *TFI = Fn.getSubtarget().getFrameLowering();
|
||||
|
||||
assert(!Fn.getRegInfo().getNumVirtRegs() && "Regalloc must assign all vregs");
|
||||
|
||||
@ -188,10 +186,8 @@ bool PEI::runOnMachineFunction(MachineFunction &Fn) {
|
||||
/// variables for the function's frame information and eliminate call frame
|
||||
/// pseudo instructions.
|
||||
void PEI::calculateCallsInformation(MachineFunction &Fn) {
|
||||
const TargetInstrInfo &TII =
|
||||
*Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetFrameLowering *TFI =
|
||||
Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetInstrInfo &TII = *Fn.getSubtarget().getInstrInfo();
|
||||
const TargetFrameLowering *TFI = Fn.getSubtarget().getFrameLowering();
|
||||
MachineFrameInfo *MFI = Fn.getFrameInfo();
|
||||
|
||||
unsigned MaxCallFrameSize = 0;
|
||||
@ -244,10 +240,8 @@ void PEI::calculateCallsInformation(MachineFunction &Fn) {
|
||||
/// calculateCalleeSavedRegisters - Scan the function for modified callee saved
|
||||
/// registers.
|
||||
void PEI::calculateCalleeSavedRegisters(MachineFunction &F) {
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
F.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering *TFI =
|
||||
F.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *RegInfo = F.getSubtarget().getRegisterInfo();
|
||||
const TargetFrameLowering *TFI = F.getSubtarget().getFrameLowering();
|
||||
MachineFrameInfo *MFI = F.getFrameInfo();
|
||||
|
||||
// Get the callee saved register list...
|
||||
@ -344,12 +338,9 @@ void PEI::insertCSRSpillsAndRestores(MachineFunction &Fn) {
|
||||
if (CSI.empty())
|
||||
return;
|
||||
|
||||
const TargetInstrInfo &TII =
|
||||
*Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetFrameLowering *TFI =
|
||||
Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *TRI =
|
||||
Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetInstrInfo &TII = *Fn.getSubtarget().getInstrInfo();
|
||||
const TargetFrameLowering *TFI = Fn.getSubtarget().getFrameLowering();
|
||||
const TargetRegisterInfo *TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
MachineBasicBlock::iterator I;
|
||||
|
||||
// Spill using target interface.
|
||||
@ -455,8 +446,7 @@ AssignProtectedObjSet(const StackObjSet &UnassignedObjs,
|
||||
/// abstract stack objects.
|
||||
///
|
||||
void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
const TargetFrameLowering &TFI =
|
||||
*Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering &TFI = *Fn.getSubtarget().getFrameLowering();
|
||||
StackProtector *SP = &getAnalysis<StackProtector>();
|
||||
|
||||
bool StackGrowsDown =
|
||||
@ -526,8 +516,7 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
// Make sure the special register scavenging spill slot is closest to the
|
||||
// incoming stack pointer if a frame pointer is required and is closer
|
||||
// to the incoming rather than the final stack pointer.
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = Fn.getSubtarget().getRegisterInfo();
|
||||
bool EarlyScavengingSlots = (TFI.hasFP(Fn) &&
|
||||
TFI.isFPCloseToIncomingSP() &&
|
||||
RegInfo->useFPForScavengingIndex(Fn) &&
|
||||
@ -682,8 +671,7 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
/// prolog and epilog code to the function.
|
||||
///
|
||||
void PEI::insertPrologEpilogCode(MachineFunction &Fn) {
|
||||
const TargetFrameLowering &TFI =
|
||||
*Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering &TFI = *Fn.getSubtarget().getFrameLowering();
|
||||
|
||||
// Add prologue to the function...
|
||||
TFI.emitPrologue(Fn);
|
||||
@ -754,8 +742,7 @@ void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &Fn,
|
||||
const TargetMachine &TM = Fn.getTarget();
|
||||
assert(TM.getSubtargetImpl()->getRegisterInfo() &&
|
||||
"TM::getRegisterInfo() must be implemented!");
|
||||
const TargetInstrInfo &TII =
|
||||
*Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *Fn.getSubtarget().getInstrInfo();
|
||||
const TargetRegisterInfo &TRI = *TM.getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering *TFI = TM.getSubtargetImpl()->getFrameLowering();
|
||||
bool StackGrowsDown =
|
||||
|
@ -189,8 +189,7 @@ PBQPRAProblem *PBQPBuilder::build(MachineFunction *mf, const LiveIntervals *lis,
|
||||
|
||||
LiveIntervals *LIS = const_cast<LiveIntervals*>(lis);
|
||||
MachineRegisterInfo *mri = &mf->getRegInfo();
|
||||
const TargetRegisterInfo *tri =
|
||||
mf->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *tri = mf->getSubtarget().getRegisterInfo();
|
||||
|
||||
std::unique_ptr<PBQPRAProblem> p(new PBQPRAProblem());
|
||||
PBQPRAGraph &g = p->getGraph();
|
||||
|
@ -38,8 +38,8 @@ void RegisterClassInfo::runOnMachineFunction(const MachineFunction &mf) {
|
||||
MF = &mf;
|
||||
|
||||
// Allocate new array the first time we see a new target.
|
||||
if (MF->getTarget().getSubtargetImpl()->getRegisterInfo() != TRI) {
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
if (MF->getSubtarget().getRegisterInfo() != TRI) {
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
RegClass.reset(new RCInfo[TRI->getNumRegClasses()]);
|
||||
unsigned NumPSets = TRI->getNumRegPressureSets();
|
||||
PSetLimits.reset(new unsigned[NumPSets]);
|
||||
|
@ -185,7 +185,7 @@ void RegPressureTracker::init(const MachineFunction *mf,
|
||||
reset();
|
||||
|
||||
MF = mf;
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
RCI = rci;
|
||||
MRI = &MF->getRegInfo();
|
||||
MBB = mbb;
|
||||
|
@ -210,8 +210,7 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf,
|
||||
for (unsigned vti = 0, vte = ValueVTs.size(); vti != vte; ++vti) {
|
||||
EVT VT = ValueVTs[vti];
|
||||
unsigned NumRegisters = TLI->getNumRegisters(Fn->getContext(), VT);
|
||||
const TargetInstrInfo *TII =
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
|
||||
for (unsigned i = 0; i != NumRegisters; ++i)
|
||||
BuildMI(MBB, DL, TII->get(TargetOpcode::PHI), PHIReg + i);
|
||||
PHIReg += NumRegisters;
|
||||
|
@ -48,7 +48,7 @@ static cl::opt<int> HighLatencyCycles(
|
||||
|
||||
ScheduleDAGSDNodes::ScheduleDAGSDNodes(MachineFunction &mf)
|
||||
: ScheduleDAG(mf), BB(nullptr), DAG(nullptr),
|
||||
InstrItins(mf.getTarget().getSubtargetImpl()->getInstrItineraryData()) {}
|
||||
InstrItins(mf.getSubtarget().getInstrItineraryData()) {}
|
||||
|
||||
/// Run - perform scheduling.
|
||||
///
|
||||
|
@ -3947,8 +3947,7 @@ static SDValue getMemcpyLoadsAndStores(SelectionDAG &DAG, SDLoc dl,
|
||||
|
||||
// Don't promote to an alignment that would require dynamic stack
|
||||
// realignment.
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
if (!TRI->needsStackRealignment(MF))
|
||||
while (NewAlign > Align &&
|
||||
TLI.getDataLayout()->exceedsNaturalStackAlignment(NewAlign))
|
||||
|
@ -861,7 +861,7 @@ void SelectionDAGBuilder::init(GCFunctionInfo *gfi, AliasAnalysis &aa,
|
||||
AA = &aa;
|
||||
GFI = gfi;
|
||||
LibInfo = li;
|
||||
DL = DAG.getTarget().getSubtargetImpl()->getDataLayout();
|
||||
DL = DAG.getSubtarget().getDataLayout();
|
||||
Context = DAG.getContext();
|
||||
LPadToCallSiteMap.clear();
|
||||
}
|
||||
@ -4601,8 +4601,7 @@ SelectionDAGBuilder::EmitFuncArgumentDbgValue(const Value *V, MDNode *Variable,
|
||||
return false;
|
||||
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
const TargetInstrInfo *TII =
|
||||
DAG.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = DAG.getSubtarget().getInstrInfo();
|
||||
|
||||
// Ignore inlined function arguments here.
|
||||
DIVariable DV(Variable);
|
||||
|
@ -37,8 +37,7 @@ std::string SDNode::getOperationName(const SelectionDAG *G) const {
|
||||
return "<<Unknown DAG Node>>";
|
||||
if (isMachineOpcode()) {
|
||||
if (G)
|
||||
if (const TargetInstrInfo *TII =
|
||||
G->getTarget().getSubtargetImpl()->getInstrInfo())
|
||||
if (const TargetInstrInfo *TII = G->getSubtarget().getInstrInfo())
|
||||
if (getMachineOpcode() < TII->getNumOpcodes())
|
||||
return TII->getName(getMachineOpcode());
|
||||
return "<<Unknown Machine Node #" + utostr(getOpcode()) + ">>";
|
||||
@ -435,10 +434,8 @@ void SDNode::print_details(raw_ostream &OS, const SelectionDAG *G) const {
|
||||
OS << LBB->getName() << " ";
|
||||
OS << (const void*)BBDN->getBasicBlock() << ">";
|
||||
} else if (const RegisterSDNode *R = dyn_cast<RegisterSDNode>(this)) {
|
||||
OS << ' '
|
||||
<< PrintReg(R->getReg(),
|
||||
G ? G->getTarget().getSubtargetImpl()->getRegisterInfo()
|
||||
: nullptr);
|
||||
OS << ' ' << PrintReg(R->getReg(),
|
||||
G ? G->getSubtarget().getRegisterInfo() : nullptr);
|
||||
} else if (const ExternalSymbolSDNode *ES =
|
||||
dyn_cast<ExternalSymbolSDNode>(this)) {
|
||||
OS << "'" << ES->getSymbol() << "'";
|
||||
|
@ -65,8 +65,8 @@ protected:
|
||||
lis = &pass.getAnalysis<LiveIntervals>();
|
||||
mfi = mf.getFrameInfo();
|
||||
mri = &mf.getRegInfo();
|
||||
tii = mf.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
tri = mf.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
tii = mf.getSubtarget().getInstrInfo();
|
||||
tri = mf.getSubtarget().getRegisterInfo();
|
||||
}
|
||||
|
||||
/// Add spill ranges for every use/def of the live interval, inserting loads
|
||||
|
@ -43,7 +43,7 @@ STATISTIC(NumRepairs, "Number of invalid live ranges repaired");
|
||||
SplitAnalysis::SplitAnalysis(const VirtRegMap &vrm, const LiveIntervals &lis,
|
||||
const MachineLoopInfo &mli)
|
||||
: MF(vrm.getMachineFunction()), VRM(vrm), LIS(lis), Loops(mli),
|
||||
TII(*MF.getTarget().getSubtargetImpl()->getInstrInfo()), CurLI(nullptr),
|
||||
TII(*MF.getSubtarget().getInstrInfo()), CurLI(nullptr),
|
||||
LastSplitPoint(MF.getNumBlockIDs()) {}
|
||||
|
||||
void SplitAnalysis::clear() {
|
||||
|
@ -67,7 +67,7 @@ bool StackMapLiveness::runOnMachineFunction(MachineFunction &_MF) {
|
||||
DEBUG(dbgs() << "********** COMPUTING STACKMAP LIVENESS: "
|
||||
<< _MF.getName() << " **********\n");
|
||||
MF = &_MF;
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
++NumStackMapFuncVisited;
|
||||
|
||||
// Skip this function if there are no patchpoints to process.
|
||||
|
@ -239,8 +239,7 @@ void StackMaps::recordStackMapOpers(const MachineInstr &MI, uint64_t ID,
|
||||
|
||||
// Record the stack size of the current function.
|
||||
const MachineFrameInfo *MFI = AP.MF->getFrameInfo();
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
AP.MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = AP.MF->getSubtarget().getRegisterInfo();
|
||||
const bool DynamicFrameSize = MFI->hasVarSizedObjects() ||
|
||||
RegInfo->needsStackRealignment(*(AP.MF));
|
||||
FnStackSize[AP.CurrentFnSym] =
|
||||
|
@ -423,7 +423,7 @@ bool StackSlotColoring::runOnMachineFunction(MachineFunction &MF) {
|
||||
});
|
||||
|
||||
MFI = MF.getFrameInfo();
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
LS = &getAnalysis<LiveStacks>();
|
||||
MBFI = &getAnalysis<MachineBlockFrequencyInfo>();
|
||||
|
||||
|
@ -136,8 +136,8 @@ bool TailDuplicatePass::runOnMachineFunction(MachineFunction &MF) {
|
||||
if (skipOptnoneFunction(*MF.getFunction()))
|
||||
return false;
|
||||
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
MMI = getAnalysisIfAvailable<MachineModuleInfo>();
|
||||
MBPI = &getAnalysis<MachineBranchProbabilityInfo>();
|
||||
|
@ -35,8 +35,7 @@ int TargetFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
|
||||
int TargetFrameLowering::getFrameIndexReference(const MachineFunction &MF,
|
||||
int FI, unsigned &FrameReg) const {
|
||||
const TargetRegisterInfo *RI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// By default, assume all frame indices are referenced via whatever
|
||||
// getFrameRegister() says. The target can override this if it's doing
|
||||
|
@ -500,8 +500,7 @@ TargetInstrInfo::foldMemoryOperand(MachineBasicBlock::iterator MI,
|
||||
|
||||
const MachineOperand &MO = MI->getOperand(1-Ops[0]);
|
||||
MachineBasicBlock::iterator Pos = MI;
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
if (Flags == MachineMemOperand::MOStore)
|
||||
storeRegToStackSlot(*MBB, Pos, MO.getReg(), MO.isKill(), FI, RC, TRI);
|
||||
@ -656,10 +655,8 @@ bool TargetInstrInfo::isSchedulingBoundary(const MachineInstr *MI,
|
||||
// saves compile time, because it doesn't require every single
|
||||
// stack slot reference to depend on the instruction that does the
|
||||
// modification.
|
||||
const TargetLowering &TLI =
|
||||
*MF.getTarget().getSubtargetImpl()->getTargetLowering();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetLowering &TLI = *MF.getSubtarget().getTargetLowering();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
if (MI->modifiesRegister(TLI.getStackPointerRegisterToSaveRestore(), TRI))
|
||||
return true;
|
||||
|
||||
|
@ -290,8 +290,7 @@ computeOutputLatency(const MachineInstr *DefMI, unsigned DefOperIdx,
|
||||
// for predicated defs.
|
||||
unsigned Reg = DefMI->getOperand(DefOperIdx).getReg();
|
||||
const MachineFunction &MF = *DefMI->getParent()->getParent();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
if (!DepMI->readsRegister(Reg, TRI) && TII->isPredicated(DepMI))
|
||||
return computeInstrLatency(DefMI);
|
||||
|
||||
|
@ -55,8 +55,8 @@ INITIALIZE_PASS(VirtRegMap, "virtregmap", "Virtual Register Map", false, false)
|
||||
|
||||
bool VirtRegMap::runOnMachineFunction(MachineFunction &mf) {
|
||||
MRI = &mf.getRegInfo();
|
||||
TII = mf.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = mf.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = mf.getSubtarget().getInstrInfo();
|
||||
TRI = mf.getSubtarget().getRegisterInfo();
|
||||
MF = &mf;
|
||||
|
||||
Virt2PhysMap.clear();
|
||||
|
@ -191,8 +191,8 @@ public:
|
||||
/// runOnMachineFunction - Initialize per-function data structures.
|
||||
void runOnMachineFunction(MachineFunction &MF) {
|
||||
this->MF = &MF;
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
}
|
||||
|
||||
@ -891,8 +891,8 @@ bool AArch64ConditionalCompares::tryConvert(MachineBasicBlock *MBB) {
|
||||
bool AArch64ConditionalCompares::runOnMachineFunction(MachineFunction &MF) {
|
||||
DEBUG(dbgs() << "********** AArch64 Conditional Compares **********\n"
|
||||
<< "********** Function: " << MF.getName() << '\n');
|
||||
TII = MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = MF.getSubtarget().getInstrInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
SchedModel =
|
||||
MF.getTarget().getSubtarget<TargetSubtargetInfo>().getSchedModel();
|
||||
MRI = &MF.getRegInfo();
|
||||
|
@ -120,7 +120,7 @@ bool AArch64DeadRegisterDefinitions::processMachineBasicBlock(
|
||||
// Scan the function for instructions that have a dead definition of a
|
||||
// register. Replace that register with the zero register when possible.
|
||||
bool AArch64DeadRegisterDefinitions::runOnMachineFunction(MachineFunction &MF) {
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
bool Changed = false;
|
||||
DEBUG(dbgs() << "***** AArch64DeadRegisterDefinitions *****\n");
|
||||
|
||||
|
@ -723,8 +723,7 @@ bool AArch64ExpandPseudo::expandMBB(MachineBasicBlock &MBB) {
|
||||
}
|
||||
|
||||
bool AArch64ExpandPseudo::runOnMachineFunction(MachineFunction &MF) {
|
||||
TII = static_cast<const AArch64InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
TII = static_cast<const AArch64InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
bool Modified = false;
|
||||
for (auto &MBB : MF)
|
||||
|
@ -86,8 +86,7 @@ bool AArch64FrameLowering::hasFP(const MachineFunction &MF) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
|
||||
#ifndef NDEBUG
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
|
||||
assert(!RegInfo->needsStackRealignment(MF) &&
|
||||
"No stack realignment on AArch64!");
|
||||
#endif
|
||||
@ -109,15 +108,14 @@ AArch64FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
|
||||
void AArch64FrameLowering::eliminateCallFramePseudoInstr(
|
||||
MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const AArch64InstrInfo *TII = static_cast<const AArch64InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const AArch64InstrInfo *TII =
|
||||
static_cast<const AArch64InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
DebugLoc DL = I->getDebugLoc();
|
||||
int Opc = I->getOpcode();
|
||||
bool IsDestroy = Opc == TII->getCallFrameDestroyOpcode();
|
||||
uint64_t CalleePopAmount = IsDestroy ? I->getOperand(1).getImm() : 0;
|
||||
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
if (!TFI->hasReservedCallFrame(MF)) {
|
||||
unsigned Align = getStackAlignment();
|
||||
|
||||
@ -160,8 +158,7 @@ void AArch64FrameLowering::emitCalleeSavedFrameMoves(
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MachineModuleInfo &MMI = MF.getMMI();
|
||||
const MCRegisterInfo *MRI = MMI.getContext().getRegisterInfo();
|
||||
const TargetInstrInfo *TII =
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo();
|
||||
DebugLoc DL = MBB.findDebugLoc(MBBI);
|
||||
|
||||
// Add callee saved registers to move list.
|
||||
@ -169,7 +166,7 @@ void AArch64FrameLowering::emitCalleeSavedFrameMoves(
|
||||
if (CSI.empty())
|
||||
return;
|
||||
|
||||
const DataLayout *TD = MF.getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout *TD = MF.getSubtarget().getDataLayout();
|
||||
bool HasFP = hasFP(MF);
|
||||
|
||||
// Calculate amount of bytes used for return address storing.
|
||||
@ -208,9 +205,8 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const Function *Fn = MF.getFunction();
|
||||
const AArch64RegisterInfo *RegInfo = static_cast<const AArch64RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
const TargetInstrInfo *TII =
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo();
|
||||
MachineModuleInfo &MMI = MF.getMMI();
|
||||
AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>();
|
||||
bool needsFrameMoves = MMI.hasDebugInfo() || Fn->needsUnwindTableEntry();
|
||||
@ -304,7 +300,7 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
TII->copyPhysReg(MBB, MBBI, DL, AArch64::X19, AArch64::SP, false);
|
||||
|
||||
if (needsFrameMoves) {
|
||||
const DataLayout *TD = MF.getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout *TD = MF.getSubtarget().getDataLayout();
|
||||
const int StackGrowth = -TD->getPointerSize(0);
|
||||
unsigned FramePtr = RegInfo->getFrameRegister(MF);
|
||||
|
||||
@ -438,10 +434,10 @@ void AArch64FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr();
|
||||
assert(MBBI->isReturn() && "Can only insert epilog into returning blocks");
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const AArch64InstrInfo *TII = static_cast<const AArch64InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const AArch64InstrInfo *TII =
|
||||
static_cast<const AArch64InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const AArch64RegisterInfo *RegInfo = static_cast<const AArch64RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
DebugLoc DL = MBBI->getDebugLoc();
|
||||
unsigned RetOpcode = MBBI->getOpcode();
|
||||
|
||||
@ -552,7 +548,7 @@ int AArch64FrameLowering::resolveFrameIndexReference(const MachineFunction &MF,
|
||||
bool PreferFP) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const AArch64RegisterInfo *RegInfo = static_cast<const AArch64RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>();
|
||||
int FPOffset = MFI->getObjectOffset(FI) + 16;
|
||||
int Offset = MFI->getObjectOffset(FI) + MFI->getStackSize();
|
||||
@ -621,8 +617,7 @@ bool AArch64FrameLowering::spillCalleeSavedRegisters(
|
||||
const std::vector<CalleeSavedInfo> &CSI,
|
||||
const TargetRegisterInfo *TRI) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
unsigned Count = CSI.size();
|
||||
DebugLoc DL;
|
||||
assert((Count & 1) == 0 && "Odd number of callee-saved regs to spill!");
|
||||
@ -698,8 +693,7 @@ bool AArch64FrameLowering::restoreCalleeSavedRegisters(
|
||||
const std::vector<CalleeSavedInfo> &CSI,
|
||||
const TargetRegisterInfo *TRI) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
unsigned Count = CSI.size();
|
||||
DebugLoc DL;
|
||||
assert((Count & 1) == 0 && "Odd number of callee-saved regs to spill!");
|
||||
@ -767,7 +761,7 @@ bool AArch64FrameLowering::restoreCalleeSavedRegisters(
|
||||
void AArch64FrameLowering::processFunctionBeforeCalleeSavedScan(
|
||||
MachineFunction &MF, RegScavenger *RS) const {
|
||||
const AArch64RegisterInfo *RegInfo = static_cast<const AArch64RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>();
|
||||
MachineRegisterInfo *MRI = &MF.getRegInfo();
|
||||
SmallVector<unsigned, 4> UnspilledCSGPRs;
|
||||
|
@ -76,8 +76,7 @@ AArch64RegisterInfo::getThisReturnPreservedMask(CallingConv::ID) const {
|
||||
|
||||
BitVector
|
||||
AArch64RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
// FIXME: avoid re-calculating this every time.
|
||||
BitVector Reserved(getNumRegs());
|
||||
@ -106,8 +105,7 @@ AArch64RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
|
||||
bool AArch64RegisterInfo::isReservedReg(const MachineFunction &MF,
|
||||
unsigned Reg) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
switch (Reg) {
|
||||
default:
|
||||
@ -171,8 +169,7 @@ bool AArch64RegisterInfo::hasBasePointer(const MachineFunction &MF) const {
|
||||
|
||||
unsigned
|
||||
AArch64RegisterInfo::getFrameRegister(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
return TFI->hasFP(MF) ? AArch64::FP : AArch64::SP;
|
||||
}
|
||||
@ -239,8 +236,7 @@ bool AArch64RegisterInfo::needsFrameBaseReg(MachineInstr *MI,
|
||||
// Note that the incoming offset is based on the SP value at function entry,
|
||||
// so it'll be negative.
|
||||
MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
|
||||
// Estimate an offset from the frame pointer.
|
||||
@ -330,7 +326,7 @@ void AArch64RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MachineBasicBlock &MBB = *MI.getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const AArch64FrameLowering *TFI = static_cast<const AArch64FrameLowering *>(
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering());
|
||||
MF.getSubtarget().getFrameLowering());
|
||||
|
||||
int FrameIndex = MI.getOperand(FIOperandNum).getIndex();
|
||||
unsigned FrameReg;
|
||||
@ -368,8 +364,7 @@ namespace llvm {
|
||||
|
||||
unsigned AArch64RegisterInfo::getRegPressureLimit(const TargetRegisterClass *RC,
|
||||
MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
switch (RC->getID()) {
|
||||
default:
|
||||
|
@ -118,9 +118,9 @@ bool AArch64StorePairSuppress::isNarrowFPStore(const MachineInstr &MI) {
|
||||
|
||||
bool AArch64StorePairSuppress::runOnMachineFunction(MachineFunction &mf) {
|
||||
MF = &mf;
|
||||
TII = static_cast<const AArch64InstrInfo *>(
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
TRI = MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII =
|
||||
static_cast<const AArch64InstrInfo *>(MF->getSubtarget().getInstrInfo());
|
||||
TRI = MF->getSubtarget().getRegisterInfo();
|
||||
MRI = &MF->getRegInfo();
|
||||
const TargetSubtargetInfo &ST =
|
||||
MF->getTarget().getSubtarget<TargetSubtargetInfo>();
|
||||
|
@ -677,9 +677,8 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
|
||||
}
|
||||
|
||||
bool A15SDOptimizer::runOnMachineFunction(MachineFunction &Fn) {
|
||||
TII = static_cast<const ARMBaseInstrInfo *>(
|
||||
Fn.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
TRI = Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = static_cast<const ARMBaseInstrInfo *>(Fn.getSubtarget().getInstrInfo());
|
||||
TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
MRI = &Fn.getRegInfo();
|
||||
bool Modified = false;
|
||||
|
||||
|
@ -137,8 +137,7 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
|
||||
assert(!MO.getSubReg() && "Subregs should be eliminated!");
|
||||
if(ARM::GPRPairRegClass.contains(Reg)) {
|
||||
const MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
Reg = TRI->getSubReg(Reg, ARM::gsub_0);
|
||||
}
|
||||
O << ARMInstPrinter::getRegisterName(Reg);
|
||||
@ -231,8 +230,7 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
case 'y': // Print a VFP single precision register as indexed double.
|
||||
if (MI->getOperand(OpNum).isReg()) {
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
// Find the 'd' register that has this 's' register as a sub-register,
|
||||
// and determine the lane number.
|
||||
for (MCSuperRegIterator SR(Reg, TRI); SR.isValid(); ++SR) {
|
||||
@ -264,8 +262,7 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
// inline asm statement.
|
||||
O << "{";
|
||||
if (ARM::GPRPairRegClass.contains(RegBegin)) {
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
unsigned Reg0 = TRI->getSubReg(RegBegin, ARM::gsub_0);
|
||||
O << ARMInstPrinter::getRegisterName(Reg0) << ", ";
|
||||
RegBegin = TRI->getSubReg(RegBegin, ARM::gsub_1);
|
||||
@ -321,8 +318,7 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
const MachineOperand &MO = MI->getOperand(OpNum);
|
||||
if (!MO.isReg())
|
||||
return true;
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
unsigned Reg = TRI->getSubReg(MO.getReg(), ExtraCode[0] == 'Q' ?
|
||||
ARM::gsub_0 : ARM::gsub_1);
|
||||
O << ARMInstPrinter::getRegisterName(Reg);
|
||||
@ -348,8 +344,7 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
if (!ARM::QPRRegClass.contains(Reg))
|
||||
return true;
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
unsigned SubReg = TRI->getSubReg(Reg, ExtraCode[0] == 'e' ?
|
||||
ARM::dsub_0 : ARM::dsub_1);
|
||||
O << ARMInstPrinter::getRegisterName(SubReg);
|
||||
@ -364,8 +359,7 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
||||
if (!MO.isReg())
|
||||
return true;
|
||||
const MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
unsigned Reg = MO.getReg();
|
||||
if(!ARM::GPRPairRegClass.contains(Reg))
|
||||
return false;
|
||||
@ -1035,8 +1029,7 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) {
|
||||
MCTargetStreamer &TS = *OutStreamer.getTargetStreamer();
|
||||
ARMTargetStreamer &ATS = static_cast<ARMTargetStreamer &>(TS);
|
||||
const MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
|
||||
const ARMFunctionInfo &AFI = *MF.getInfo<ARMFunctionInfo>();
|
||||
|
||||
unsigned FramePtr = RegInfo->getFrameRegister(MF);
|
||||
|
@ -123,8 +123,7 @@ ARMBaseRegisterInfo::getThisReturnPreservedMask(CallingConv::ID CC) const {
|
||||
|
||||
BitVector ARMBaseRegisterInfo::
|
||||
getReservedRegs(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
// FIXME: avoid re-calculating this every time.
|
||||
BitVector Reserved(getNumRegs());
|
||||
@ -190,8 +189,7 @@ ARMBaseRegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {
|
||||
unsigned
|
||||
ARMBaseRegisterInfo::getRegPressureLimit(const TargetRegisterClass *RC,
|
||||
MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
switch (RC->getID()) {
|
||||
default:
|
||||
@ -313,8 +311,7 @@ ARMBaseRegisterInfo::avoidWriteAfterWrite(const TargetRegisterClass *RC) const {
|
||||
bool ARMBaseRegisterInfo::hasBasePointer(const MachineFunction &MF) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
// When outgoing call frames are so large that we adjust the stack pointer
|
||||
// around the call, we can no longer use the stack pointer to reach the
|
||||
@ -396,8 +393,7 @@ cannotEliminateFrame(const MachineFunction &MF) const {
|
||||
|
||||
unsigned
|
||||
ARMBaseRegisterInfo::getFrameRegister(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
if (TFI->hasFP(MF))
|
||||
return FramePtr;
|
||||
@ -414,8 +410,7 @@ emitLoadConstPool(MachineBasicBlock &MBB,
|
||||
ARMCC::CondCodes Pred,
|
||||
unsigned PredReg, unsigned MIFlags) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
MachineConstantPool *ConstantPool = MF.getConstantPool();
|
||||
const Constant *C =
|
||||
ConstantInt::get(Type::getInt32Ty(MF.getFunction()->getContext()), Val);
|
||||
@ -542,8 +537,7 @@ needsFrameBaseReg(MachineInstr *MI, int64_t Offset) const {
|
||||
// Note that the incoming offset is based on the SP value at function entry,
|
||||
// so it'll be negative.
|
||||
MachineFunction &MF = *MI->getParent()->getParent();
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
|
||||
@ -605,8 +599,7 @@ materializeFrameBaseRegister(MachineBasicBlock *MBB,
|
||||
|
||||
const MachineFunction &MF = *MBB->getParent();
|
||||
MachineRegisterInfo &MRI = MBB->getParent()->getRegInfo();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
const MCInstrDesc &MCID = TII.get(ADDriOpc);
|
||||
MRI.constrainRegClass(BaseReg, TII.getRegClass(MCID, 0, this, MF));
|
||||
|
||||
@ -622,8 +615,7 @@ void ARMBaseRegisterInfo::resolveFrameIndex(MachineInstr &MI, unsigned BaseReg,
|
||||
MachineBasicBlock &MBB = *MI.getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
int Off = Offset; // ARM doesn't need the general 64-bit offsets
|
||||
unsigned i = 0;
|
||||
@ -722,10 +714,9 @@ ARMBaseRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MachineBasicBlock &MBB = *MI.getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const ARMFrameLowering *TFI = static_cast<const ARMFrameLowering *>(
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering());
|
||||
MF.getSubtarget().getFrameLowering());
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
assert(!AFI->isThumb1OnlyFunction() &&
|
||||
"This eliminateFrameIndex does not support Thumb1!");
|
||||
|
@ -531,7 +531,7 @@ ARMConstantIslands::doInitialPlacement(std::vector<MachineInstr*> &CPEMIs) {
|
||||
// identity mapping of CPI's to CPE's.
|
||||
const std::vector<MachineConstantPoolEntry> &CPs = MCP->getConstants();
|
||||
|
||||
const DataLayout &TD = *MF->getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout &TD = *MF->getSubtarget().getDataLayout();
|
||||
for (unsigned i = 0, e = CPs.size(); i != e; ++i) {
|
||||
unsigned Size = TD.getTypeAllocSize(CPs[i].getType());
|
||||
assert(Size >= 4 && "Too small constant pool entry");
|
||||
|
@ -867,9 +867,8 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
||||
if (RI.hasBasePointer(MF)) {
|
||||
int32_t NumBytes = AFI->getFramePtrSpillOffset();
|
||||
unsigned FramePtr = RI.getFrameRegister(MF);
|
||||
assert(
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering()->hasFP(MF) &&
|
||||
"base pointer without frame pointer?");
|
||||
assert(MF.getSubtarget().getFrameLowering()->hasFP(MF) &&
|
||||
"base pointer without frame pointer?");
|
||||
|
||||
if (AFI->isThumb2Function()) {
|
||||
emitT2RegPlusImmediate(MBB, MBBI, MI.getDebugLoc(), ARM::R6,
|
||||
|
@ -47,8 +47,7 @@ ARMFrameLowering::ARMFrameLowering(const ARMSubtarget &sti)
|
||||
/// pointer register. This is true if the function has variable sized allocas
|
||||
/// or if frame pointer elimination is disabled.
|
||||
bool ARMFrameLowering::hasFP(const MachineFunction &MF) const {
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// iOS requires FP not to be clobbered for backtracing purpose.
|
||||
if (STI.isTargetIOS())
|
||||
@ -576,11 +575,9 @@ void ARMFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
DebugLoc dl = MBBI->getDebugLoc();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
assert(!AFI->isThumb1OnlyFunction() &&
|
||||
"This emitEpilogue does not support Thumb1!");
|
||||
bool isARM = !AFI->isThumbFunction();
|
||||
@ -725,7 +722,7 @@ ARMFrameLowering::ResolveFrameIndexReference(const MachineFunction &MF,
|
||||
int SPAdj) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const ARMBaseRegisterInfo *RegInfo = static_cast<const ARMBaseRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
int Offset = MFI->getObjectOffset(FI) + MFI->getStackSize();
|
||||
int FPOffset = Offset - AFI->getFramePtrSpillOffset();
|
||||
@ -810,8 +807,7 @@ void ARMFrameLowering::emitPushInst(MachineBasicBlock &MBB,
|
||||
unsigned NumAlignedDPRCS2Regs,
|
||||
unsigned MIFlags) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
DebugLoc DL;
|
||||
if (MI != MBB.end()) DL = MI->getDebugLoc();
|
||||
@ -884,8 +880,7 @@ void ARMFrameLowering::emitPopInst(MachineBasicBlock &MBB,
|
||||
bool(*Func)(unsigned, bool),
|
||||
unsigned NumAlignedDPRCS2Regs) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
unsigned RetOpcode = MI->getOpcode();
|
||||
@ -975,8 +970,7 @@ static void emitAlignedDPRCS2Spills(MachineBasicBlock &MBB,
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
|
||||
// Mark the D-register spill slots as properly aligned. Since MFI computes
|
||||
@ -1135,8 +1129,7 @@ static void emitAlignedDPRCS2Restores(MachineBasicBlock &MBB,
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
// Find the frame index assigned to d8.
|
||||
int D8SpillFI = 0;
|
||||
@ -1359,7 +1352,7 @@ static void checkNumAlignedDPRCS2Regs(MachineFunction &MF) {
|
||||
|
||||
// Aligned spills require stack realignment.
|
||||
const ARMBaseRegisterInfo *RegInfo = static_cast<const ARMBaseRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
if (!RegInfo->canRealignStack(MF))
|
||||
return;
|
||||
|
||||
@ -1399,10 +1392,9 @@ ARMFrameLowering::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
SmallVector<unsigned, 4> UnspilledCS1GPRs;
|
||||
SmallVector<unsigned, 4> UnspilledCS2GPRs;
|
||||
const ARMBaseRegisterInfo *RegInfo = static_cast<const ARMBaseRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
@ -1643,8 +1635,7 @@ void ARMFrameLowering::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
if (!hasReservedCallFrame(MF)) {
|
||||
// If we have alloca, convert as follows:
|
||||
// ADJCALLSTACKDOWN -> sub, sp, sp, amount
|
||||
@ -1762,8 +1753,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(MachineFunction &MF) const {
|
||||
MCContext &Context = MMI.getContext();
|
||||
const MCRegisterInfo *MRI = Context.getRegisterInfo();
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
ARMFunctionInfo *ARMFI = MF.getInfo<ARMFunctionInfo>();
|
||||
DebugLoc DL;
|
||||
|
||||
|
@ -425,7 +425,7 @@ bool ARMDAGToDAGISel::hasNoVMLxHazardUse(SDNode *N) const {
|
||||
return true;
|
||||
if (Use->isMachineOpcode()) {
|
||||
const ARMBaseInstrInfo *TII = static_cast<const ARMBaseInstrInfo *>(
|
||||
CurDAG->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
CurDAG->getSubtarget().getInstrInfo());
|
||||
|
||||
const MCInstrDesc &MCID = TII->get(Use->getMachineOpcode());
|
||||
if (MCID.mayStore())
|
||||
|
@ -1793,9 +1793,9 @@ namespace {
|
||||
}
|
||||
|
||||
bool ARMPreAllocLoadStoreOpt::runOnMachineFunction(MachineFunction &Fn) {
|
||||
TD = Fn.getTarget().getSubtargetImpl()->getDataLayout();
|
||||
TII = Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
TRI = Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TD = Fn.getSubtarget().getDataLayout();
|
||||
TII = Fn.getSubtarget().getInstrInfo();
|
||||
TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
STI = &Fn.getTarget().getSubtarget<ARMSubtarget>();
|
||||
MRI = &Fn.getRegInfo();
|
||||
MF = &Fn;
|
||||
|
@ -378,9 +378,8 @@ bool MLxExpansion::ExpandFPMLxInstructions(MachineBasicBlock &MBB) {
|
||||
}
|
||||
|
||||
bool MLxExpansion::runOnMachineFunction(MachineFunction &Fn) {
|
||||
TII = static_cast<const ARMBaseInstrInfo *>(
|
||||
Fn.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
TRI = Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = static_cast<const ARMBaseInstrInfo *>(Fn.getSubtarget().getInstrInfo());
|
||||
TRI = Fn.getSubtarget().getRegisterInfo();
|
||||
MRI = &Fn.getRegInfo();
|
||||
const ARMSubtarget *STI = &Fn.getTarget().getSubtarget<ARMSubtarget>();
|
||||
isLikeA9 = STI->isLikeA9() || STI->isSwift();
|
||||
|
@ -52,10 +52,9 @@ void Thumb1FrameLowering::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const Thumb1InstrInfo &TII =
|
||||
*static_cast<const Thumb1InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Thumb1InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const Thumb1RegisterInfo *RegInfo = static_cast<const Thumb1RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
if (!hasReservedCallFrame(MF)) {
|
||||
// If we have alloca, convert as follows:
|
||||
// ADJCALLSTACKDOWN -> sub, sp, sp, amount
|
||||
@ -91,10 +90,9 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineModuleInfo &MMI = MF.getMMI();
|
||||
const MCRegisterInfo *MRI = MMI.getContext().getRegisterInfo();
|
||||
const Thumb1RegisterInfo *RegInfo = static_cast<const Thumb1RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const Thumb1InstrInfo &TII =
|
||||
*static_cast<const Thumb1InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Thumb1InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
unsigned Align = MF.getTarget()
|
||||
.getSubtargetImpl()
|
||||
@ -327,10 +325,9 @@ void Thumb1FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
const Thumb1RegisterInfo *RegInfo = static_cast<const Thumb1RegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
const Thumb1InstrInfo &TII =
|
||||
*static_cast<const Thumb1InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Thumb1InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
unsigned Align = MF.getTarget()
|
||||
.getSubtargetImpl()
|
||||
@ -426,8 +423,7 @@ spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
|
||||
DebugLoc DL;
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
if (MI != MBB.end()) DL = MI->getDebugLoc();
|
||||
|
||||
@ -466,8 +462,7 @@ restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
bool isVarArg = AFI->getArgRegsSaveSize() > 0;
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
|
@ -67,8 +67,7 @@ Thumb1RegisterInfo::emitLoadConstPool(MachineBasicBlock &MBB,
|
||||
ARMCC::CondCodes Pred, unsigned PredReg,
|
||||
unsigned MIFlags) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
MachineConstantPool *ConstantPool = MF.getConstantPool();
|
||||
const Constant *C = ConstantInt::get(
|
||||
Type::getInt32Ty(MBB.getParent()->getFunction()->getContext()), Val);
|
||||
@ -516,8 +515,7 @@ Thumb1RegisterInfo::saveScavengerRegister(MachineBasicBlock &MBB,
|
||||
// off the frame pointer (if, for example, there are alloca() calls in
|
||||
// the function, the offset will be negative. Use R12 instead since that's
|
||||
// a call clobbered register that we know won't be used in Thumb1 mode.
|
||||
const TargetInstrInfo &TII =
|
||||
*MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MBB.getParent()->getSubtarget().getInstrInfo();
|
||||
DebugLoc DL;
|
||||
AddDefaultPred(BuildMI(MBB, I, DL, TII.get(ARM::tMOVr))
|
||||
.addReg(ARM::R12, RegState::Define)
|
||||
@ -564,8 +562,7 @@ Thumb1RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MachineBasicBlock &MBB = *MI.getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const ARMBaseInstrInfo &TII =
|
||||
*static_cast<const ARMBaseInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const ARMBaseInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
DebugLoc dl = MI.getDebugLoc();
|
||||
MachineInstrBuilder MIB(*MBB.getParent(), &MI);
|
||||
@ -576,8 +573,7 @@ Thumb1RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MF.getFrameInfo()->getStackSize() + SPAdj;
|
||||
|
||||
if (MF.getFrameInfo()->hasVarSizedObjects()) {
|
||||
assert(SPAdj == 0 &&
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering()->hasFP(MF) &&
|
||||
assert(SPAdj == 0 && MF.getSubtarget().getFrameLowering()->hasFP(MF) &&
|
||||
"Unexpected");
|
||||
// There are alloca()'s in this function, must reference off the frame
|
||||
// pointer or base pointer instead.
|
||||
|
@ -40,8 +40,7 @@ Thumb2RegisterInfo::emitLoadConstPool(MachineBasicBlock &MBB,
|
||||
ARMCC::CondCodes Pred, unsigned PredReg,
|
||||
unsigned MIFlags) const {
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
MachineConstantPool *ConstantPool = MF.getConstantPool();
|
||||
const Constant *C = ConstantInt::get(
|
||||
Type::getInt32Ty(MBB.getParent()->getFunction()->getContext()), Val);
|
||||
|
@ -417,9 +417,8 @@ bool HexagonCopyToCombine::runOnMachineFunction(MachineFunction &MF) {
|
||||
bool HasChanged = false;
|
||||
|
||||
// Get target info.
|
||||
TRI = MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
TII = static_cast<const HexagonInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
TRI = MF.getSubtarget().getRegisterInfo();
|
||||
TII = static_cast<const HexagonInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
// Combine aggressively (for code size)
|
||||
ShouldCombineAggressively =
|
||||
|
@ -160,8 +160,7 @@ bool HexagonFixupHwLoops::fixupLoopInstrs(MachineFunction &MF) {
|
||||
void HexagonFixupHwLoops::convertLoopInstr(MachineFunction &MF,
|
||||
MachineBasicBlock::iterator &MII,
|
||||
RegScavenger &RS) {
|
||||
const TargetInstrInfo *TII =
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo();
|
||||
MachineBasicBlock *MBB = MII->getParent();
|
||||
DebugLoc DL = MII->getDebugLoc();
|
||||
unsigned Scratch = RS.scavengeRegister(&Hexagon::IntRegsRegClass, MII, 0);
|
||||
|
@ -81,7 +81,7 @@ void HexagonFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MachineBasicBlock::iterator MBBI = MBB.begin();
|
||||
const HexagonRegisterInfo *QRI = static_cast<const HexagonRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
|
||||
determineFrameLayout(MF);
|
||||
|
||||
@ -118,8 +118,7 @@ void HexagonFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
// Check for overflow.
|
||||
// Hexagon_TODO: Ugh! hardcoding. Is there an API that can be used?
|
||||
const int ALLOCFRAME_MAX = 16384;
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
if (NumBytes >= ALLOCFRAME_MAX) {
|
||||
// Emit allocframe(#0).
|
||||
@ -158,8 +157,7 @@ void HexagonFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MachineBasicBlock::iterator MBBI = std::prev(MBB.end());
|
||||
MachineBasicBlock::iterator MBBI_end = MBB.end();
|
||||
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
// Handle EH_RETURN.
|
||||
if (MBBI->getOpcode() == Hexagon::EH_RETURN_JMPR) {
|
||||
assert(MBBI->getOperand(0).isReg() && "Offset should be in register!");
|
||||
@ -230,8 +228,7 @@ HexagonFrameLowering::spillCalleeSavedRegisters(
|
||||
const std::vector<CalleeSavedInfo> &CSI,
|
||||
const TargetRegisterInfo *TRI) const {
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
|
||||
|
||||
if (CSI.empty()) {
|
||||
return false;
|
||||
@ -286,8 +283,7 @@ bool HexagonFrameLowering::restoreCalleeSavedRegisters(
|
||||
const TargetRegisterInfo *TRI) const {
|
||||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
|
||||
|
||||
if (CSI.empty()) {
|
||||
return false;
|
||||
|
@ -464,7 +464,7 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
SmallVector<SDValue, 8> MemOpChains;
|
||||
|
||||
const HexagonRegisterInfo *QRI = static_cast<const HexagonRegisterInfo *>(
|
||||
DAG.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
DAG.getSubtarget().getRegisterInfo());
|
||||
SDValue StackPtr =
|
||||
DAG.getCopyFromReg(Chain, dl, QRI->getStackRegister(), getPointerTy());
|
||||
|
||||
@ -723,7 +723,7 @@ SDValue HexagonTargetLowering::LowerINLINEASM(SDValue Op,
|
||||
// Check it to be lr
|
||||
const HexagonRegisterInfo *QRI =
|
||||
static_cast<const HexagonRegisterInfo *>(
|
||||
DAG.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
DAG.getSubtarget().getRegisterInfo());
|
||||
if (Reg == QRI->getRARegister()) {
|
||||
FuncInfo->setHasClobberLR(true);
|
||||
break;
|
||||
@ -817,7 +817,7 @@ HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(SDValue Op,
|
||||
// The Sub result contains the new stack start address, so it
|
||||
// must be placed in the stack pointer register.
|
||||
const HexagonRegisterInfo *QRI = static_cast<const HexagonRegisterInfo *>(
|
||||
DAG.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
DAG.getSubtarget().getRegisterInfo());
|
||||
SDValue CopyChain = DAG.getCopyToReg(Chain, dl, QRI->getStackRegister(), Sub);
|
||||
|
||||
SDValue Ops[2] = { ArgAdjust, CopyChain };
|
||||
@ -964,8 +964,7 @@ HexagonTargetLowering::LowerConstantPool(SDValue Op, SelectionDAG &DAG) const {
|
||||
|
||||
SDValue
|
||||
HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
|
||||
const TargetRegisterInfo *TRI =
|
||||
DAG.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = DAG.getSubtarget().getRegisterInfo();
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MFI->setReturnAddressIsTaken(true);
|
||||
@ -992,7 +991,7 @@ HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue
|
||||
HexagonTargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
|
||||
const HexagonRegisterInfo *TRI = static_cast<const HexagonRegisterInfo *>(
|
||||
DAG.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
DAG.getSubtarget().getRegisterInfo());
|
||||
MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
|
||||
MFI->setFrameAddressIsTaken(true);
|
||||
|
||||
|
@ -362,10 +362,9 @@ bool HexagonNewValueJump::runOnMachineFunction(MachineFunction &MF) {
|
||||
LiveVariables &LVs = getAnalysis<LiveVariables>();
|
||||
#endif
|
||||
|
||||
QII = static_cast<const HexagonInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
QII = static_cast<const HexagonInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
QRI = static_cast<const HexagonRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
MBPI = &getAnalysis<MachineBranchProbabilityInfo>();
|
||||
|
||||
if (!QRI->Subtarget.hasV4TOps() ||
|
||||
|
@ -111,8 +111,7 @@ INITIALIZE_PASS(HexagonPeephole, "hexagon-peephole", "Hexagon Peephole",
|
||||
false, false)
|
||||
|
||||
bool HexagonPeephole::runOnMachineFunction(MachineFunction &MF) {
|
||||
QII = static_cast<const HexagonInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
QII = static_cast<const HexagonInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
QRI = MF.getTarget().getSubtarget<HexagonSubtarget>().getRegisterInfo();
|
||||
MRI = &MF.getRegInfo();
|
||||
|
||||
|
@ -128,14 +128,12 @@ void HexagonRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
// Addressable stack objects are accessed using neg. offsets from %fp.
|
||||
MachineFunction &MF = *MI.getParent()->getParent();
|
||||
const HexagonInstrInfo &TII =
|
||||
*static_cast<const HexagonInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const HexagonInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
int Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex);
|
||||
MachineFrameInfo &MFI = *MF.getFrameInfo();
|
||||
|
||||
unsigned FrameReg = getFrameRegister(MF);
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
if (!TFI->hasFP(MF)) {
|
||||
// We will not reserve space on the stack for the lr and fp registers.
|
||||
Offset -= 2 * Hexagon_WordSize;
|
||||
@ -280,8 +278,7 @@ unsigned HexagonRegisterInfo::getRARegister() const {
|
||||
|
||||
unsigned HexagonRegisterInfo::getFrameRegister(const MachineFunction
|
||||
&MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
if (TFI->hasFP(MF)) {
|
||||
return Hexagon::R30;
|
||||
}
|
||||
|
@ -191,8 +191,7 @@ HexagonPacketizerList::HexagonPacketizerList(
|
||||
}
|
||||
|
||||
bool HexagonPacketizer::runOnMachineFunction(MachineFunction &Fn) {
|
||||
const TargetInstrInfo *TII =
|
||||
Fn.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo *TII = Fn.getSubtarget().getInstrInfo();
|
||||
MachineLoopInfo &MLI = getAnalysis<MachineLoopInfo>();
|
||||
MachineDominatorTree &MDT = getAnalysis<MachineDominatorTree>();
|
||||
const MachineBranchProbabilityInfo *MBPI =
|
||||
|
@ -54,8 +54,8 @@ FunctionPass *llvm::createMSP430BranchSelectionPass() {
|
||||
}
|
||||
|
||||
bool MSP430BSel::runOnMachineFunction(MachineFunction &Fn) {
|
||||
const MSP430InstrInfo *TII = static_cast<const MSP430InstrInfo *>(
|
||||
Fn.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MSP430InstrInfo *TII =
|
||||
static_cast<const MSP430InstrInfo *>(Fn.getSubtarget().getInstrInfo());
|
||||
// Give the blocks of the function a dense, in-order, numbering.
|
||||
Fn.RenumberBlocks();
|
||||
BlockSizes.resize(Fn.getNumBlockIDs());
|
||||
|
@ -44,8 +44,7 @@ void MSP430FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MSP430MachineFunctionInfo *MSP430FI = MF.getInfo<MSP430MachineFunctionInfo>();
|
||||
const MSP430InstrInfo &TII =
|
||||
*static_cast<const MSP430InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const MSP430InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
MachineBasicBlock::iterator MBBI = MBB.begin();
|
||||
DebugLoc DL = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
|
||||
@ -110,8 +109,7 @@ void MSP430FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
MSP430MachineFunctionInfo *MSP430FI = MF.getInfo<MSP430MachineFunctionInfo>();
|
||||
const MSP430InstrInfo &TII =
|
||||
*static_cast<const MSP430InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const MSP430InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr();
|
||||
unsigned RetOpcode = MBBI->getOpcode();
|
||||
@ -191,8 +189,7 @@ MSP430FrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
if (MI != MBB.end()) DL = MI->getDebugLoc();
|
||||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
MSP430MachineFunctionInfo *MFI = MF.getInfo<MSP430MachineFunctionInfo>();
|
||||
MFI->setCalleeSavedFrameSize(CSI.size() * 2);
|
||||
|
||||
@ -218,8 +215,7 @@ MSP430FrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
if (MI != MBB.end()) DL = MI->getDebugLoc();
|
||||
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
for (unsigned i = 0, e = CSI.size(); i != e; ++i)
|
||||
BuildMI(MBB, MI, DL, TII.get(MSP430::POP16r), CSI[i].getReg());
|
||||
@ -231,8 +227,7 @@ void MSP430FrameLowering::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const MSP430InstrInfo &TII =
|
||||
*static_cast<const MSP430InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const MSP430InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
unsigned StackAlign = getStackAlignment();
|
||||
|
||||
if (!hasReservedCallFrame(MF)) {
|
||||
|
@ -307,8 +307,7 @@ unsigned MSP430InstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const {
|
||||
return 0;
|
||||
case TargetOpcode::INLINEASM: {
|
||||
const MachineFunction *MF = MI->getParent()->getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
|
||||
return TII.getInlineAsmLength(MI->getOperand(0).getSymbolName(),
|
||||
*MF->getTarget().getMCAsmInfo());
|
||||
}
|
||||
|
@ -37,8 +37,7 @@ MSP430RegisterInfo::MSP430RegisterInfo()
|
||||
|
||||
const MCPhysReg*
|
||||
MSP430RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF->getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF->getSubtarget().getFrameLowering();
|
||||
const Function* F = MF->getFunction();
|
||||
static const MCPhysReg CalleeSavedRegs[] = {
|
||||
MSP430::FPW, MSP430::R5W, MSP430::R6W, MSP430::R7W,
|
||||
@ -74,8 +73,7 @@ MSP430RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
||||
|
||||
BitVector MSP430RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
BitVector Reserved(getNumRegs());
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
// Mark 4 special registers with subregisters as reserved.
|
||||
Reserved.set(MSP430::PCB);
|
||||
@ -111,8 +109,7 @@ MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MachineInstr &MI = *II;
|
||||
MachineBasicBlock &MBB = *MI.getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
DebugLoc dl = MI.getDebugLoc();
|
||||
int FrameIndex = MI.getOperand(FIOperandNum).getIndex();
|
||||
|
||||
@ -134,8 +131,7 @@ MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
// This is actually "load effective address" of the stack slot
|
||||
// instruction. We have only two-address instructions, thus we need to
|
||||
// expand it into mov + add
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
|
||||
MI.setDesc(TII.get(MSP430::MOV16rr));
|
||||
MI.getOperand(FIOperandNum).ChangeToRegister(BasePtr, false);
|
||||
@ -160,8 +156,7 @@ MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
}
|
||||
|
||||
unsigned MSP430RegisterInfo::getFrameRegister(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
|
||||
return TFI->hasFP(MF) ? MSP430::FPW : MSP430::SPW;
|
||||
}
|
||||
|
@ -36,8 +36,7 @@ void Mips16FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineBasicBlock &MBB = MF.front();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const Mips16InstrInfo &TII =
|
||||
*static_cast<const Mips16InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Mips16InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
MachineBasicBlock::iterator MBBI = MBB.begin();
|
||||
DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
|
||||
uint64_t StackSize = MFI->getStackSize();
|
||||
@ -85,8 +84,7 @@ void Mips16FrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const Mips16InstrInfo &TII =
|
||||
*static_cast<const Mips16InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Mips16InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
DebugLoc dl = MBBI->getDebugLoc();
|
||||
uint64_t StackSize = MFI->getStackSize();
|
||||
|
||||
@ -156,8 +154,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
Amount = -Amount;
|
||||
|
||||
const Mips16InstrInfo &TII =
|
||||
*static_cast<const Mips16InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Mips16InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
TII.adjustStackPtr(Mips::SP, Amount, MBB, I);
|
||||
}
|
||||
@ -177,8 +174,7 @@ void Mips16FrameLowering::
|
||||
processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
RegScavenger *RS) const {
|
||||
const Mips16InstrInfo &TII =
|
||||
*static_cast<const Mips16InstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const Mips16InstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RI = TII.getRegisterInfo();
|
||||
const BitVector Reserved = RI.getReservedRegs(MF);
|
||||
bool SaveS2 = Reserved[Mips::S2];
|
||||
|
@ -72,8 +72,7 @@ void Mips16DAGToDAGISel::initGlobalBaseReg(MachineFunction &MF) {
|
||||
MachineBasicBlock &MBB = MF.front();
|
||||
MachineBasicBlock::iterator I = MBB.begin();
|
||||
MachineRegisterInfo &RegInfo = MF.getRegInfo();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
|
||||
unsigned V0, V1, V2, GlobalBaseReg = MipsFI->getGlobalBaseReg();
|
||||
const TargetRegisterClass *RC =
|
||||
@ -104,8 +103,7 @@ void Mips16DAGToDAGISel::initMips16SPAliasReg(MachineFunction &MF) {
|
||||
|
||||
MachineBasicBlock &MBB = MF.front();
|
||||
MachineBasicBlock::iterator I = MBB.begin();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
|
||||
unsigned Mips16SPAliasReg = MipsFI->getMips16SPAliasReg();
|
||||
|
||||
|
@ -65,8 +65,7 @@ bool Mips16RegisterInfo::saveScavengerRegister
|
||||
const TargetRegisterClass *RC,
|
||||
unsigned Reg) const {
|
||||
DebugLoc DL;
|
||||
const TargetInstrInfo &TII =
|
||||
*MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MBB.getParent()->getSubtarget().getInstrInfo();
|
||||
TII.copyPhysReg(MBB, I, DL, Mips::T0, Reg, true);
|
||||
TII.copyPhysReg(MBB, UseMI, DL, Reg, Mips::T0, true);
|
||||
return true;
|
||||
@ -107,8 +106,7 @@ void Mips16RegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
|
||||
if (FrameIndex >= MinCSFI && FrameIndex <= MaxCSFI)
|
||||
FrameReg = Mips::SP;
|
||||
else {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
if (TFI->hasFP(MF)) {
|
||||
FrameReg = Mips::S0;
|
||||
}
|
||||
@ -143,7 +141,7 @@ void Mips16RegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
|
||||
unsigned NewImm;
|
||||
const Mips16InstrInfo &TII =
|
||||
*static_cast<const Mips16InstrInfo *>(
|
||||
MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
MBB.getParent()->getSubtarget().getInstrInfo());
|
||||
FrameReg = TII.loadImmediate(FrameReg, Offset, MBB, II, DL, NewImm);
|
||||
Offset = SignExtend64<16>(NewImm);
|
||||
IsKill = true;
|
||||
|
@ -563,7 +563,7 @@ MipsConstantIslands::doInitialPlacement(std::vector<MachineInstr*> &CPEMIs) {
|
||||
// identity mapping of CPI's to CPE's.
|
||||
const std::vector<MachineConstantPoolEntry> &CPs = MCP->getConstants();
|
||||
|
||||
const DataLayout &TD = *MF->getTarget().getSubtargetImpl()->getDataLayout();
|
||||
const DataLayout &TD = *MF->getSubtarget().getDataLayout();
|
||||
for (unsigned i = 0, e = CPs.size(); i != e; ++i) {
|
||||
unsigned Size = TD.getTypeAllocSize(CPs[i].getType());
|
||||
assert(Size >= 4 && "Too small constant pool entry");
|
||||
|
@ -100,8 +100,7 @@ bool MipsFrameLowering::hasFP(const MachineFunction &MF) const {
|
||||
|
||||
uint64_t MipsFrameLowering::estimateStackSize(const MachineFunction &MF) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const TargetRegisterInfo &TRI =
|
||||
*MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
int64_t Offset = 0;
|
||||
|
||||
|
@ -2474,8 +2474,7 @@ MipsTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const TargetFrameLowering *TFL =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFL = MF.getSubtarget().getFrameLowering();
|
||||
MipsFunctionInfo *FuncInfo = MF.getInfo<MipsFunctionInfo>();
|
||||
bool IsPIC = getTargetMachine().getRelocationModel() == Reloc::PIC_;
|
||||
|
||||
|
@ -130,8 +130,7 @@ static MVT::SimpleValueType getRegTy(unsigned Reg, MachineFunction &MF) {
|
||||
static void setCallTargetReg(MachineBasicBlock *MBB,
|
||||
MachineBasicBlock::iterator I) {
|
||||
MachineFunction &MF = *MBB->getParent();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
unsigned SrcReg = I->getOperand(0).getReg();
|
||||
unsigned DstReg = getRegTy(SrcReg, MF) == MVT::i32 ? Mips::T9 : Mips::T9_64;
|
||||
BuildMI(*MBB, I, I->getDebugLoc(), TII.get(TargetOpcode::COPY), DstReg)
|
||||
|
@ -62,8 +62,7 @@ MipsRegisterInfo::getRegPressureLimit(const TargetRegisterClass *RC,
|
||||
case Mips::GPR32RegClassID:
|
||||
case Mips::GPR64RegClassID:
|
||||
case Mips::DSPRRegClassID: {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
return 28 - TFI->hasFP(MF);
|
||||
}
|
||||
case Mips::FGR32RegClassID:
|
||||
@ -162,7 +161,7 @@ getReservedRegs(const MachineFunction &MF) const {
|
||||
Reserved.set(*Reg);
|
||||
}
|
||||
// Reserve FP if this function should have a dedicated frame pointer register.
|
||||
if (MF.getTarget().getSubtargetImpl()->getFrameLowering()->hasFP(MF)) {
|
||||
if (MF.getSubtarget().getFrameLowering()->hasFP(MF)) {
|
||||
if (Subtarget.inMips16Mode())
|
||||
Reserved.set(Mips::S0);
|
||||
else {
|
||||
@ -251,8 +250,7 @@ eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj,
|
||||
|
||||
unsigned MipsRegisterInfo::
|
||||
getFrameRegister(const MachineFunction &MF) const {
|
||||
const TargetFrameLowering *TFI =
|
||||
MF.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
|
||||
bool IsN64 = Subtarget.isABI_N64();
|
||||
|
||||
if (Subtarget.inMips16Mode())
|
||||
|
@ -147,11 +147,9 @@ void ExpandPseudo::expandLoadCCond(MachineBasicBlock &MBB, Iter I) {
|
||||
assert(I->getOperand(0).isReg() && I->getOperand(1).isFI());
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
const TargetRegisterClass *RC = RegInfo.intRegClass(4);
|
||||
unsigned VR = MRI.createVirtualRegister(RC);
|
||||
@ -169,11 +167,9 @@ void ExpandPseudo::expandStoreCCond(MachineBasicBlock &MBB, Iter I) {
|
||||
assert(I->getOperand(0).isReg() && I->getOperand(1).isFI());
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
const TargetRegisterClass *RC = RegInfo.intRegClass(4);
|
||||
unsigned VR = MRI.createVirtualRegister(RC);
|
||||
@ -194,11 +190,9 @@ void ExpandPseudo::expandLoadACC(MachineBasicBlock &MBB, Iter I,
|
||||
assert(I->getOperand(0).isReg() && I->getOperand(1).isFI());
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
const TargetRegisterClass *RC = RegInfo.intRegClass(RegSize);
|
||||
unsigned VR0 = MRI.createVirtualRegister(RC);
|
||||
@ -226,11 +220,9 @@ void ExpandPseudo::expandStoreACC(MachineBasicBlock &MBB, Iter I,
|
||||
assert(I->getOperand(0).isReg() && I->getOperand(1).isFI());
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
const TargetRegisterClass *RC = RegInfo.intRegClass(RegSize);
|
||||
unsigned VR0 = MRI.createVirtualRegister(RC);
|
||||
@ -263,11 +255,9 @@ bool ExpandPseudo::expandCopyACC(MachineBasicBlock &MBB, Iter I,
|
||||
// copy dst_hi, $vr1
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
unsigned Dst = I->getOperand(0).getReg(), Src = I->getOperand(1).getReg();
|
||||
unsigned VRegSize = RegInfo.getMinimalPhysRegClass(Dst)->getSize() / 2;
|
||||
@ -422,11 +412,9 @@ void MipsSEFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MipsFunctionInfo *MipsFI = MF.getInfo<MipsFunctionInfo>();
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
MachineBasicBlock::iterator MBBI = MBB.begin();
|
||||
DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
|
||||
@ -559,11 +547,9 @@ void MipsSEFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MipsFunctionInfo *MipsFI = MF.getInfo<MipsFunctionInfo>();
|
||||
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo =
|
||||
*static_cast<const MipsRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const MipsRegisterInfo &RegInfo = *static_cast<const MipsRegisterInfo *>(
|
||||
MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
DebugLoc dl = MBBI->getDebugLoc();
|
||||
unsigned SP = STI.isABI_N64() ? Mips::SP_64 : Mips::SP;
|
||||
@ -616,8 +602,7 @@ spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
const TargetRegisterInfo *TRI) const {
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
MachineBasicBlock *EntryBlock = MF->begin();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF->getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
|
||||
|
||||
for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
|
||||
// Add the callee-saved register as live-in. Do not add if the register is
|
||||
@ -658,8 +643,7 @@ void MipsSEFrameLowering::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const MipsSEInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
|
||||
if (!hasReservedCallFrame(MF)) {
|
||||
int64_t Amount = I->getOperand(0).getImm();
|
||||
|
@ -130,8 +130,7 @@ void MipsSEDAGToDAGISel::initGlobalBaseReg(MachineFunction &MF) {
|
||||
MachineBasicBlock &MBB = MF.front();
|
||||
MachineBasicBlock::iterator I = MBB.begin();
|
||||
MachineRegisterInfo &RegInfo = MF.getRegInfo();
|
||||
const TargetInstrInfo &TII =
|
||||
*MF.getTarget().getSubtargetImpl()->getInstrInfo();
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
|
||||
unsigned V0, V1, GlobalBaseReg = MipsFI->getGlobalBaseReg();
|
||||
const TargetRegisterClass *RC;
|
||||
|
@ -172,7 +172,7 @@ void MipsSERegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
|
||||
unsigned Reg = RegInfo.createVirtualRegister(RC);
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
MBB.getParent()->getSubtarget().getInstrInfo());
|
||||
BuildMI(MBB, II, DL, TII.get(ADDiu), Reg).addReg(FrameReg).addImm(Offset);
|
||||
|
||||
FrameReg = Reg;
|
||||
@ -187,7 +187,7 @@ void MipsSERegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
|
||||
unsigned NewImm = 0;
|
||||
const MipsSEInstrInfo &TII =
|
||||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MBB.getParent()->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
MBB.getParent()->getSubtarget().getInstrInfo());
|
||||
unsigned Reg = TII.loadImmediate(Offset, MBB, II, DL,
|
||||
OffsetBitSize == 16 ? &NewImm : nullptr);
|
||||
BuildMI(MBB, II, DL, TII.get(ADDu), Reg).addReg(FrameReg)
|
||||
|
@ -97,6 +97,7 @@ void MipsTargetMachine::resetSubtarget(MachineFunction *MF) {
|
||||
Subtarget = &NoMips16Subtarget;
|
||||
else
|
||||
Subtarget = &DefaultSubtarget;
|
||||
MF->setSubtarget(Subtarget);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1773,8 +1773,7 @@ void NVPTXAsmPrinter::setAndEmitFunctionVirtualRegisters(
|
||||
|
||||
// Map the global virtual register number to a register class specific
|
||||
// virtual register number starting from 1 with that class.
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
//unsigned numRegClasses = TRI->getNumRegClasses();
|
||||
|
||||
// Emit the Fake Stack Object
|
||||
|
@ -48,24 +48,20 @@ void NVPTXFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
if (is64bit) {
|
||||
unsigned LocalReg = MRI.createVirtualRegister(&NVPTX::Int64RegsRegClass);
|
||||
MachineInstr *MI =
|
||||
BuildMI(MBB, MBBI, dl,
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo()->get(
|
||||
NVPTX::cvta_local_yes_64),
|
||||
BuildMI(MBB, MBBI, dl, MF.getSubtarget().getInstrInfo()->get(
|
||||
NVPTX::cvta_local_yes_64),
|
||||
NVPTX::VRFrame).addReg(LocalReg);
|
||||
BuildMI(MBB, MI, dl,
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo()->get(
|
||||
NVPTX::MOV_DEPOT_ADDR_64),
|
||||
MF.getSubtarget().getInstrInfo()->get(NVPTX::MOV_DEPOT_ADDR_64),
|
||||
LocalReg).addImm(MF.getFunctionNumber());
|
||||
} else {
|
||||
unsigned LocalReg = MRI.createVirtualRegister(&NVPTX::Int32RegsRegClass);
|
||||
MachineInstr *MI =
|
||||
BuildMI(MBB, MBBI, dl,
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo()->get(
|
||||
NVPTX::cvta_local_yes),
|
||||
MF.getSubtarget().getInstrInfo()->get(NVPTX::cvta_local_yes),
|
||||
NVPTX::VRFrame).addReg(LocalReg);
|
||||
BuildMI(MBB, MI, dl,
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo()->get(
|
||||
NVPTX::MOV_DEPOT_ADDR),
|
||||
MF.getSubtarget().getInstrInfo()->get(NVPTX::MOV_DEPOT_ADDR),
|
||||
LocalReg).addImm(MF.getFunctionNumber());
|
||||
}
|
||||
}
|
||||
|
@ -2028,8 +2028,7 @@ SDValue NVPTXTargetLowering::LowerFormalArguments(
|
||||
|
||||
const Function *F = MF.getFunction();
|
||||
const AttributeSet &PAL = F->getAttributes();
|
||||
const TargetLowering *TLI =
|
||||
DAG.getTarget().getSubtargetImpl()->getTargetLowering();
|
||||
const TargetLowering *TLI = DAG.getSubtarget().getTargetLowering();
|
||||
|
||||
SDValue Root = DAG.getRoot();
|
||||
std::vector<SDValue> OutChains;
|
||||
|
@ -109,10 +109,8 @@ AdjustStackOffset(MachineFrameInfo *MFI, int FrameIdx,
|
||||
|
||||
void
|
||||
NVPTXPrologEpilogPass::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
const TargetFrameLowering &TFI =
|
||||
*Fn.getTarget().getSubtargetImpl()->getFrameLowering();
|
||||
const TargetRegisterInfo *RegInfo =
|
||||
Fn.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetFrameLowering &TFI = *Fn.getSubtarget().getFrameLowering();
|
||||
const TargetRegisterInfo *RegInfo = Fn.getSubtarget().getRegisterInfo();
|
||||
|
||||
bool StackGrowsDown =
|
||||
TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsDown;
|
||||
|
@ -64,8 +64,8 @@ FunctionPass *llvm::createPPCBranchSelectionPass() {
|
||||
}
|
||||
|
||||
bool PPCBSel::runOnMachineFunction(MachineFunction &Fn) {
|
||||
const PPCInstrInfo *TII = static_cast<const PPCInstrInfo *>(
|
||||
Fn.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const PPCInstrInfo *TII =
|
||||
static_cast<const PPCInstrInfo *>(Fn.getSubtarget().getInstrInfo());
|
||||
// Give the blocks of the function a dense, in-order, numbering.
|
||||
Fn.RenumberBlocks();
|
||||
BlockSizes.resize(Fn.getNumBlockIDs());
|
||||
|
@ -254,8 +254,7 @@ static void RemoveVRSaveCode(MachineInstr *MI) {
|
||||
// transform this into the appropriate ORI instruction.
|
||||
static void HandleVRSaveUpdate(MachineInstr *MI, const TargetInstrInfo &TII) {
|
||||
MachineFunction *MF = MI->getParent()->getParent();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF->getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
DebugLoc dl = MI->getDebugLoc();
|
||||
|
||||
unsigned UsedRegMask = 0;
|
||||
@ -372,8 +371,8 @@ unsigned PPCFrameLowering::determineFrameLayout(MachineFunction &MF,
|
||||
unsigned MaxAlign = MFI->getMaxAlignment(); // algmt required by data in frame
|
||||
unsigned AlignMask = std::max(MaxAlign, TargetAlign) - 1;
|
||||
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
// If we are a leaf function, and use up to 224 bytes of stack space,
|
||||
// don't have a frame pointer, calls, or dynamic alloca then we do not need
|
||||
@ -460,8 +459,8 @@ void PPCFrameLowering::replaceFPWithRealFP(MachineFunction &MF) const {
|
||||
unsigned FPReg = is31 ? PPC::R31 : PPC::R1;
|
||||
unsigned FP8Reg = is31 ? PPC::X31 : PPC::X1;
|
||||
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
bool HasBP = RegInfo->hasBasePointer(MF);
|
||||
unsigned BPReg = HasBP ? (unsigned) RegInfo->getBaseRegister(MF) : FPReg;
|
||||
unsigned BP8Reg = HasBP ? (unsigned) PPC::X30 : FPReg;
|
||||
@ -499,10 +498,9 @@ void PPCFrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
MachineBasicBlock::iterator MBBI = MBB.begin();
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
MachineModuleInfo &MMI = MF.getMMI();
|
||||
const MCRegisterInfo *MRI = MMI.getContext().getRegisterInfo();
|
||||
@ -826,10 +824,9 @@ void PPCFrameLowering::emitEpilogue(MachineFunction &MF,
|
||||
MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr();
|
||||
assert(MBBI != MBB.end() && "Returning block has no terminator");
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
unsigned RetOpcode = MBBI->getOpcode();
|
||||
DebugLoc dl;
|
||||
@ -1071,8 +1068,8 @@ static bool MustSaveLR(const MachineFunction &MF, unsigned LR) {
|
||||
void
|
||||
PPCFrameLowering::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
RegScavenger *) const {
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
|
||||
// Save and clear the LR state.
|
||||
PPCFunctionInfo *FI = MF.getInfo<PPCFunctionInfo>();
|
||||
@ -1204,8 +1201,7 @@ void PPCFrameLowering::processFunctionBeforeFrameFinalized(MachineFunction &MF,
|
||||
}
|
||||
|
||||
PPCFunctionInfo *PFI = MF.getInfo<PPCFunctionInfo>();
|
||||
const TargetRegisterInfo *TRI =
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo();
|
||||
const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
int64_t LowerBound = 0;
|
||||
|
||||
@ -1239,8 +1235,8 @@ void PPCFrameLowering::processFunctionBeforeFrameFinalized(MachineFunction &MF,
|
||||
FFI->setObjectOffset(FI, LowerBound + FFI->getObjectOffset(FI));
|
||||
}
|
||||
|
||||
const PPCRegisterInfo *RegInfo = static_cast<const PPCRegisterInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getRegisterInfo());
|
||||
const PPCRegisterInfo *RegInfo =
|
||||
static_cast<const PPCRegisterInfo *>(MF.getSubtarget().getRegisterInfo());
|
||||
if (RegInfo->hasBasePointer(MF)) {
|
||||
HasGPSaveArea = true;
|
||||
|
||||
@ -1388,8 +1384,7 @@ PPCFrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF->getSubtarget().getInstrInfo());
|
||||
DebugLoc DL;
|
||||
bool CRSpilled = false;
|
||||
MachineInstrBuilder CRMIB;
|
||||
@ -1451,8 +1446,7 @@ restoreCRs(bool isPPC64, bool is31,
|
||||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF->getSubtarget().getInstrInfo());
|
||||
DebugLoc DL;
|
||||
unsigned RestoreOp, MoveReg;
|
||||
|
||||
@ -1485,8 +1479,7 @@ void PPCFrameLowering::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF.getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF.getSubtarget().getInstrInfo());
|
||||
if (MF.getTarget().Options.GuaranteedTailCallOpt &&
|
||||
I->getOpcode() == PPC::ADJCALLSTACKUP) {
|
||||
// Add (actually subtract) back the amount the callee popped on return.
|
||||
@ -1536,8 +1529,7 @@ PPCFrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
const PPCInstrInfo &TII =
|
||||
*static_cast<const PPCInstrInfo *>(
|
||||
MF->getTarget().getSubtargetImpl()->getInstrInfo());
|
||||
*static_cast<const PPCInstrInfo *>(MF->getSubtarget().getInstrInfo());
|
||||
bool CR2Spilled = false;
|
||||
bool CR3Spilled = false;
|
||||
bool CR4Spilled = false;
|
||||
|
@ -858,8 +858,7 @@ static bool isConstantOrUndef(int Op, int Val) {
|
||||
/// For the latter, the input operands are swapped (see PPCInstrAltivec.td).
|
||||
bool PPC::isVPKUHUMShuffleMask(ShuffleVectorSDNode *N, unsigned ShuffleKind,
|
||||
SelectionDAG &DAG) {
|
||||
bool IsLE =
|
||||
DAG.getTarget().getSubtargetImpl()->getDataLayout()->isLittleEndian();
|
||||
bool IsLE = DAG.getSubtarget().getDataLayout()->isLittleEndian();
|
||||
if (ShuffleKind == 0) {
|
||||
if (IsLE)
|
||||
return false;
|
||||
@ -890,8 +889,7 @@ bool PPC::isVPKUHUMShuffleMask(ShuffleVectorSDNode *N, unsigned ShuffleKind,
|
||||
/// For the latter, the input operands are swapped (see PPCInstrAltivec.td).
|
||||
bool PPC::isVPKUWUMShuffleMask(ShuffleVectorSDNode *N, unsigned ShuffleKind,
|
||||
SelectionDAG &DAG) {
|
||||
bool IsLE =
|
||||
DAG.getTarget().getSubtargetImpl()->getDataLayout()->isLittleEndian();
|
||||
bool IsLE = DAG.getSubtarget().getDataLayout()->isLittleEndian();
|
||||
if (ShuffleKind == 0) {
|
||||
if (IsLE)
|
||||
return false;
|
||||
@ -946,7 +944,7 @@ static bool isVMerge(ShuffleVectorSDNode *N, unsigned UnitSize,
|
||||
/// the input operands are swapped (see PPCInstrAltivec.td).
|
||||
bool PPC::isVMRGLShuffleMask(ShuffleVectorSDNode *N, unsigned UnitSize,
|
||||
unsigned ShuffleKind, SelectionDAG &DAG) {
|
||||
if (DAG.getTarget().getSubtargetImpl()->getDataLayout()->isLittleEndian()) {
|
||||
if (DAG.getSubtarget().getDataLayout()->isLittleEndian()) {
|
||||
if (ShuffleKind == 1) // unary
|
||||
return isVMerge(N, UnitSize, 0, 0);
|
||||
else if (ShuffleKind == 2) // swapped
|
||||
@ -971,7 +969,7 @@ bool PPC::isVMRGLShuffleMask(ShuffleVectorSDNode *N, unsigned UnitSize,
|
||||
/// the input operands are swapped (see PPCInstrAltivec.td).
|
||||
bool PPC::isVMRGHShuffleMask(ShuffleVectorSDNode *N, unsigned UnitSize,
|
||||
unsigned ShuffleKind, SelectionDAG &DAG) {
|
||||
if (DAG.getTarget().getSubtargetImpl()->getDataLayout()->isLittleEndian()) {
|
||||
if (DAG.getSubtarget().getDataLayout()->isLittleEndian()) {
|
||||
if (ShuffleKind == 1) // unary
|
||||
return isVMerge(N, UnitSize, 8, 8);
|
||||
else if (ShuffleKind == 2) // swapped
|
||||
@ -1078,7 +1076,7 @@ unsigned PPC::getVSPLTImmediate(SDNode *N, unsigned EltSize,
|
||||
SelectionDAG &DAG) {
|
||||
ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
|
||||
assert(isSplatShuffleMask(SVOp, EltSize));
|
||||
if (DAG.getTarget().getSubtargetImpl()->getDataLayout()->isLittleEndian())
|
||||
if (DAG.getSubtarget().getDataLayout()->isLittleEndian())
|
||||
return (16 / EltSize) - 1 - (SVOp->getMaskElt(0) / EltSize);
|
||||
else
|
||||
return SVOp->getMaskElt(0) / EltSize;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user