[PATCH] D79688: [mlir] loop::ForOp: provide builders with callbacks for loop body

Uday Bondhugula via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun May 10 17:33:38 PDT 2020


bondhugula requested changes to this revision.
bondhugula added inline comments.
This revision now requires changes to proceed.


================
Comment at: mlir/include/mlir/Dialect/LoopOps/LoopOps.h:72
+
+/// A convenience version for building loop nests without reductions. Does not
+/// take the initial value of reductions or expect the body building functions
----------------
Did you mean "without iteration arguments (like for reductions)" instead of "without reductions"?


================
Comment at: mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp:496
   Value vec = vector_type_cast(tmp);
-  SmallVector<Value, 8> ivs(lbs.size());
-  LoopNestBuilder(ivs, lbs, ubs, steps)([&] {
+  loopNestBuilder(lbs, ubs, steps, [&](ValueRange loopIvs) {
+    auto ivs = llvm::to_vector<8>(loopIvs);
----------------
/*bodyBuilder=*/


================
Comment at: mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp:570
   std_store(vectorValue, vec);
-  SmallVector<Value, 8> ivs(lbs.size());
-  LoopNestBuilder(ivs, lbs, ubs, steps)([&] {
+  loopNestBuilder(lbs, ubs, steps, [&](ValueRange loopIvs) {
+    auto ivs = llvm::to_vector<8>(loopIvs);
----------------
/*bodyBuilder=*/


================
Comment at: mlir/lib/Dialect/GPU/Transforms/MemoryPromotion.cpp:82
   SmallVector<Value, 8> ivs(lbs.size());
-  LoopNestBuilder(ivs, lbs, ubs, steps)([&]() {
+  loopNestBuilder(lbs, ubs, steps, [&](ValueRange loopIvs) {
+    ivs.assign(loopIvs.begin(), loopIvs.end());
----------------
Likewise. 


================
Comment at: mlir/lib/Dialect/LoopOps/EDSC/Builders.cpp:152
+      step, iterArgInitValues,
+      [&](OpBuilder &builder, Location loc, ValueRange ivs, ValueRange args) {
+        assert(ivs.size() == 1 && "expected one induction variable");
----------------
Likewise.


================
Comment at: mlir/test/EDSC/builder-api-test.cpp:145
   using namespace edsc::op;
-  LoopNestBuilder(&i, a - b, c + d, a)();
+  loopNestBuilder(a - b, c + d, a);
 
----------------
/*lbs=*/..., /*ubs=*/..., /*step=*/...)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79688





More information about the llvm-commits mailing list