mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
MIsched machine model: tablegen subtarget emitter improvement.
Fix the way resources are counted. I'm taking some time to cleanup the way MachineScheduler handles in-order machine resources. Eventually we'll need more PPC/Atom test cases in tree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176390 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3b05d9f4db
commit
c812110023
@ -893,7 +893,20 @@ void SubtargetEmitter::GenSchedClassTables(const CodeGenProcModel &ProcModel,
|
|||||||
WPREntry.Cycles = Cycles[PRIdx];
|
WPREntry.Cycles = Cycles[PRIdx];
|
||||||
else
|
else
|
||||||
WPREntry.Cycles = 1;
|
WPREntry.Cycles = 1;
|
||||||
WriteProcResources.push_back(WPREntry);
|
// If this resource is already used in this sequence, add the current
|
||||||
|
// entry's cycles so that the same resource appears to be used
|
||||||
|
// serially, rather than multiple parallel uses. This is important for
|
||||||
|
// in-order machine where the resource consumption is a hazard.
|
||||||
|
unsigned WPRIdx = 0, WPREnd = WriteProcResources.size();
|
||||||
|
for( ; WPRIdx != WPREnd; ++WPRIdx) {
|
||||||
|
if (WriteProcResources[WPRIdx].ProcResourceIdx
|
||||||
|
== WPREntry.ProcResourceIdx) {
|
||||||
|
WriteProcResources[WPRIdx].Cycles += WPREntry.Cycles;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (WPRIdx == WPREnd)
|
||||||
|
WriteProcResources.push_back(WPREntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WriteLatencies.push_back(WLEntry);
|
WriteLatencies.push_back(WLEntry);
|
||||||
|
Loading…
Reference in New Issue
Block a user