Simplify affine bound min or max with operands
Add canonicalization for affine.for bounds to use operand info (when operands are outer loop affine.for IVs) to simplify bounds: redundant bound expressions are eliminated in specific cases that are easy to check and well-suited for op canonicaliation. If the lowest or the highest value the affine expression can take is already covered by other constant bounds, the expression can be removed. Eg: `min (d0) -> (32 * d0 + 32, 32)(%i) where 0 <= %i < 2` The first expression can't be less than 32 and can be simplified away with a lightweight local rewrite. This simplification being part of canonicalization only handles simple expressions, specifically, a sum of products of operands with constants. This is a very common and a dominant case where such simplification is desired. These can be flattened without any local variables. Reviewed By: dcaballe, springerm Differential Revision: https://reviews.llvm.org/D149007
Loading
Please sign in to comment