Changes include the following:
- Single iteration reduction loops being sibling fused at innermost insertion level are skipped from being considered as sequential loops. Otherwise, the slice bounds of these loops is reset.
- Promote loops that are skipped in previous step into outer loops.
- Two utility function - buildSliceTripCountMap, getSliceIterationCount - are moved from
mlir/lib/Transforms/Utils/LoopFusionUtils.cpp to mlir/lib/Analysis/Utils.cpp
This function actually requires the outer loop to be parallel, but also to contain reductions inside it, correct ?