[Mlir-commits] [mlir] [mlir][linalg] Enable fuse consumer (PR #89893)
Oleksandr Alex Zinenko
llvmlistbot at llvm.org
Thu Apr 25 01:19:37 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)) {
----------------
ftynse wrote:
Nit: `const &&` may not mean what you think it does here, see https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers. We also don't use `const` for IR objects https://mlir.llvm.org/docs/Rationale/UsageOfConst/.
https://github.com/llvm/llvm-project/pull/89893
More information about the Mlir-commits
mailing list