[llvm] [libsycl] USM Aligned allocation functions (PR #213468)

Sergey Semenov via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 17 06:06:33 PDT 2026


================
@@ -0,0 +1,147 @@
+#include <mock/helpers.hpp>
+
+#include <sycl/__impl/device.hpp>
+#include <sycl/__impl/queue.hpp>
+#include <sycl/__impl/usm_functions.hpp>
+
+#include <detail/device_impl.hpp>
+#include <detail/queue_impl.hpp>
+
+#include <cstddef>
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+using namespace sycl;
+using namespace ::testing;
+
+TEST(USMFunctions, DeviceAllocation) {
+  constexpr size_t NumBytes = 1024;
+  constexpr size_t Alignment = 256;
+  constexpr size_t DefaultAlign = alignof(std::max_align_t);
+
+  mock::MockWrapper Mock;
+  queue Q;
+  device Dev = Q.get_device();
+  context Ctx = Q.get_context();
+  ol_device_handle_t OLDev = detail::getSyclObjImpl(Dev)->getOLHandle();
+
+  // 1. Test malloc_device
+  void *DummyPtr1 = mock::createDummyHandle<void *>();
+  EXPECT_CALL(Mock.get(), olMemAllocAligned(OLDev, OL_ALLOC_TYPE_DEVICE,
+                                            NumBytes, DefaultAlign, _))
+      .Times(1)
+      .WillOnce([&](ol_device_handle_t Device, ol_alloc_type_t AllocType,
+                    size_t Size, size_t Alignment,
+                    void **OutPtr) -> ol_result_t {
+        *OutPtr = DummyPtr1;
+        return OL_SUCCESS;
+      });
+
+  void *Ptr1 = malloc_device(NumBytes, Dev, Ctx);
+  EXPECT_EQ(Ptr1, DummyPtr1);
+
+  EXPECT_CALL(Mock.get(), olMemFree(Ptr1))
+      .Times(1)
+      .WillOnce(Return(ol_result_t(OL_SUCCESS)));
----------------
sergey-semenov wrote:

No reason to explicitly check for the success result anymore since unit test default actions now use `EXPECT_*` to trigger test failures rather than return an error code.

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


More information about the llvm-commits mailing list