diff options
author | MaheshRavishankar <1663364+MaheshRavishankar@users.noreply.github.com> | 2024-01-25 21:26:23 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-25 21:26:23 -0800 |
commit | 76ead96c1d06ee0d828238bce96d0107e650b5fa (patch) | |
tree | 2359d2ac1fb358e0f3eaa8857692375f0bd43af5 /llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp | |
parent | 3c9f34c12450345c6eb524e47cf79664271e4260 (diff) | |
download | llvm-76ead96c1d06ee0d828238bce96d0107e650b5fa.zip llvm-76ead96c1d06ee0d828238bce96d0107e650b5fa.tar.gz llvm-76ead96c1d06ee0d828238bce96d0107e650b5fa.tar.bz2 |
[mlir][TilingInterface] Use `LoopLikeOpInterface` in tiling using SCF to unify tiling with `scf.for` and `scf.forall`. (#77874)
Using `LoopLikeOpInterface` as the basis for the implementation unifies
all the tiling logic for both `scf.for` and `scf.forall`. The only
difference is the actual loop generation. This is a follow up to
https://github.com/llvm/llvm-project/pull/72178
Instead of many entry points for each loop type, the loop type is now
passed as part of the options passed to the tiling method.
This is a breaking change with the following changes
1) The `scf::tileUsingSCFForOp` is renamed to `scf::tileUsingSCF`
2) The `scf::tileUsingSCFForallOp` is deprecated. The same
functionality is obtained by using `scf::tileUsingSCF` and setting
the loop type in `scf::SCFTilingOptions` passed into this method to
`scf::SCFTilingOptions::LoopType::ForallOp` (using the
`setLoopType` method).
3) The `scf::tileConsumerAndFusedProducerGreedilyUsingSCFForOp` is
renamed to `scf::tileConsumerAndFuseProducerUsingSCF`. The use of
the `controlFn` in `scf::SCFTileAndFuseOptions` allows implementing
any strategy with the default callback implemeting the greedy fusion.
4) The `scf::SCFTilingResult` and `scf::SCFTileAndFuseResult` now use
`SmallVector<LoopLikeOpInterface>`.
5) To make `scf::ForallOp` implement the parts of
`LoopLikeOpInterface` needed, the `getOutputBlockArguments()`
method is replaced with `getRegionIterArgs()`
These changes now bring the tiling and fusion capabilities using
`scf.forall` on par with what was already supported by `scf.for`
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp')
0 files changed, 0 insertions, 0 deletions