[flang-commits] [flang] [llvm] [mlir] [flang][OpenMP] Lower target in_reduction (PR #199967)
Sairudra More via flang-commits
flang-commits at lists.llvm.org
Mon Jul 13 07:50:30 PDT 2026
================
@@ -1218,6 +1218,57 @@ Value *OpenMPIRBuilder::getOrCreateThreadID(Value *Ident) {
"omp_global_thread_num");
}
+OpenMPIRBuilder::InsertPointTy OpenMPIRBuilder::createTargetInReduction(
+ const LocationDescription &Loc, ArrayRef<Value *> OrigPtrs,
+ ArrayRef<Type *> ResultPtrTys,
+ function_ref<void(unsigned, Value *)> MapPrivate) {
+ assert(OrigPtrs.size() == ResultPtrTys.size() &&
+ "expected one result pointer type per in_reduction item");
+ if (!updateToLocation(Loc))
+ return Loc.IP;
+ if (OrigPtrs.empty())
+ return Builder.saveIP();
+
+ // Compute the executing thread's gtid once for the whole target body and
+ // reuse it for every in_reduction lookup, so a target with several
+ // in_reduction items does not emit a redundant __kmpc_global_thread_num per
+ // item. Owning the gtid setup and the lookup loop here keeps the runtime
+ // generation inside OpenMPIRBuilder rather than the MLIR translation layer.
----------------
Saieiei wrote:
Done!
https://github.com/llvm/llvm-project/pull/199967
More information about the flang-commits
mailing list