[Openmp-commits] [flang] [mlir] [openmp] [Flang][OpenMP] Add support for interop construct (PR #203959)
Sairudra More via Openmp-commits
openmp-commits at lists.llvm.org
Fri Jul 3 00:03:56 PDT 2026
================
@@ -3711,6 +3711,98 @@ convertOmpTaskgroupOp(omp::TaskgroupOp tgOp, llvm::IRBuilderBase &builder,
return success();
}
+static LogicalResult
+convertOmpInteropInitOp(omp::InteropInitOp initOp, llvm::IRBuilderBase &builder,
+ LLVM::ModuleTranslation &moduleTranslation) {
+ if (!initOp.getDependVars().empty() || initOp.getDependKinds() ||
+ !initOp.getDependIterated().empty() || initOp.getDependIteratedKinds())
+ return initOp.emitError()
+ << "not yet implemented: Unhandled clause depend in "
+ << omp::InteropInitOp::getOperationName() << " operation";
+
+ llvm::OpenMPIRBuilder *ompBuilder = moduleTranslation.getOpenMPBuilder();
+ llvm::Value *interopVar =
+ moduleTranslation.lookupValue(initOp.getInteropVar());
+ llvm::Value *device = initOp.getDevice()
+ ? moduleTranslation.lookupValue(initOp.getDevice())
+ : nullptr;
+
+ // TODO: Handle depend clauses when supported.
+ llvm::Value *numDeps = llvm::ConstantInt::get(builder.getInt32Ty(), 0);
+ llvm::Value *depArray = llvm::ConstantPointerNull::get(builder.getPtrTy());
+ bool hasNowait = initOp.getNowait();
+
+ // Emit one call per interop type. The runtime expects a single type per call.
+ for (auto typeAttr : initOp.getInteropTypes()) {
----------------
Saieiei wrote:
Could this avoid emitting multiple runtime init calls for a single `init` clause?
For example:
```fortran
integer(omp_interop_kind) :: obj
!$omp interop init(targetsync, target: obj)
```
currently emits two `__tgt_interop_init` calls on the same interop handle, first for `targetsync` and then for `target`. That makes the final initialized object order-dependent, since the last runtime init call wins.
This also seems to diverge from Clang, which lowers one `init` clause to a single `createOMPInteropInit` call.
https://github.com/llvm/llvm-project/pull/203959
More information about the Openmp-commits
mailing list