[flang] [llvm] [mlir] [flang][OpenMP] Enable tiling (PR #143715)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 8 08:16:35 PDT 2025
================
@@ -38,14 +38,21 @@ namespace lower {
namespace omp {
int64_t getCollapseValue(const List<Clause> &clauses) {
- auto iter = llvm::find_if(clauses, [](const Clause &clause) {
- return clause.id == llvm::omp::Clause::OMPC_collapse;
- });
- if (iter != clauses.end()) {
- const auto &collapse = std::get<clause::Collapse>(iter->u);
- return evaluate::ToInt64(collapse.v).value();
+ int64_t collapseValue = 1;
+ int64_t numTileSizes = 0;
+ for (auto &clause : clauses) {
+ if (clause.id == llvm::omp::Clause::OMPC_collapse) {
+ const auto &collapse = std::get<clause::Collapse>(clause.u);
+ collapseValue = evaluate::ToInt64(collapse.v).value();
+ } else if (clause.id == llvm::omp::Clause::OMPC_sizes) {
+ const auto &sizes = std::get<clause::Sizes>(clause.u);
+ numTileSizes = sizes.v.size();
+ }
}
- return 1;
+
+ collapseValue = collapseValue - numTileSizes;
+ int64_t result = collapseValue > numTileSizes ? collapseValue : numTileSizes;
+ return result;
----------------
Meinersbur wrote:
Support for collapsing grid- and tile-loops have only been added in OpenMP 6.0. Before that, there was a restriction:

The value of the collapse clause should not really be modified implicitly. Is there is check in FortranSemantics that ensures collapse is not larger than the number of grid loops?
https://github.com/llvm/llvm-project/pull/143715
More information about the llvm-commits
mailing list