[llvm] [libsycl] Add liboffload kernel creation (PR #188794)

Sergey Semenov via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 14 06:43:40 PDT 2026


================
@@ -45,7 +80,26 @@ class DeviceImageWrapper {
     return static_cast<size_t>(MBin->ImageEnd - MBin->ImageStart);
   }
 
+  ///  Returns liboffload program handle by lookup of existing programs or by
+  ///  creation of a new one from this image.
+  /// \param DeviceHandle liboffload handle of device the program must be
+  /// compatible with.
+  /// \return liboffload handle of the program compatible with specified device.
+  ol_program_handle_t getOrCreateProgram(ol_device_handle_t DeviceHandle) {
+    auto ProgramIt = MPrograms.find(DeviceHandle);
+    if (ProgramIt == MPrograms.end()) {
+      ProgramIt =
+          MPrograms.emplace_hint(ProgramIt, std::piecewise_construct,
+                                 std::forward_as_tuple(DeviceHandle),
+                                 std::forward_as_tuple(DeviceHandle, *this));
+    }
+
+    return ProgramIt->second.getOLHandle();
----------------
sergey-semenov wrote:

```suggestion
  return MPrograms.emplace(std::piecewise_construct, std::forward_as_tuple(DeviceHandle), std::forward_as_tuple(DeviceHandle, *this));
```

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


More information about the llvm-commits mailing list