[Mlir-commits] [mlir] [mlir][linalg] Enable fuse consumer (PR #89893)
donald chen
llvmlistbot at llvm.org
Thu Apr 25 07:08:46 PDT 2024
================
@@ -132,14 +132,66 @@ struct LinalgOpTilingInterface
return TilingResult{{tiledOp}, SmallVector<Value>(tiledOp->getResults())};
}
- // Return the details of the output tile generated by the tiled
- // implementation.
+ void
+ getMappedOffsetAndSize(LinalgOp linalgOp, OpBuilder &b, AffineMap indexingMap,
+ ArrayRef<OpFoldResult> offsets,
+ ArrayRef<OpFoldResult> sizes,
+ SmallVectorImpl<OpFoldResult> &mappedOffsets,
+ SmallVectorImpl<OpFoldResult> &mappedSizes) const {
+ unsigned numLoops = linalgOp.getNumLoops();
+ auto tilingInterfaceOp = cast<TilingInterface>(linalgOp.getOperation());
+ mappedOffsets.resize(numLoops);
+ mappedSizes.resize(numLoops);
+ if (!indexingMap.isPermutation()) {
+ SmallVector<Range> iterationDomain =
+ tilingInterfaceOp.getIterationDomain(b);
+ for (const auto &&[index, value] : llvm::enumerate(iterationDomain)) {
----------------
cxy-1993 wrote:
"const" has been removed. Thanks for sharing knowledge about &&. Here, I want to use references to prevent reconstruction, and I don't care whether it's a lvalue reference or rvalue reference. It looks like a lvalue reference is used here.
https://github.com/llvm/llvm-project/pull/89893
More information about the Mlir-commits
mailing list