[PATCH] D53104: [Pipeliner] Use the Index from Topo instead of relying on NodeNum. (NFC)

Sumanth Gundapaneni via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 11 12:48:23 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL344283: [Pipeliner] Use the Index from Topo instead of relying on NodeNum. (NFC) (authored by sgundapa, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D53104?vs=169069&id=169276#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D53104

Files:
  llvm/trunk/lib/CodeGen/MachinePipeliner.cpp


Index: llvm/trunk/lib/CodeGen/MachinePipeliner.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/MachinePipeliner.cpp
+++ llvm/trunk/lib/CodeGen/MachinePipeliner.cpp
@@ -278,12 +278,21 @@
     BitVector Blocked;
     SmallVector<SmallPtrSet<SUnit *, 4>, 10> B;
     SmallVector<SmallVector<int, 4>, 16> AdjK;
+    // Node to Index from ScheduleDAGTopologicalSort
+    std::vector<int> *Node2Idx;
     unsigned NumPaths;
     static unsigned MaxPaths;
 
   public:
-    Circuits(std::vector<SUnit> &SUs)
-        : SUnits(SUs), Blocked(SUs.size()), B(SUs.size()), AdjK(SUs.size()) {}
+    Circuits(std::vector<SUnit> &SUs, ScheduleDAGTopologicalSort &Topo)
+        : SUnits(SUs), Blocked(SUs.size()), B(SUs.size()), AdjK(SUs.size()) {
+      Node2Idx = new std::vector<int>(SUs.size());
+      unsigned Idx = 0;
+      for (const auto &NodeNum : Topo)
+        Node2Idx->at(NodeNum) = Idx++;
+    }
+
+    ~Circuits() { delete Node2Idx; }
 
     /// Reset the data structures used in the circuit algorithm.
     void reset() {
@@ -1562,7 +1571,8 @@
       ++NumPaths;
       break;
     } else if (!Blocked.test(W)) {
-      if (circuit(W, S, NodeSets, W < V ? true : HasBackedge))
+      if (circuit(W, S, NodeSets,
+                  Node2Idx->at(W) < Node2Idx->at(V) ? true : HasBackedge))
         F = true;
     }
   }
@@ -1602,7 +1612,7 @@
   // but we do this to find the circuits, and then change them back.
   swapAntiDependences(SUnits);
 
-  Circuits Cir(SUnits);
+  Circuits Cir(SUnits, Topo);
   // Create the adjacency structure.
   Cir.createAdjacencyStructure(this);
   for (int i = 0, e = SUnits.size(); i != e; ++i) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53104.169276.patch
Type: text/x-patch
Size: 1685 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181011/bf3ebf41/attachment.bin>


More information about the llvm-commits mailing list