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

Jinsong Ji via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 1 07:47:08 PDT 2019


jsji added a comment.

How do you build and test? I can't config & build it with clang.



================
Comment at: lib/CodeGen/MachineLoopUtils.cpp:1
+//=- MachineLoopUtils.cpp - Functions for manipulating loops ----------------=//
+//
----------------
New file, you need to update `llvm/lib/CodeGen/CMakeLists.txt` as well.


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4287
+  SmallVector<int, 4> LiveStages;
+  for (int I = 0; I < NumPrologs; ++I) {
+    LiveStages.push_back(I);
----------------
`comparison of integers of different signs: 'int' and 'unsigned int'`


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4296
+  // stage NumStages-1, Epilog 1 performs stage NumStages-2 THEN NumStages-1.
+  for (int I = 0; I < NumPrologs; ++I) {
+    int StartStage = NumStages - 1 - I;
----------------
`comparison of integers of different signs: 'int' and 'unsigned int'`


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4299
+    CGBlocks.insert(std::next(Kernel), Kernel->peel(LPD_Back));
+    for (int Stage = StartStage + 1; Stage < NumStages; ++Stage) {
+      CGBlocks.insert(std::next(Kernel), Kernel->peel(LPD_Back));
----------------
`comparison of integers of different signs: 'int' and 'unsigned int'`


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4304
+  auto EBI = std::next(Kernel);
+  for (int I = 0; I < NumPrologs; ++I) {
+    int StartStage = NumStages - 1 - I;
----------------
`comparison of integers of different signs: 'int' and 'unsigned int'`


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4308
+    EBI++->setLiveStages({StartStage});
+    for (int Stage = StartStage + 1; Stage < NumStages; ++Stage) {
+      EBI++->setLiveStages({Stage});
----------------
`comparison of integers of different signs: 'int' and 'unsigned int'`


================
Comment at: lib/CodeGen/MachinePipeliner.cpp:4417
+      auto *MI = SU->getInstr();
+      InstrInfos[MI] = {Schedule.stageScheduled(SU), Cycle, Index++};
+      if (MI->isPHI())
----------------
`.../llvm-git/llvm-project/llvm/lib/CodeGen/MachinePipeliner.cpp:4417:22: error: no viable overloaded '='
      InstrInfos[MI] = {Schedule.stageScheduled(SU), Cycle, Index++};
      ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.../llvm-git/llvm-project/llvm/lib/CodeGen/MachinePipeliner.cpp:4190:10: note: candidate function (the implicit copy assignment operator) not viable: cannot convert initializer list argument to 'const (anonymous namespace)::CGBlock::InstrInfo'
  struct InstrInfo {
         ^
.../llvm-git/llvm-project/llvm/lib/CodeGen/MachinePipeliner.cpp:4190:10: note: candidate function (the implicit move assignment operator) not viable: cannot convert initializer list argument to '(anonymous namespace)::CGBlock::InstrInfo'
  struct InstrInfo {
`


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