[Openmp-commits] [flang] [llvm] [mlir] [openmp] [MLIR][OpenMP] Add omp.fuse operation (PR #168898)
Michael Kruse via Openmp-commits
openmp-commits at lists.llvm.org
Wed Jan 21 03:24:34 PST 2026
================
@@ -2216,6 +2218,64 @@ static void genTileOp(Fortran::lower::AbstractConverter &converter,
sizesClause.sizes);
}
+static void genFuseOp(Fortran::lower::AbstractConverter &converter,
+ Fortran::lower::SymMap &symTable,
+ lower::StatementContext &stmtCtx,
+ Fortran::semantics::SemanticsContext &semaCtx,
+ Fortran::lower::pft::Evaluation &eval, mlir::Location loc,
+ const ConstructQueue &queue,
+ ConstructQueue::const_iterator item) {
+ fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder();
+
+ int32_t first = 0;
+ int32_t count = 0;
+ auto iter = llvm::find_if(item->clauses, [](const Clause &clause) {
+ return clause.id == llvm::omp::Clause::OMPC_looprange;
+ });
+ if (iter != item->clauses.end()) {
+ const auto &looprange = std::get<clause::Looprange>(iter->u);
+ first = evaluate::ToInt64(std::get<0>(looprange.t)).value();
+ count = evaluate::ToInt64(std::get<1>(looprange.t)).value();
+ }
+
+ llvm::SmallVector<mlir::Value> applyees;
+ for (auto &child : eval.getNestedEvaluations()) {
+ // Skip OmpEndLoopDirective
+ if (&child == &eval.getLastNestedEvaluation())
+ break;
+ // Skip Compiler Directive
----------------
Meinersbur wrote:
```suggestion
// Skip any CompilerDirective
```
https://github.com/llvm/llvm-project/pull/168898
More information about the Openmp-commits
mailing list