mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
misched preparation: modularize schedule printing.
ScheduleDAG will not refer to the scheduled instruction sequence. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152205 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4c72720427
commit
73ba69b684
@ -527,8 +527,6 @@ namespace llvm {
|
||||
///
|
||||
virtual MachineBasicBlock *EmitSchedule() = 0;
|
||||
|
||||
void dumpSchedule() const;
|
||||
|
||||
virtual void dumpNode(const SUnit *SU) const = 0;
|
||||
|
||||
/// getGraphNodeLabel - Return a label for an SUnit node in a visualization
|
||||
|
@ -170,6 +170,8 @@ namespace {
|
||||
// adjustments may be made to the instruction if necessary. Return
|
||||
// true if the operand has been deleted, false if not.
|
||||
bool ToggleKillFlag(MachineInstr *MI, MachineOperand &MO);
|
||||
|
||||
void dumpSchedule() const;
|
||||
};
|
||||
}
|
||||
|
||||
@ -202,6 +204,16 @@ SchedulePostRATDList::~SchedulePostRATDList() {
|
||||
delete AntiDepBreak;
|
||||
}
|
||||
|
||||
/// dumpSchedule - dump the scheduled Sequence.
|
||||
void SchedulePostRATDList::dumpSchedule() const {
|
||||
for (unsigned i = 0, e = Sequence.size(); i != e; i++) {
|
||||
if (SUnit *SU = Sequence[i])
|
||||
SU->dump(this);
|
||||
else
|
||||
dbgs() << "**** NOOP ****\n";
|
||||
}
|
||||
}
|
||||
|
||||
bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
|
||||
TII = Fn.getTarget().getInstrInfo();
|
||||
MachineLoopInfo &MLI = getAnalysis<MachineLoopInfo>();
|
||||
@ -343,6 +355,12 @@ void SchedulePostRATDList::Schedule() {
|
||||
AvailableQueue.initNodes(SUnits);
|
||||
ListScheduleTopDown();
|
||||
AvailableQueue.releaseState();
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "*** Final schedule ***\n";
|
||||
dumpSchedule();
|
||||
dbgs() << '\n';
|
||||
});
|
||||
}
|
||||
|
||||
/// Observe - Update liveness information to account for the current
|
||||
|
@ -52,17 +52,6 @@ const MCInstrDesc *ScheduleDAG::getNodeDesc(const SDNode *Node) const {
|
||||
return &TII->get(Node->getMachineOpcode());
|
||||
}
|
||||
|
||||
/// dump - dump the schedule.
|
||||
void ScheduleDAG::dumpSchedule() const {
|
||||
for (unsigned i = 0, e = Sequence.size(); i != e; i++) {
|
||||
if (SUnit *SU = Sequence[i])
|
||||
SU->dump(this);
|
||||
else
|
||||
dbgs() << "**** NOOP ****\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Run - perform scheduling.
|
||||
///
|
||||
void ScheduleDAG::Run(MachineBasicBlock *bb,
|
||||
@ -76,12 +65,6 @@ void ScheduleDAG::Run(MachineBasicBlock *bb,
|
||||
ExitSU = SUnit();
|
||||
|
||||
Schedule();
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "*** Final schedule ***\n";
|
||||
dumpSchedule();
|
||||
dbgs() << '\n';
|
||||
});
|
||||
}
|
||||
|
||||
/// addPred - This adds the specified edge as a pred of the current node if
|
||||
|
@ -327,6 +327,12 @@ void ScheduleDAGRRList::Schedule() {
|
||||
ListScheduleBottomUp();
|
||||
|
||||
AvailableQueue->releaseState();
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "*** Final schedule ***\n";
|
||||
dumpSchedule();
|
||||
dbgs() << '\n';
|
||||
});
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -621,6 +621,15 @@ void ScheduleDAGSDNodes::dumpNode(const SUnit *SU) const {
|
||||
}
|
||||
}
|
||||
|
||||
void ScheduleDAGSDNodes::dumpSchedule() const {
|
||||
for (unsigned i = 0, e = Sequence.size(); i != e; i++) {
|
||||
if (SUnit *SU = Sequence[i])
|
||||
SU->dump(this);
|
||||
else
|
||||
dbgs() << "**** NOOP ****\n";
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
/// VerifyScheduledSequence - Verify that all SUnits were scheduled and that
|
||||
/// their state is consistent with the nodes listed in Sequence.
|
||||
|
@ -117,6 +117,8 @@ namespace llvm {
|
||||
|
||||
virtual void dumpNode(const SUnit *SU) const;
|
||||
|
||||
void dumpSchedule() const;
|
||||
|
||||
virtual std::string getGraphNodeLabel(const SUnit *SU) const;
|
||||
|
||||
virtual std::string getDAGName() const;
|
||||
|
Loading…
Reference in New Issue
Block a user