llvm-project/mlir/lib/Dialect/SCF/Transforms
Matthias Springer 8e8b70aa84 [mlir][scf] Simplify affine.min ops after loop peeling
Simplify affine.min ops, enabling various other canonicalizations inside the peeled loop body.

affine.min ops such as:
```
map = affine_map<(d0)[s0, s1] -> (s0, -d0 + s1)>
%r = affine.min #affine.min #map(%iv)[%step, %ub]
```
are rewritten them into (in the case the peeled loop):
```
%r = %step
```

To determine how an affine.min op should be rewritten and to prove its correctness, FlatAffineConstraints is utilized.

Differential Revision: https://reviews.llvm.org/D107222
2021-08-19 17:24:53 +09:00
..
Bufferize.cpp [mlir][NFC] Remove Standard dialect dependency on MemRef dialect 2021-06-21 17:55:23 +09:00
CMakeLists.txt [mlir] Add software pipelining transformation for scf.For op 2021-07-19 13:43:26 -07:00
LoopPipelining.cpp [mlir] Extend scf pipeling to support loop carried dependencies 2021-07-21 18:32:38 -07:00
LoopRangeFolding.cpp Implement an scf.for range folding optimization pass. 2021-06-24 01:07:28 +00:00
LoopSpecialization.cpp [mlir][scf] Simplify affine.min ops after loop peeling 2021-08-19 17:24:53 +09:00
ParallelLoopFusion.cpp [MLIR] Create memref dialect and move dialect-specific ops from std. 2021-03-15 11:14:09 +01:00
ParallelLoopTiling.cpp [MLIR][DISC] Revise ParallelLoopTilingPass with inbound_check mode 2021-08-16 14:02:53 +02:00
PassDetail.h [MLIR] Create memref dialect and move dialect-specific ops from std. 2021-03-15 11:14:09 +01:00
StructuralTypeConversions.cpp [mlir][SCF] populateSCFStructuralTypeConversionsAndLegality WhileOp support 2021-07-14 12:43:04 +03:00
Utils.cpp [mlir][NFC] Refactor linalg substituteMin and AffineMinSCF canonizalizations 2021-04-21 07:19:36 -07:00