[all-commits] [llvm/llvm-project] 08a1b0: [mlir] Partially port splitting transform to Tilin...
ftynse via All-commits
all-commits at lists.llvm.org
Wed Jul 27 01:52:31 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 08a1b07e7c19d14896f8be501c763ba8aff5b427
https://github.com/llvm/llvm-project/commit/08a1b07e7c19d14896f8be501c763ba8aff5b427
Author: Alex Zinenko <zinenko at google.com>
Date: 2022-07-27 (Wed, 27 Jul 2022)
Changed paths:
M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
M mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
M mlir/include/mlir/Interfaces/TilingInterface.td
M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
M mlir/lib/Dialect/Linalg/Transforms/Split.cpp
M mlir/lib/Dialect/Linalg/Utils/Utils.cpp
M mlir/test/Dialect/Linalg/multisize-tiling-full.mlir
M mlir/test/Dialect/Linalg/transform-op-split.mlir
Log Message:
-----------
[mlir] Partially port splitting transform to TilingInterface
The structured op splitting transformation is conceptually similar to
tiling in the sense that it decomposes the iteration space of the
original op into several parts. Therefore, it is possible to implement
it using the TilingInterface to operate on iteration spaces and their
parts. However, the implementation also requires to pass updated input
operands, which is not supported by the interface, so the implementation
currently remains Linalg-specific.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D129564
Commit: 70e99f387a482bfe0ad2b7accc88e9e8b2a4a59d
https://github.com/llvm/llvm-project/commit/70e99f387a482bfe0ad2b7accc88e9e8b2a4a59d
Author: Alex Zinenko <zinenko at google.com>
Date: 2022-07-27 (Wed, 27 Jul 2022)
Changed paths:
M mlir/include/mlir/Dialect/Linalg/IR/Linalg.h
M mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
M mlir/include/mlir/Interfaces/ViewLikeInterface.h
M mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp
M mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp
M mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp
M mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp
M mlir/lib/Dialect/Linalg/Transforms/Split.cpp
M mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
M mlir/lib/Dialect/Linalg/Utils/Utils.cpp
M mlir/lib/Dialect/SCF/Transforms/TileUsingInterface.cpp
Log Message:
-----------
[mlir] Make ViewLikeInterface Range work with attributes
While most of methods in ViewLikeInterface accept an `OpFoldResult` for
the offset/size/stride that may be static, represented as `Attribute`,
or dynamic, represented as `Value`, the `Range` abstraction only
accepted `Values`. This can often lead to known-constant
offset/size/strides being materialized into constant operations and
hinder further constant propagation without explicitly running the
constant folding pass. This often leads to a more complicated than
necessary addressing code being emitted. Switch `Range` to use
`OpFoldResult`. Code that uses `Range` currently keeps materializing the
constants to minimize the effect of this change on the IR. Further
commits will make use of this.
Reviewed By: nicolasvasilache, mravishankar
Differential Revision: https://reviews.llvm.org/D129633
Commit: e99fae899710b041994cef4beb6764f8dfbe8ef0
https://github.com/llvm/llvm-project/commit/e99fae899710b041994cef4beb6764f8dfbe8ef0
Author: Alex Zinenko <zinenko at google.com>
Date: 2022-07-27 (Wed, 27 Jul 2022)
Changed paths:
M mlir/include/mlir/Dialect/Affine/IR/AffineOps.h
M mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
M mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
M mlir/lib/Dialect/Affine/IR/AffineOps.cpp
M mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
M mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
M mlir/lib/Dialect/Linalg/Transforms/BubbleUpExtractSlice.cpp
M mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp
M mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp
M mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp
M mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
M mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp
M mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
M mlir/lib/Dialect/Linalg/Utils/Utils.cpp
M mlir/lib/Dialect/Utils/StaticValueUtils.cpp
M mlir/test/Dialect/Linalg/resolve-shaped-type-result-dims.mlir
M mlir/test/Dialect/Linalg/tile-and-fuse-tensors.mlir
M mlir/test/Dialect/Linalg/tile-conv.mlir
M mlir/test/Dialect/Linalg/transform-op-fuse.mlir
Log Message:
-----------
[mlir] more aggressive folding in tiling/fusion transformations
Combine the recently added utilities for folded-by-construction affine
operations with the attribute-based Range to enable more folding. This
decreases the amount of emitted code but has little effect on test
precisely because the tests are not checking for the spurious constants.
The difference in the shape of affine maps comes from the internals of
affine folding.
Depends on D129633
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D130167
Compare: https://github.com/llvm/llvm-project/compare/79ff02a12205...e99fae899710
More information about the All-commits
mailing list