[Mlir-commits] [mlir] [MLIR][Affine] Fix fusion in the presence of cyclic deps in source nests (PR #128397)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Feb 24 01:26:57 PST 2025
================
@@ -447,3 +575,33 @@ bool mlir::affine::isTilingValid(ArrayRef<AffineForOp> loops) {
return true;
}
+
+bool mlir::affine::hasCyclicDependence(AffineForOp root) {
+ // Collect all the memory accesses in the source nest grouped by their
+ // immediate parent block.
+ DirectedOpGraph graph;
+ SmallVector<MemRefAccess> accesses;
+ root->walk([&](Operation *op) {
+ if (isa<AffineReadOpInterface, AffineWriteOpInterface>(op)) {
+ accesses.emplace_back(op);
+ graph.addNode(op);
+ }
+ });
+
+ // Construct the dependence graph for all the collected acccesses.
+ unsigned rootDepth = getNestingDepth(root);
+ for (const auto &accA : accesses) {
+ for (const auto &accB : accesses) {
+ if (accA.memref != accB.memref)
+ continue;
----------------
patel-vimal wrote:
Are we not expecting aliases here?
https://github.com/llvm/llvm-project/pull/128397
More information about the Mlir-commits
mailing list