[llvm] [MachinePipeliner] Add an abstract layer to manipulate Data Dependenc… (PR #109918)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 27 12:59:00 PST 2024
================
@@ -1953,26 +1924,33 @@ void SwingSchedulerDAG::computeNodeFunctions(NodeSetType &NodeSets) {
/// as the predecessors of the elements of NodeOrder that are not also in
/// NodeOrder.
static bool pred_L(SetVector<SUnit *> &NodeOrder,
- SmallSetVector<SUnit *, 8> &Preds,
+ SmallSetVector<SUnit *, 8> &Preds, SwingSchedulerDDG *DDG,
const NodeSet *S = nullptr) {
Preds.clear();
- for (const SUnit *SU : NodeOrder) {
- for (const SDep &Pred : SU->Preds) {
- if (S && S->count(Pred.getSUnit()) == 0)
+
+ for (SUnit *SU : NodeOrder) {
+ for (const auto &IE : DDG->getInEdges(SU)) {
+ SUnit *PredSU = IE.getSrc();
+ if (S && S->count(PredSU) == 0)
continue;
- if (ignoreDependence(Pred, true))
+ if (IE.ignoreDependence(true))
continue;
- if (NodeOrder.count(Pred.getSUnit()) == 0)
- Preds.insert(Pred.getSUnit());
+ if (NodeOrder.count(PredSU) == 0)
+ Preds.insert(PredSU);
}
- // Back-edges are predecessors with an anti-dependence.
- for (const SDep &Succ : SU->Succs) {
- if (Succ.getKind() != SDep::Anti)
+
+ // FIXME: The following loop-carried dependencies may also need to be
+ // considered.
+ // - Physical register dependnecies (true-dependnece and WAW).
----------------
aankit-ca wrote:
*dependnecies -> dependencies
*true-dependnece -> true-dependence
https://github.com/llvm/llvm-project/pull/109918
More information about the llvm-commits
mailing list