File tree Expand file tree Collapse file tree 3 files changed +6
-12
lines changed Expand file tree Collapse file tree 3 files changed +6
-12
lines changed Original file line number Diff line number Diff line change @@ -373,7 +373,7 @@ class NodeSet {
373
373
}
374
374
}
375
375
}
376
- // Handle a back-edge between a store and a load
376
+ // Handle a back-edge in loop carried dependencies
377
377
SUnit *FirstNode = Nodes[0 ];
378
378
SUnit *LastNode = Nodes[Nodes.size () - 1 ];
379
379
Original file line number Diff line number Diff line change @@ -1680,19 +1680,13 @@ void SwingSchedulerDAG::Circuits::createAdjacencyStructure(
1680
1680
Added.set (N);
1681
1681
}
1682
1682
}
1683
- // Order edges of the following:
1684
- // 1. Load -> Store
1685
- // 2. Store -> Load
1686
- // are treated as a back-edge in the adjacency matrix.
1687
- // Store after store was handled above.
1683
+ // A chain edge between a store and a load is treated as a back-edge in the
1684
+ // adjacency matrix.
1688
1685
for (auto &PI : SUnits[i].Preds ) {
1689
- if (PI. getKind () != SDep::Order ||
1686
+ if (!SUnits[i]. getInstr ()-> mayStore () ||
1690
1687
!DAG->isLoopCarriedDep (&SUnits[i], PI, false ))
1691
1688
continue ;
1692
- if ((SUnits[i].getInstr ()->mayLoad () &&
1693
- PI.getSUnit ()->getInstr ()->mayStore ()) ||
1694
- (SUnits[i].getInstr ()->mayStore () &&
1695
- PI.getSUnit ()->getInstr ()->mayLoad ())) {
1689
+ if (PI.getKind () == SDep::Order && PI.getSUnit ()->getInstr ()->mayLoad ()) {
1696
1690
int N = PI.getSUnit ()->NodeNum ;
1697
1691
if (!Added.test (N)) {
1698
1692
AdjK[i].push_back (N);
Original file line number Diff line number Diff line change 1
- ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
1
+ ; REQUIRES: asserts
2
2
; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs\
3
3
; RUN: -mcpu=pwr9 --ppc-enable-pipeliner --debug-only=pipeliner 2>&1 | FileCheck %s
4
4
You can’t perform that action at this time.
0 commit comments