Refactor and extend the scf::ParalleLoopFusion pass: - Refactor code, rename functions and add comments to improve readability - Make the dependency analysis safer by checking for read-after-write dependencies also with vector.load/store & vector.transfer_read/write ops, in addition to memref.load/store, and bail out when other unsupported ops with memory effects are found. - Extend the cases when the fusion is applied: allow fusing also when one of the two loops reads/writes to memory through a full view/alias of the buffer (read/written by the dual operation in the other loop) that can be trivially resolved, including rank-reducing full subviews.
Multi-Level Intermediate Representation
See https://mlir.llvm.org/ for more information.