[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:01 PST 2024
================
@@ -3797,3 +3796,71 @@ void ResourceManager::init(int II) {
NumScheduledMops.clear();
NumScheduledMops.resize(II);
}
+
+bool SwingSchedulerDDGEdge::ignoreDependence(bool IgnoreAnti) const {
+ if (Pred.isArtificial() || Dst->isBoundaryNode())
+ return true;
+ // Currently, dependence that is an anti-dependences but not a loop-carried is
+ // also ignored. This behavior is preserved to prevent regression.
+ // FIXME: Remove if this doesn't have significant impact on performance
+ return IgnoreAnti && (Pred.getKind() == SDep::Kind::Anti || Distance != 0);
+}
+
+SwingSchedulerDDG::SwingSchedulerDDGEdges &
+SwingSchedulerDDG::getEdges(const SUnit *SU) {
+ if (SU == EntrySU)
+ return EntrySUEdges;
+ if (SU == ExitSU)
+ return ExitSUEdges;
+ return EdgesVec[SU->NodeNum];
+}
+
+const SwingSchedulerDDG::SwingSchedulerDDGEdges &
+SwingSchedulerDDG::getEdges(const SUnit *SU) const {
+ if (SU == EntrySU)
+ return EntrySUEdges;
+ if (SU == ExitSU)
+ return ExitSUEdges;
+ return EdgesVec[SU->NodeNum];
+}
+
+void SwingSchedulerDDG::addEdge(SUnit *SU, const SwingSchedulerDDGEdge &Edge) {
+ auto &Edges = getEdges(SU);
+ if (Edge.getSrc() == SU)
+ Edges.Succs.push_back(Edge);
+ else
+ Edges.Preds.push_back(Edge);
+}
+
+void SwingSchedulerDDG::initEdges(SUnit *SU) {
----------------
aankit-ca wrote:
```
const SUnit *SU
```
https://github.com/llvm/llvm-project/pull/109918
More information about the llvm-commits
mailing list