-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[MLIR][Affine] Drop assumptions of surrounding builtin.func op in Utils/LoopUtils #116324
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ls/LoopUtils Drop assumptions of surrounding builtin.func op in affine LoopUtils and Utils. There are use cases of affine fusion or affine transformation in other func-like ops.
|
@llvm/pr-subscribers-mlir-affine Author: Uday Bondhugula (bondhugula) ChangesDrop assumptions of surrounding builtin.func op in affine LoopUtils and Full diff: https://github.com/llvm/llvm-project/pull/116324.diff 2 Files Affected:
diff --git a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
index d6fc4ed07bfab3..33901f818ad491 100644
--- a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
@@ -1936,8 +1936,8 @@ static LogicalResult generateCopy(
*nBegin = begin;
*nEnd = end;
- func::FuncOp f = begin->getParentOfType<func::FuncOp>();
- OpBuilder topBuilder(f.getBody());
+ auto f = begin->getParentOfType<FunctionOpInterface>();
+ OpBuilder topBuilder(f.getFunctionBody());
Value zeroIndex = topBuilder.create<arith::ConstantIndexOp>(f.getLoc(), 0);
*sizeInBytes = 0;
@@ -1956,8 +1956,9 @@ static LogicalResult generateCopy(
OpBuilder &b = region.isWrite() ? epilogue : prologue;
// Builder to create constants at the top level.
- auto func = copyPlacementBlock->getParent()->getParentOfType<func::FuncOp>();
- OpBuilder top(func.getBody());
+ auto func =
+ copyPlacementBlock->getParent()->getParentOfType<FunctionOpInterface>();
+ OpBuilder top(func.getFunctionBody());
auto loc = region.loc;
auto memref = region.memref;
diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
index 7fe422f75c8fad..7129ce86d6db8d 100644
--- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
@@ -1391,11 +1391,11 @@ LogicalResult mlir::affine::replaceAllMemRefUsesWith(
std::unique_ptr<PostDominanceInfo> postDomInfo;
if (domOpFilter)
domInfo = std::make_unique<DominanceInfo>(
- domOpFilter->getParentOfType<func::FuncOp>());
+ domOpFilter->getParentOfType<FunctionOpInterface>());
if (postDomOpFilter)
postDomInfo = std::make_unique<PostDominanceInfo>(
- postDomOpFilter->getParentOfType<func::FuncOp>());
+ postDomOpFilter->getParentOfType<FunctionOpInterface>());
// Walk all uses of old memref; collect ops to perform replacement. We use a
// DenseSet since an operation could potentially have multiple uses of a
|
|
@llvm/pr-subscribers-mlir Author: Uday Bondhugula (bondhugula) ChangesDrop assumptions of surrounding builtin.func op in affine LoopUtils and Full diff: https://github.com/llvm/llvm-project/pull/116324.diff 2 Files Affected:
diff --git a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
index d6fc4ed07bfab3..33901f818ad491 100644
--- a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
@@ -1936,8 +1936,8 @@ static LogicalResult generateCopy(
*nBegin = begin;
*nEnd = end;
- func::FuncOp f = begin->getParentOfType<func::FuncOp>();
- OpBuilder topBuilder(f.getBody());
+ auto f = begin->getParentOfType<FunctionOpInterface>();
+ OpBuilder topBuilder(f.getFunctionBody());
Value zeroIndex = topBuilder.create<arith::ConstantIndexOp>(f.getLoc(), 0);
*sizeInBytes = 0;
@@ -1956,8 +1956,9 @@ static LogicalResult generateCopy(
OpBuilder &b = region.isWrite() ? epilogue : prologue;
// Builder to create constants at the top level.
- auto func = copyPlacementBlock->getParent()->getParentOfType<func::FuncOp>();
- OpBuilder top(func.getBody());
+ auto func =
+ copyPlacementBlock->getParent()->getParentOfType<FunctionOpInterface>();
+ OpBuilder top(func.getFunctionBody());
auto loc = region.loc;
auto memref = region.memref;
diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
index 7fe422f75c8fad..7129ce86d6db8d 100644
--- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
@@ -1391,11 +1391,11 @@ LogicalResult mlir::affine::replaceAllMemRefUsesWith(
std::unique_ptr<PostDominanceInfo> postDomInfo;
if (domOpFilter)
domInfo = std::make_unique<DominanceInfo>(
- domOpFilter->getParentOfType<func::FuncOp>());
+ domOpFilter->getParentOfType<FunctionOpInterface>());
if (postDomOpFilter)
postDomInfo = std::make_unique<PostDominanceInfo>(
- postDomOpFilter->getParentOfType<func::FuncOp>());
+ postDomOpFilter->getParentOfType<FunctionOpInterface>());
// Walk all uses of old memref; collect ops to perform replacement. We use a
// DenseSet since an operation could potentially have multiple uses of a
|
|
Fixes and cleanup here are obvious. Merging. |
Drop assumptions of surrounding builtin.func op in affine LoopUtils and
Utils. There are use cases of affine fusion or affine transformation in
other func-like ops.
In the context of #116042