[Mlir-commits] [mlir] [mlir][OpenMP] Translate reductions on taskloop (PR #199670)
Sairudra More
llvmlistbot at llvm.org
Thu May 28 08:50:53 PDT 2026
================
@@ -3491,6 +3601,49 @@ convertOmpTaskloopContextOp(omp::TaskloopContextOp contextOp,
moduleTranslation.mapValue(blockArg, llvmPrivateVar);
}
+ // Map reduction and in_reduction block arguments to the per-task private
+ // storage returned by __kmpc_task_reduction_get_th_data. This call must
+ // be emitted inside the to-be-outlined task body so that it returns the
+ // *executing* thread's gtid (not the encountering thread's). The
+ // taskgroup descriptor `redDesc` is computed in the outer scope and is
+ // auto-captured into the task shareds aggregate by CodeExtractor during
+ // OpenMPIRBuilder::finalize. For in_reduction the descriptor is NULL:
+ // the runtime walks up enclosing taskgroups to find the matching
+ // task_reduction registration for `origPtr`.
+ if (!redDecls.empty() || !inRedDecls.empty()) {
+ auto iface =
+ cast<omp::BlockArgOpenMPOpInterface>(contextOp.getOperation());
+ llvm::OpenMPIRBuilder &ompB = *moduleTranslation.getOpenMPBuilder();
+ llvm::Module *m = moduleTranslation.getLLVMModule();
+ llvm::LLVMContext &llvmCtx = m->getContext();
+ uint32_t srcLocSize;
+ llvm::Constant *srcLocStr = ompB.getOrCreateDefaultSrcLocStr(srcLocSize);
----------------
Saieiei wrote:
Done. This now uses the MLIR op/debug location instead of the default source location.
https://github.com/llvm/llvm-project/pull/199670
More information about the Mlir-commits
mailing list