forked from OSchip/llvm-project
The hazard recognizer only needs a subtarget, not a target machine
so make it take one. Fix up all users accordingly. llvm-svn: 210948
This commit is contained in:
parent
170ebcf07f
commit
f047bfd115
|
@ -37,6 +37,7 @@ class ScheduleDAG;
|
|||
class TargetRegisterClass;
|
||||
class TargetRegisterInfo;
|
||||
class BranchProbability;
|
||||
class TargetSubtargetInfo;
|
||||
|
||||
template<class T> class SmallVectorImpl;
|
||||
|
||||
|
@ -743,7 +744,7 @@ public:
|
|||
/// use for this target when scheduling the machine instructions before
|
||||
/// register allocation.
|
||||
virtual ScheduleHazardRecognizer*
|
||||
CreateTargetHazardRecognizer(const TargetMachine *TM,
|
||||
CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const;
|
||||
|
||||
/// CreateTargetMIHazardRecognizer - Allocate and return a hazard recognizer
|
||||
|
|
|
@ -170,7 +170,8 @@ public:
|
|||
if (DisableSchedCycles || !NeedLatency)
|
||||
HazardRec = new ScheduleHazardRecognizer();
|
||||
else
|
||||
HazardRec = tm.getInstrInfo()->CreateTargetHazardRecognizer(&tm, this);
|
||||
HazardRec = tm.getInstrInfo()->CreateTargetHazardRecognizer(
|
||||
tm.getSubtargetImpl(), this);
|
||||
}
|
||||
|
||||
~ScheduleDAGRRList() {
|
||||
|
|
|
@ -73,7 +73,8 @@ public:
|
|||
: ScheduleDAGSDNodes(mf), AvailableQueue(availqueue), AA(aa) {
|
||||
|
||||
const TargetMachine &tm = mf.getTarget();
|
||||
HazardRec = tm.getInstrInfo()->CreateTargetHazardRecognizer(&tm, this);
|
||||
HazardRec = tm.getInstrInfo()->CreateTargetHazardRecognizer(
|
||||
tm.getSubtargetImpl(), this);
|
||||
}
|
||||
|
||||
~ScheduleDAGVLIW() {
|
||||
|
|
|
@ -671,7 +671,7 @@ bool TargetInstrInfo::usePreRAHazardRecognizer() const {
|
|||
|
||||
// Default implementation of CreateTargetRAHazardRecognizer.
|
||||
ScheduleHazardRecognizer *TargetInstrInfo::
|
||||
CreateTargetHazardRecognizer(const TargetMachine *TM,
|
||||
CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const {
|
||||
// Dummy hazard recognizer allows all instructions to issue.
|
||||
return new ScheduleHazardRecognizer();
|
||||
|
|
|
@ -103,14 +103,15 @@ ARMBaseInstrInfo::ARMBaseInstrInfo(const ARMSubtarget& STI)
|
|||
|
||||
// Use a ScoreboardHazardRecognizer for prepass ARM scheduling. TargetInstrImpl
|
||||
// currently defaults to no prepass hazard recognizer.
|
||||
ScheduleHazardRecognizer *ARMBaseInstrInfo::
|
||||
CreateTargetHazardRecognizer(const TargetMachine *TM,
|
||||
const ScheduleDAG *DAG) const {
|
||||
ScheduleHazardRecognizer *
|
||||
ARMBaseInstrInfo::CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const {
|
||||
if (usePreRAHazardRecognizer()) {
|
||||
const InstrItineraryData *II = TM->getInstrItineraryData();
|
||||
const InstrItineraryData *II =
|
||||
&static_cast<const ARMSubtarget *>(STI)->getInstrItineraryData();
|
||||
return new ScoreboardHazardRecognizer(II, DAG, "pre-RA-sched");
|
||||
}
|
||||
return TargetInstrInfo::CreateTargetHazardRecognizer(TM, DAG);
|
||||
return TargetInstrInfo::CreateTargetHazardRecognizer(STI, DAG);
|
||||
}
|
||||
|
||||
ScheduleHazardRecognizer *ARMBaseInstrInfo::
|
||||
|
|
|
@ -50,7 +50,7 @@ public:
|
|||
const ARMSubtarget &getSubtarget() const { return Subtarget; }
|
||||
|
||||
ScheduleHazardRecognizer *
|
||||
CreateTargetHazardRecognizer(const TargetMachine *TM,
|
||||
CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const override;
|
||||
|
||||
ScheduleHazardRecognizer *
|
||||
|
|
|
@ -67,17 +67,19 @@ PPCInstrInfo::PPCInstrInfo(PPCSubtarget &STI)
|
|||
|
||||
/// CreateTargetHazardRecognizer - Return the hazard recognizer to use for
|
||||
/// this target when scheduling the DAG.
|
||||
ScheduleHazardRecognizer *PPCInstrInfo::CreateTargetHazardRecognizer(
|
||||
const TargetMachine *TM,
|
||||
const ScheduleDAG *DAG) const {
|
||||
unsigned Directive = TM->getSubtarget<PPCSubtarget>().getDarwinDirective();
|
||||
ScheduleHazardRecognizer *
|
||||
PPCInstrInfo::CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const {
|
||||
unsigned Directive =
|
||||
static_cast<const PPCSubtarget *>(STI)->getDarwinDirective();
|
||||
if (Directive == PPC::DIR_440 || Directive == PPC::DIR_A2 ||
|
||||
Directive == PPC::DIR_E500mc || Directive == PPC::DIR_E5500) {
|
||||
const InstrItineraryData *II = TM->getInstrItineraryData();
|
||||
const InstrItineraryData *II =
|
||||
&static_cast<const PPCSubtarget *>(STI)->getInstrItineraryData();
|
||||
return new ScoreboardHazardRecognizer(II, DAG);
|
||||
}
|
||||
|
||||
return TargetInstrInfo::CreateTargetHazardRecognizer(TM, DAG);
|
||||
return TargetInstrInfo::CreateTargetHazardRecognizer(STI, DAG);
|
||||
}
|
||||
|
||||
/// CreateTargetPostRAHazardRecognizer - Return the postRA hazard recognizer
|
||||
|
|
|
@ -89,7 +89,7 @@ public:
|
|||
const PPCRegisterInfo &getRegisterInfo() const { return RI; }
|
||||
|
||||
ScheduleHazardRecognizer *
|
||||
CreateTargetHazardRecognizer(const TargetMachine *TM,
|
||||
CreateTargetHazardRecognizer(const TargetSubtargetInfo *STI,
|
||||
const ScheduleDAG *DAG) const override;
|
||||
ScheduleHazardRecognizer *
|
||||
CreateTargetPostRAHazardRecognizer(const InstrItineraryData *II,
|
||||
|
|
Loading…
Reference in New Issue