[flang-commits] [flang] [llvm] [mlir] [flang][OpenMP] Enable tiling (PR #143715)
Jan Leyonberg via flang-commits
flang-commits at lists.llvm.org
Fri Aug 15 06:46:49 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;
----------------
jsjodin wrote:
I added a check in resolve-directives.cpp (line 2009) that checks that the collapse is not larger than the number of tiled loops (I think this corresponds to the number of grid loops) and gives an error otherwise. Perhaps the error message could be improved.
https://github.com/llvm/llvm-project/pull/143715
More information about the flang-commits
mailing list