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.
Depends On D107730
can you elaborate on the "is beneficial" (i.e. we generally distinguish between enabling transformations and transformations that "cleanup" after the fact, and this is clearly the latter)