[mlir][SCF] Further simplify affine maps during `for-loop-canonicalization`
authorMatthias Springer <springerm@google.com>
Thu, 25 Nov 2021 03:43:35 +0000 (12:43 +0900)
committerMatthias Springer <springerm@google.com>
Thu, 25 Nov 2021 03:44:19 +0000 (12:44 +0900)
commitee1bf186723abb933b2c337e589c5958167f3cbe
treec87eff3b7a0abdbcbb73b6e121739d15bd060711
parent8a8c655fe7c37665471d06b3e8cdff74f6b8ed3e
[mlir][SCF] Further simplify affine maps during `for-loop-canonicalization`

* Implement `FlatAffineConstraints::getConstantBound(EQ)`.
* Inject a simpler constraint for loops that have at most 1 iteration.
* Taking into account constant EQ bounds of FlatAffineConstraint dims/symbols during canonicalization of the resulting affine map in `canonicalizeMinMaxOp`.

Differential Revision: https://reviews.llvm.org/D114138
mlir/include/mlir/Analysis/AffineStructures.h
mlir/lib/Analysis/AffineStructures.cpp
mlir/lib/Dialect/SCF/Transforms/LoopSpecialization.cpp
mlir/test/Dialect/SCF/for-loop-canonicalization.mlir