[MLIR] Change return type of ParallelOp::getInductionVars to ValueRange.
authorAlexander Belyaev <pifon@google.com>
Mon, 6 Apr 2020 07:06:21 +0000 (09:06 +0200)
committerAlexander Belyaev <pifon@google.com>
Mon, 6 Apr 2020 08:11:02 +0000 (10:11 +0200)
The current return type sometimes leads to code like
to_vector<2>(ValueRange(loop.getInductionIvs())). It would be nice to
shorten it. Users who need access to Block::BlockArgListType (if there
are any), can always call getBody()->getArguments(); if needed.

Also remove getNumInductionVars(), since there is getNumLoops().

Differential Revision: https://reviews.llvm.org/D77526

mlir/include/mlir/Dialect/LoopOps/LoopOps.td
mlir/lib/Dialect/GPU/Transforms/ParallelLoopMapper.cpp

index 1e446ef..436a376 100644 (file)
@@ -312,10 +312,7 @@ def ParallelOp : Loop_Op<"parallel",
 
   let extraClassDeclaration = [{
     Block *getBody() { return &region().front(); }
-    unsigned getNumInductionVars() {
-      return getBody()->getNumArguments();
-    }
-    Block::BlockArgListType getInductionVars() {
+    ValueRange getInductionVars() {
       return getBody()->getArguments();
     }
     unsigned getNumLoops() { return step().size(); }
index 9697688..177fdf0 100644 (file)
@@ -130,8 +130,8 @@ static void mapParallelOp(ParallelOp parallelOp,
   MLIRContext *ctx = parallelOp.getContext();
   Builder b(ctx);
   SmallVector<ParallelLoopDimMapping, 4> attrs;
-  attrs.reserve(parallelOp.getNumInductionVars());
-  for (int i = 0, e = parallelOp.getNumInductionVars(); i < e; ++i) {
+  attrs.reserve(parallelOp.getNumLoops());
+  for (int i = 0, e = parallelOp.getNumLoops(); i < e; ++i) {
     attrs.push_back(getParallelLoopDimMappingAttr(
         getHardwareIdForMapping(mappingLevel, i), b.getDimIdentityMap(),
         b.getDimIdentityMap()));