Generalize affine fusion to work at any inner depth; fusing loops inside other affine.for or even inside scf.for or scf.while nests. Apply in post order on all affine nests on the pass' top-level operation. Fix MDG init for blocks inside other affine nests. Relax unnecessary requirement for unique vars during merge and align of FlatLinearValueConstraints. There are several cases where FlatLinearValueConstraints need to have duplicate Values for the dimensions: for eg. in dependence relation systems with source and destination accesses could have common loop IVs. `mergeAndAlign` can be done even in the presence of Values reappearing by simply aligning from left to right in that order. While at this, drop outdated comments; improve some debug messages.
87 KiB
87 KiB