[flang-commits] [flang] [flang][cuda] Lower simple host to device data transfer (PR #85960)

Valentin Clement バレンタイン クレメン via flang-commits flang-commits at lists.llvm.org
Thu Mar 21 14:14:18 PDT 2024


================
@@ -3706,15 +3706,40 @@ class FirConverter : public Fortran::lower::AbstractConverter {
     return false;
   }
 
+  static void genCUDADataTransfer(fir::FirOpBuilder &builder,
+                                  mlir::Location loc, bool lhsIsDevice,
+                                  hlfir::Entity &lhs, bool rhsIsDevice,
+                                  hlfir::Entity &rhs) {
+    if (rhs.isBoxAddressOrValue() || lhs.isBoxAddressOrValue())
+      TODO(loc, "CUDA data transfler with descriptors");
+    if (lhsIsDevice && !rhsIsDevice) {
+      auto transferKindAttr = fir::CUDADataTransferKindAttr::get(
+          builder.getContext(), fir::CUDADataTransferKind::HostDevice);
+      // device = host
+      if (!rhs.isVariable()) {
+        auto [temp, cleanup] = hlfir::createTempFromMold(loc, builder, rhs);
+        builder.create<hlfir::AssignOp>(loc, rhs, temp, false, false);
----------------
clementval wrote:

Updated. 

https://github.com/llvm/llvm-project/pull/85960


More information about the flang-commits mailing list