mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
Don't bother doing latency calculations in the "fast" scheduler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59461 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2dcca9d53e
commit
e93483d855
@ -139,12 +139,6 @@ void ScheduleDAGFast::Schedule() {
|
|||||||
/// the AvailableQueue if the count reaches zero. Also update its cycle bound.
|
/// the AvailableQueue if the count reaches zero. Also update its cycle bound.
|
||||||
void ScheduleDAGFast::ReleasePred(SUnit *PredSU, bool isChain,
|
void ScheduleDAGFast::ReleasePred(SUnit *PredSU, bool isChain,
|
||||||
unsigned CurCycle) {
|
unsigned CurCycle) {
|
||||||
// FIXME: the distance between two nodes is not always == the predecessor's
|
|
||||||
// latency. For example, the reader can very well read the register written
|
|
||||||
// by the predecessor later than the issue cycle. It also depends on the
|
|
||||||
// interrupt model (drain vs. freeze).
|
|
||||||
PredSU->CycleBound = std::max(PredSU->CycleBound, CurCycle + PredSU->Latency);
|
|
||||||
|
|
||||||
--PredSU->NumSuccsLeft;
|
--PredSU->NumSuccsLeft;
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
@ -277,7 +271,6 @@ SUnit *ScheduleDAGFast::CopyAndMoveSuccessors(SUnit *SU) {
|
|||||||
// FIXME: Calculate height / depth and propagate the changes?
|
// FIXME: Calculate height / depth and propagate the changes?
|
||||||
NewSU->Depth = SU->Depth;
|
NewSU->Depth = SU->Depth;
|
||||||
NewSU->Height = SU->Height;
|
NewSU->Height = SU->Height;
|
||||||
ComputeLatency(NewSU);
|
|
||||||
|
|
||||||
// LoadNode may already exist. This can happen when there is another
|
// LoadNode may already exist. This can happen when there is another
|
||||||
// load from the same location and producing the same type of value
|
// load from the same location and producing the same type of value
|
||||||
@ -293,7 +286,6 @@ SUnit *ScheduleDAGFast::CopyAndMoveSuccessors(SUnit *SU) {
|
|||||||
|
|
||||||
LoadSU->Depth = SU->Depth;
|
LoadSU->Depth = SU->Depth;
|
||||||
LoadSU->Height = SU->Height;
|
LoadSU->Height = SU->Height;
|
||||||
ComputeLatency(LoadSU);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SUnit *ChainPred = NULL;
|
SUnit *ChainPred = NULL;
|
||||||
@ -530,13 +522,11 @@ void ScheduleDAGFast::ListScheduleBottomUp() {
|
|||||||
LRegsMap.clear();
|
LRegsMap.clear();
|
||||||
SUnit *CurSU = AvailableQueue.pop();
|
SUnit *CurSU = AvailableQueue.pop();
|
||||||
while (CurSU) {
|
while (CurSU) {
|
||||||
if (CurSU->CycleBound <= CurCycle) {
|
SmallVector<unsigned, 4> LRegs;
|
||||||
SmallVector<unsigned, 4> LRegs;
|
if (!DelayForLiveRegsBottomUp(CurSU, LRegs))
|
||||||
if (!DelayForLiveRegsBottomUp(CurSU, LRegs))
|
break;
|
||||||
break;
|
Delayed = true;
|
||||||
Delayed = true;
|
LRegsMap.insert(std::make_pair(CurSU, LRegs));
|
||||||
LRegsMap.insert(std::make_pair(CurSU, LRegs));
|
|
||||||
}
|
|
||||||
|
|
||||||
CurSU->isPending = true; // This SU is not in AvailableQueue right now.
|
CurSU->isPending = true; // This SU is not in AvailableQueue right now.
|
||||||
NotReady.push_back(CurSU);
|
NotReady.push_back(CurSU);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user