diff --git a/runtime/api/api.cpp b/runtime/api/api.cpp index cadc40171e..a5a05b7a4a 100644 --- a/runtime/api/api.cpp +++ b/runtime/api/api.cpp @@ -3501,7 +3501,14 @@ cl_int clEnqueueMemsetINTEL( cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event) { - return CL_OUT_OF_HOST_MEMORY; + return clEnqueueSVMMemFill(commandQueue, + dstPtr, + &value, + 1u, + size, + numEventsInWaitList, + eventWaitList, + event); } cl_int clEnqueueMemcpyINTEL( diff --git a/unit_tests/api/cl_unified_shared_memory_tests.inl b/unit_tests/api/cl_unified_shared_memory_tests.inl index 59c44d7920..d0a58817f2 100644 --- a/unit_tests/api/cl_unified_shared_memory_tests.inl +++ b/unit_tests/api/cl_unified_shared_memory_tests.inl @@ -151,9 +151,45 @@ TEST(clUnifiedSharedMemoryTests, whenClSetKernelArgMemPointerINTELisCalledWithVa EXPECT_EQ(CL_SUCCESS, retVal); } -TEST(clUnifiedSharedMemoryTests, whenclEnqueueMemsetINTELisCalledThenOutOfHostMemoryErrorIsReturned) { +TEST(clUnifiedSharedMemoryTests, whenclEnqueueMemsetINTELisCalledWithoutIncorrectCommandQueueThenInvaliQueueErrorIsReturned) { auto retVal = clEnqueueMemsetINTEL(0, nullptr, 0, 0, 0, nullptr, nullptr); - EXPECT_EQ(CL_OUT_OF_HOST_MEMORY, retVal); + EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal); +} + +TEST(clUnifiedSharedMemoryTests, whenclEnqueueMemsetINTELisCalledWithProperParametersThenParametersArePassedCorrectly) { + auto mockContext = std::make_unique(); + cl_int retVal = CL_SUCCESS; + + auto unfiedMemoryDeviceAllocation = clDeviceMemAllocINTEL(mockContext.get(), mockContext->getDevice(0u), nullptr, 400, 0, &retVal); + + struct MockedCommandQueue : public CommandQueue { + cl_int enqueueSVMMemFill(void *svmPtr, + const void *pattern, + size_t patternSize, + size_t size, + cl_uint numEventsInWaitList, + const cl_event *eventWaitList, + cl_event *event) override { + + EXPECT_EQ(12, *reinterpret_cast(pattern)); + EXPECT_EQ(expectedDstPtr, svmPtr); + EXPECT_EQ(400u, size); + EXPECT_EQ(1u, patternSize); + EXPECT_EQ(0u, numEventsInWaitList); + EXPECT_EQ(nullptr, eventWaitList); + EXPECT_EQ(nullptr, event); + return CL_SUCCESS; + } + void *expectedDstPtr = nullptr; + }; + + MockedCommandQueue queue; + queue.expectedDstPtr = unfiedMemoryDeviceAllocation; + cl_int setValue = 12u; + + retVal = clEnqueueMemsetINTEL(&queue, unfiedMemoryDeviceAllocation, setValue, 400u, 0, nullptr, nullptr); + EXPECT_EQ(CL_SUCCESS, retVal); + clMemFreeINTEL(mockContext.get(), unfiedMemoryDeviceAllocation); } TEST(clUnifiedSharedMemoryTests, whenClEnqueueMemcpyINTELisCalledWithWrongQueueThenInvalidQueueErrorIsReturned) {