From: Uday Bondhugula Date: Mon, 29 May 2023 03:22:40 +0000 (+0530) Subject: [MLIR] Add output argument to affineParallelize utility X-Git-Tag: upstream/17.0.6~6905 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a56a730f26c52eae38b7614edcc6c37ea033f48;p=platform%2Fupstream%2Fllvm.git [MLIR] Add output argument to affineParallelize utility Add output argument to affineParallelize utility. NFC. Differential Revision: https://reviews.llvm.org/D151636 --- diff --git a/mlir/include/mlir/Dialect/Affine/Utils.h b/mlir/include/mlir/Dialect/Affine/Utils.h index 8e54a02..ca52f17 100644 --- a/mlir/include/mlir/Dialect/Affine/Utils.h +++ b/mlir/include/mlir/Dialect/Affine/Utils.h @@ -44,10 +44,11 @@ using ReductionLoopMap = DenseMap>; /// (mlir::isLoopParallel can be used to detect a parallel affine.for op.) The /// reductions specified in `parallelReductions` are also parallelized. /// Parallelization will fail in the presence of loop iteration arguments that -/// are not listed in `parallelReductions`. -LogicalResult -affineParallelize(AffineForOp forOp, - ArrayRef parallelReductions = {}); +/// are not listed in `parallelReductions`. `resOp` if non-null is set to the +/// newly created affine.parallel op. +LogicalResult affineParallelize(AffineForOp forOp, + ArrayRef parallelReductions = {}, + AffineParallelOp *resOp = nullptr); /// Hoists out affine.if/else to as high as possible, i.e., past all invariant /// affine.fors/parallel's. Returns success if any hoisting happened; folded` is diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp index 4e02b61..d567093 100644 --- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp +++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp @@ -344,7 +344,8 @@ static AffineIfOp hoistAffineIfOp(AffineIfOp ifOp, Operation *hoistOverOp) { LogicalResult mlir::affine::affineParallelize(AffineForOp forOp, - ArrayRef parallelReductions) { + ArrayRef parallelReductions, + AffineParallelOp *resOp) { // Fail early if there are iter arguments that are not reductions. unsigned numReductions = parallelReductions.size(); if (numReductions != forOp.getNumIterOperands()) @@ -398,6 +399,8 @@ mlir::affine::affineParallelize(AffineForOp forOp, newPloop.getBody()->eraseArguments(numIVs, numReductions); forOp.erase(); + if (resOp) + *resOp = newPloop; return success(); }