[PATCH] D64665: [MachinePipeliner] Refactor schedule emission logic

Jinsong Ji via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 15 08:26:44 PDT 2019


jsji added a comment.

Personally, I like the idea of refacting and more abstraction, 
but I am a little worry about it might nont handle the complication of Phi well.
And unfortunately, I don't know enough about the cases here, especially for Hexagon.
So I would like to hear the valuable feedback from Brendon @bcahoon as well.

BTW: I am seeing Assertion failures in `sms-grp-order.ll`:

  Assertion `isVirtualRegister(Reg) && "Not a virtual register"' failed

And also quite a few other Assertion when running test with test-suites.



================
Comment at: include/llvm/CodeGen/MachinePipeliner.h:712
+  // The index of this stage.
+  unsigned StageIdx;
+  // The inputs to this stage. The last input (if Inputs.size() == 2) may be
----------------
private field 'StageIdx' is not used 


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:2279
     return true;
-
+  dbgs() << "probably not\n";
   return (OffsetS + (int64_t)AccessSizeS < OffsetD + (int64_t)AccessSizeD);
----------------
debug output


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:3161
+  std::deque<Stage *> KernelStages(1, nullptr);
+  for (int I = 1; I < NumStages; ++I)
+    KernelStages.push_back(
----------------
comparison of integers of different signs: 'int' and 'unsigned int'


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:3165
+  KernelStages[0] = KernelPB.CreateStage({KernelStages[1]}, 0);
+  for (int I = 1; I < NumStages; ++I)
+    KernelStages[I]->setLastInput(KernelStages[I - 1]);
----------------
comparison of integers of different signs: 'int' and 'unsigned int'


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:3200
+    // stage to force PHI creation.
+    for (unsigned I = 0; I < PeelStage - 1; ++I)
+      EpilogStages[I] = PB.CreateStage({PrologStages[I], EpilogStages[I]}, ~1U);
----------------
comparison of integers of different signs: 'unsigned int' and 'int'


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:3206
+    Prologs[PeelStage - 1].addSuccessors(
+        PB, PeelStage == NumStages - 1 ? KernelPB : Prologs[PeelStage]);
+    if (!Epilogs.empty()) {
----------------
comparison of integers of different signs: 'int' and 'unsigned int'


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64665/new/

https://reviews.llvm.org/D64665





More information about the llvm-commits mailing list