[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