[PATCH] D78143: [MLIR] Pass options to ParallelLoopCollapsing constructor.

Alexander Belyaev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 14 12:58:25 PDT 2020


pifon2a created this revision.
pifon2a added a reviewer: herhut.
Herald added subscribers: llvm-commits, frgossen, grosul1, Joonsoo, liufengdb, aartbik, lucyrfox, mgester, arpith-jacob, nicolasvasilache, antiagainst, shauheen, burmako, jpienaar, rriddle, mehdi_amini.
Herald added a project: LLVM.
pifon2a added a reviewer: tpopp.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D78143

Files:
  mlir/include/mlir/Transforms/Passes.h
  mlir/lib/Transforms/ParallelLoopCollapsing.cpp


Index: mlir/lib/Transforms/ParallelLoopCollapsing.cpp
===================================================================
--- mlir/lib/Transforms/ParallelLoopCollapsing.cpp
+++ mlir/lib/Transforms/ParallelLoopCollapsing.cpp
@@ -19,8 +19,19 @@
 using namespace mlir;
 
 namespace {
+
 struct ParallelLoopCollapsing
     : public ParallelLoopCollapsingBase<ParallelLoopCollapsing> {
+  ParallelLoopCollapsing() = default;
+  ParallelLoopCollapsing(const ParallelLoopCollapsing &){};
+  ParallelLoopCollapsing(ArrayRef<unsigned> collapsedIndices0,
+                         ArrayRef<unsigned> collapsedIndices1,
+                         ArrayRef<unsigned> collapsedIndices2) {
+    clCollapsedIndices0 = collapsedIndices0;
+    clCollapsedIndices1 = collapsedIndices1;
+    clCollapsedIndices2 = collapsedIndices2;
+  }
+
   void runOnOperation() override {
     Operation *module = getOperation();
 
@@ -28,18 +39,23 @@
       // The common case for GPU dialect will be simplifying the ParallelOp to 3
       // arguments, so we do that here to simplify things.
       llvm::SmallVector<std::vector<unsigned>, 3> combinedLoops;
-      if (clCollapsedIndices0.size())
+      if (!clCollapsedIndices0.empty())
         combinedLoops.push_back(clCollapsedIndices0);
-      if (clCollapsedIndices1.size())
+      if (!clCollapsedIndices1.empty())
         combinedLoops.push_back(clCollapsedIndices1);
-      if (clCollapsedIndices2.size())
+      if (!clCollapsedIndices2.empty())
         combinedLoops.push_back(clCollapsedIndices2);
       collapseParallelLoops(op, combinedLoops);
     });
   }
 };
+
 } // namespace
 
-std::unique_ptr<Pass> mlir::createParallelLoopCollapsingPass() {
-  return std::make_unique<ParallelLoopCollapsing>();
+std::unique_ptr<Pass>
+mlir::createParallelLoopCollapsingPass(ArrayRef<unsigned> collapsedIndices0,
+                                       ArrayRef<unsigned> collapsedIndices1,
+                                       ArrayRef<unsigned> collapsedIndices2) {
+  return std::make_unique<ParallelLoopCollapsing>(
+      collapsedIndices0, collapsedIndices1, collapsedIndices2);
 }
Index: mlir/include/mlir/Transforms/Passes.h
===================================================================
--- mlir/include/mlir/Transforms/Passes.h
+++ mlir/include/mlir/Transforms/Passes.h
@@ -15,6 +15,8 @@
 #define MLIR_TRANSFORMS_PASSES_H
 
 #include "mlir/Support/LLVM.h"
+#include "third_party/llvm/llvm-project/llvm/include/llvm/ADT/ArrayRef.h"
+
 #include <functional>
 #include <limits>
 
@@ -59,7 +61,10 @@
 
 /// Creates a pass that transforms a single ParallelLoop over N induction
 /// variables into another ParallelLoop over less than N induction variables.
-std::unique_ptr<Pass> createParallelLoopCollapsingPass();
+std::unique_ptr<Pass>
+createParallelLoopCollapsingPass(ArrayRef<unsigned> collapsedIndices0 = {},
+                                 ArrayRef<unsigned> collapsedIndices1 = {},
+                                 ArrayRef<unsigned> collapsedIndices2 = {});
 
 /// Creates a pass to perform optimizations relying on memref dataflow such as
 /// store to load forwarding, elimination of dead stores, and dead allocs.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78143.257453.patch
Type: text/x-patch
Size: 3169 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200414/ccb9e220/attachment-0001.bin>


More information about the llvm-commits mailing list