mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 15:39:00 +00:00
Don't charge the full latency for anti and output dependencies. This is
an area where eventually it would be good to use target-dependent information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60498 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f94a327361
commit
e561751e98
@ -160,9 +160,12 @@ bool SchedulePostRATDList::BreakAntiDependencies() {
|
||||
for (SUnit::pred_iterator P = SU->Preds.begin(), PE = SU->Preds.end();
|
||||
P != PE; ++P) {
|
||||
SUnit *PredSU = P->Dep;
|
||||
unsigned PredLatency = PredSU->CycleBound + PredSU->Latency;
|
||||
if (SU->CycleBound < PredLatency) {
|
||||
SU->CycleBound = PredLatency;
|
||||
// This assumes that there's no delay for reusing registers.
|
||||
unsigned PredLatency = (P->isCtrl && P->Reg != 0) ? 1 : PredSU->Latency;
|
||||
unsigned PredTotalLatency = PredSU->CycleBound + PredLatency;
|
||||
if (SU->CycleBound < PredTotalLatency ||
|
||||
(SU->CycleBound == PredTotalLatency && !P->isAntiDep)) {
|
||||
SU->CycleBound = PredTotalLatency;
|
||||
CriticalPath[*I] = &*P;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user