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];
|
||||
else
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user