Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init |
|
#
dbbd9070 |
| 16-Jan-2023 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] Fix use after free error from D141028.
The `candidateSliceOp` was replaces and used in a subsequent call. Instead just replace its uses. The op is dead and will be removed wi
[mlir][TilingInterface] Fix use after free error from D141028.
The `candidateSliceOp` was replaces and used in a subsequent call. Instead just replace its uses. The op is dead and will be removed with CSE.
Differential Revision: https://reviews.llvm.org/D141869
show more ...
|
Revision tags: llvmorg-15.0.7 |
|
#
9db7d4ed |
| 05-Jan-2023 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] Add an option to tile and fuse to yield replacement for the fused producer.
This patch adds an option to the method that fuses a producer with a tiled consumer, to also yield
[mlir][TilingInterface] Add an option to tile and fuse to yield replacement for the fused producer.
This patch adds an option to the method that fuses a producer with a tiled consumer, to also yield from the tiled loops a value that can be used to replace the original producer. This is only valid if it can be assertained that the slice of the producer computed within each iteration of the tiled loop nest does not compute slices of the producer redundantly. The analysis to derive this is very involved. So this is left to the caller to assertain. A test is added that mimics the `scf::tileConsumerAndFuseProducersGreedilyUsingSCFForOp`, but also yields the values of all fused producers. This can be used as a reference for how a caller could use this functionality.
Differential Revision: https://reviews.llvm.org/D141028
show more ...
|
#
ce349ff1 |
| 06-Dec-2022 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] NFC: Separate out a utility method to perform one step of tile + fuse.
Differential Revision: https://reviews.llvm.org/D141027
|
#
94f2a6dd |
| 06-Dec-2022 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] NFC: Consolidate yield handling.
Add a new utility method to yield the tiled value as well as preserving destination passing style.
Differential Revision: https://reviews.ll
[mlir][TilingInterface] NFC: Consolidate yield handling.
Add a new utility method to yield the tiled value as well as preserving destination passing style.
Differential Revision: https://reviews.llvm.org/D139392
show more ...
|
#
faac8989 |
| 05-Jan-2023 |
Alex Zinenko <zinenko@google.com> |
[mlir] fix out-of-bounds in reduction tiling
A transformation tiling a reduction dimension of a Linalg op needs a tile size for said dimension. When an insufficient number of dimensions was provided
[mlir] fix out-of-bounds in reduction tiling
A transformation tiling a reduction dimension of a Linalg op needs a tile size for said dimension. When an insufficient number of dimensions was provided, it would segfault due to out-of-bounds access to a vector.
Also fix incorrect error reporting in the structured transform op exercising this functionality.
Reviewed By: springerm, ThomasRaoux
Differential Revision: https://reviews.llvm.org/D141046
show more ...
|
#
cbb09813 |
| 17-Dec-2022 |
Fangrui Song <i@maskray.me> |
[mlir] llvm::Optional::value => operator*/operator->
std::optional::value() has undesired exception checking semantics and is unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
[mlir] llvm::Optional::value => operator*/operator->
std::optional::value() has undesired exception checking semantics and is unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS). The call sites block std::optional migration.
show more ...
|
#
22426110 |
| 14-Dec-2022 |
Ramkumar Ramachandra <r@artagnon.com> |
mlir/tblgen: use std::optional in generation
This is part of an effort to migrate from llvm::Optional to std::optional. This patch changes the way mlir-tblgen generates .inc files, and modifies test
mlir/tblgen: use std::optional in generation
This is part of an effort to migrate from llvm::Optional to std::optional. This patch changes the way mlir-tblgen generates .inc files, and modifies tests and documentation appropriately. It is a "no compromises" patch, and doesn't leave the user with an unpleasant mix of llvm::Optional and std::optional.
A non-trivial change has been made to ControlFlowInterfaces to split one constructor into two, relating to a build failure on Windows.
See also: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>
Differential Revision: https://reviews.llvm.org/D138934
show more ...
|
#
b1d3afc9 |
| 02-Dec-2022 |
Hanhan Wang <hanchung@google.com> |
[mlir] Factor more common utils to IndexingUtils
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D139159
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5 |
|
#
fbfca43e |
| 14-Nov-2022 |
Mehdi Amini <joker.eph@gmail.com> |
Apply clang-tidy fixes for llvm-qualified-auto in TileUsingInterface.cpp (NFC)
|
#
52ffc728 |
| 04-Nov-2022 |
Hanhan Wang <hanchung@google.com> |
[mlir][tiling] Relax tiling to accept generating multiple operations.
Some operations need to generate multiple operations when implementing the tiling interface. Here is a sound example in IREE, se
[mlir][tiling] Relax tiling to accept generating multiple operations.
Some operations need to generate multiple operations when implementing the tiling interface. Here is a sound example in IREE, see https://github.com/iree-org/iree/pull/10905 for more details.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D137300
show more ...
|
#
3310fe55 |
| 02-Nov-2022 |
Thomas Raoux <thomasraoux@google.com> |
[mlir][linalg] Add reduction tiling transformation
Add a transformation to tile reduction ops into a parallel operation followed by a merge operation. This is equivalent to the existing reduction sp
[mlir][linalg] Add reduction tiling transformation
Add a transformation to tile reduction ops into a parallel operation followed by a merge operation. This is equivalent to the existing reduction spliting transformation but using loops instead of using higher dimensions linalg.
Differential Revision: https://reviews.llvm.org/D136586
show more ...
|
Revision tags: llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
d4c4e491 |
| 14-Jul-2022 |
Nicolas Vasilache <nicolas.vasilache@gmail.com> |
[mlir][Linalg] Drop usage of tileWithLinalgTilingOptions in the structured.tile transform
This is on a path to deprecation. Context: https://discourse.llvm.org/t/psa-retire-tileandfuselinalgops-meth
[mlir][Linalg] Drop usage of tileWithLinalgTilingOptions in the structured.tile transform
This is on a path to deprecation. Context: https://discourse.llvm.org/t/psa-retire-tileandfuselinalgops-method/63850
As the interface-based transformation is more generic, some additional folding of AffineMin/MaxOp and some extra canonicalizations are needed. This can be further evolved.
Differential Revision: https://reviews.llvm.org/D137195
show more ...
|
#
71cf48a6 |
| 28-Oct-2022 |
Hanhan Wang <hanchung@google.com> |
[mlir][scf] Enhance sizes computation in tileUsingSCFForOp.
The boundary is always 1 if the tile size is 1.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D136884
|
#
b4db15a9 |
| 28-Oct-2022 |
Alexander Belyaev <pifon@google.com> |
[mlir] Rename getInputs->getDpsInputs and getOutputs->getDpsInits in DPS interface.
https://discourse.llvm.org/t/rfc-interface-for-destination-style-ops/64056
Differential Revision: https://reviews
[mlir] Rename getInputs->getDpsInputs and getOutputs->getDpsInits in DPS interface.
https://discourse.llvm.org/t/rfc-interface-for-destination-style-ops/64056
Differential Revision: https://reviews.llvm.org/D136943
show more ...
|
#
b169643f |
| 24-Oct-2022 |
Matthias Springer <springerm@google.com> |
[mlir][interfaces] Remove getDestinationOperands from TilingInterface
`getDestinationOperands` was almost a duplicate of `DestinationStyleOpInterface::getOutputOperands`. Now that the interface has
[mlir][interfaces] Remove getDestinationOperands from TilingInterface
`getDestinationOperands` was almost a duplicate of `DestinationStyleOpInterface::getOutputOperands`. Now that the interface has been moved to mlir/Interfaces, it is no longer needed.
Differential Revision: https://reviews.llvm.org/D136240
show more ...
|
#
6d4baa74 |
| 06-Oct-2022 |
Mehdi Amini <joker.eph@gmail.com> |
Apply clang-tidy fixes for performance-unnecessary-value-param in TileUsingInterface.cpp (NFC)
|
#
2a6f0fb3 |
| 06-Oct-2022 |
Mehdi Amini <joker.eph@gmail.com> |
Apply clang-tidy fixes for performance-for-range-copy in TileUsingInterface.cpp (NFC)
|
#
79150279 |
| 10-Oct-2022 |
Nicolas Vasilache <nicolas.vasilache@gmail.com> |
[mlir][Linalg] Retire LinalgStrategyTileAndFusePass and filter-based pattern.
Context: https://discourse.llvm.org/t/psa-retire-linalg-filter-based-patterns/63785
In the process, also retire `tileCo
[mlir][Linalg] Retire LinalgStrategyTileAndFusePass and filter-based pattern.
Context: https://discourse.llvm.org/t/psa-retire-linalg-filter-based-patterns/63785
In the process, also retire `tileConsumerAndFuseProducers` that is now replaced by `tileConsumerAndFuseProducerGreedilyUsingSCFForOp`.
Context: https://discourse.llvm.org/t/psa-retire-tileandfuselinalgops-method/63850
When performing this replacement, a change of behavior appeared: the older `tileConsumerAndFuseProducers` would split the parallel and non-parallel dimensions automatically and perform a first level of tile-and-fuse on parallel dimensions only and then introduce a second level of tiling-only on the reduction dimensions. The newer `tileConsumerAndFuseProducerGreedilyUsingSCFForOp` on the other hand does not perform this breakdown. As a consequence, the transform specification is evolved to produce the same output.
Additionally, replace some uses of `unsigned` by `int64_t` where possible without pulling in larger interface changes (left for a future PR).
Context: https://www.youtube.com/watch?v=Puio5dly9N8
Lastly, tests that were performing tile and fuse and distribute on tensors are retired: the generated IR mixing scf.for, tensors and distributed processor ids was racy at best ..
Differential Revision: https://reviews.llvm.org/D135559
show more ...
|
#
67bcf982 |
| 30-Sep-2022 |
Adrian Kuegel <akuegel@google.com> |
[mlir][SCF] Apply ClangTidyPerformance finding (NFC)
|
#
abc362a1 |
| 29-Sep-2022 |
Jakub Kuderski <kubak@google.com> |
[mlir][arith] Change dialect name from Arithmetic to Arith
Suggested by @lattner in https://discourse.llvm.org/t/rfc-define-precise-arith-semantics/65507/22.
Tested with: `ninja check-mlir check-ml
[mlir][arith] Change dialect name from Arithmetic to Arith
Suggested by @lattner in https://discourse.llvm.org/t/rfc-define-precise-arith-semantics/65507/22.
Tested with: `ninja check-mlir check-mlir-integration check-mlir-mlir-spirv-cpu-runner check-mlir-mlir-vulkan-runner check-mlir-examples`
and `bazel build --config=generic_clang @llvm-project//mlir:all`.
Reviewed By: lattner, Mogball, rriddle, jpienaar, mehdi_amini
Differential Revision: https://reviews.llvm.org/D134762
show more ...
|
#
97f91982 |
| 07-Sep-2022 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] NFC Refactor of tile and fuse using `TilingInterface`.
This patch refactors the tiling and tile + fuse implementation using `TilingInterface`. Primarily, it exposes the funct
[mlir][TilingInterface] NFC Refactor of tile and fuse using `TilingInterface`.
This patch refactors the tiling and tile + fuse implementation using `TilingInterface`. Primarily, it exposes the functionality as simple utility functions instead of as a Pattern to allow calling it from a pattern as it is done in the test today or from within the transform dialect (in the future). This is a step towards deprecating similar methods in Linalg dialect.
- The utility methods do not erase the root operations. - The return value provides the values to use for replacements.
Differential Revision: https://reviews.llvm.org/D134144
show more ...
|
#
7ee34550 |
| 22-Sep-2022 |
Mahesh Ravishankar <ravishankarm@google.com> |
[mlir][TilingInterface] Fix `iter_args` handling in tile (and fuse).
The current approach for handling `iter_args` was to replace all uses of the value that is used as `init` value with the correspo
[mlir][TilingInterface] Fix `iter_args` handling in tile (and fuse).
The current approach for handling `iter_args` was to replace all uses of the value that is used as `init` value with the corresponding region block argument within the `scf.for`. This is not always correct. Instead a more deliberate approach needs to be taken to handle these. If the slice being fused represents a slice of the destination operand of the untiled op, then - Make the destination of the fused producer the `init` value of the loop nest - For the tiled and fused producer op created, replace the slice of the destination operand with a slice of the corresponding region iter arg of the innermost loop of the generated loop nest
Differential Revision: https://reviews.llvm.org/D134411
show more ...
|
#
b285d708 |
| 29-Aug-2022 |
Mehdi Amini <joker.eph@gmail.com> |
Apply clang-tidy fixes for performance-for-range-copy in TileUsingInterface.cpp (NFC)
|
#
54794284 |
| 31-Aug-2022 |
Matthias Springer <springerm@google.com> |
[mlir][interfaces] Drop `dest`/`tileDestOperands` from TilingInterface
`getTiledImplementation`/`generateResultTileValue` only computes the tiled operation, but does not insert the result into any t
[mlir][interfaces] Drop `dest`/`tileDestOperands` from TilingInterface
`getTiledImplementation`/`generateResultTileValue` only computes the tiled operation, but does not insert the result into any tensor.
Differential Revision: https://reviews.llvm.org/D133015
show more ...
|
#
954de25a |
| 19-Jul-2022 |
lorenzo chelini <l.chelini@icloud.com> |
[MLIR] TilingInterface: Avoid map when tile divides iteration domain
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D131080
|