[llvm] [LoopInterchange] Improve profitability check for vectorization (PR #133672)
Ryotaro Kasuga via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 6 04:32:03 PDT 2025
================
@@ -221,13 +250,28 @@ static bool populateDependencyMatrix(CharMatrix &DepMatrix, unsigned Level,
Dep.push_back('I');
}
+ auto [Ite, Inserted] = Seen.try_emplace(
+ StringRef(Dep.data(), Dep.size()), DepMatrix.size());
+
// Make sure we only add unique entries to the dependency matrix.
- if (Seen.insert(StringRef(Dep.data(), Dep.size())).second)
+ if (Inserted) {
DepMatrix.push_back(Dep);
+ IsForwardFlags.push_back(true);
+ }
+ if (!IsForward)
+ IsForwardFlags.reset(Ite->second);
}
}
}
+ assert(DepMatrix.size() == IsForwardFlags.size() &&
+ "Dependency matrix and IsForwardVec should have the same size.");
+
+ // If all dependencies corresponding to a direction vector are forward, encode
+ // it to '<', otherwise to '*'.
+ for (unsigned I = 0; I != DepMatrix.size(); I++)
+ DepMatrix[I].push_back(IsForwardFlags[I] ? '<' : '*');
----------------
kasuga-fj wrote:
> You could go as for as to encode it as `<` and `*` in another trailing element of the dependence vector.
Do you mean something like this?
https://github.com/llvm/llvm-project/pull/133672
More information about the llvm-commits
mailing list