[flang-commits] [flang] [flang][OpenMP] Add `reduction` clause support to `loop` directive (PR #128849)
Kareem Ergawy via flang-commits
flang-commits at lists.llvm.org
Thu Feb 27 05:13:33 PST 2025
================
@@ -288,20 +294,51 @@ class GenericLoopConversionPattern
rewriter.createBlock(&distributeOp.getRegion());
mlir::omp::WsloopOperands wsloopClauseOps;
+ populateReductionClauseOps(loopOp, wsloopClauseOps);
+ Fortran::common::openmp::EntryBlockArgs wsloopArgs;
+ wsloopArgs.reduction.vars = wsloopClauseOps.reductionVars;
+
auto wsloopOp =
rewriter.create<mlir::omp::WsloopOp>(loopOp.getLoc(), wsloopClauseOps);
wsloopOp.setComposite(true);
- rewriter.createBlock(&wsloopOp.getRegion());
+ mlir::Block *loopBlock =
+ genEntryBlock(rewriter, wsloopArgs, wsloopOp.getRegion());
mlir::IRMapping mapper;
- mlir::Block &loopBlock = *loopOp.getRegion().begin();
- for (auto [loopOpArg, parallelOpArg] : llvm::zip_equal(
- loopBlock.getArguments(), parallelBlock->getArguments()))
+ auto loopBlockInterface =
+ llvm::cast<mlir::omp::BlockArgOpenMPOpInterface>(*loopOp);
+
+ for (auto [loopOpArg, parallelOpArg] :
----------------
ergawy wrote:
Used the `BlockArgOpenMPInterface` to access the relevant args.
https://github.com/llvm/llvm-project/pull/128849
More information about the flang-commits
mailing list