diff --git a/sycl/test-e2e/USM/fill_any_size.cpp b/sycl/test-e2e/USM/fill_any_size.cpp index 037ac4b884cae..43ef883cdde35 100644 --- a/sycl/test-e2e/USM/fill_any_size.cpp +++ b/sycl/test-e2e/USM/fill_any_size.cpp @@ -1,8 +1,6 @@ // RUN: %{build} -o %t1.out // RUN: %{run} %t1.out // clang-format off -// UNSUPPORTED: opencl -// UNSUPPORTED-TRACKER: https://github.com/oneapi-src/unified-runtime/issues/2440 // clang-format on /** diff --git a/unified-runtime/source/adapters/hip/usm.cpp b/unified-runtime/source/adapters/hip/usm.cpp index 0e0fdc1721a35..154125023950e 100644 --- a/unified-runtime/source/adapters/hip/usm.cpp +++ b/unified-runtime/source/adapters/hip/usm.cpp @@ -485,11 +485,6 @@ bool checkUSMAlignment(uint32_t &alignment, const ur_usm_desc_t *pUSMDesc) { (alignment == 0 || ((alignment & (alignment - 1)) == 0))); } -bool checkUSMImplAlignment(uint32_t Alignment, void **ResultPtr) { - return Alignment == 0 || - reinterpret_cast(*ResultPtr) % Alignment == 0; -} - UR_APIEXPORT ur_result_t UR_APICALL urUSMPoolCreateExp(ur_context_handle_t, ur_device_handle_t, ur_usm_pool_desc_t *, diff --git a/unified-runtime/source/adapters/hip/usm.hpp b/unified-runtime/source/adapters/hip/usm.hpp index a116090d5d3b1..1055968c8a760 100644 --- a/unified-runtime/source/adapters/hip/usm.hpp +++ b/unified-runtime/source/adapters/hip/usm.hpp @@ -120,5 +120,3 @@ ur_result_t USMHostAllocImpl(void **ResultPtr, ur_context_handle_t Context, uint32_t Alignment); bool checkUSMAlignment(uint32_t &alignment, const ur_usm_desc_t *pUSMDesc); - -bool checkUSMImplAlignment(uint32_t Alignment, void **ResultPtr); diff --git a/unified-runtime/source/adapters/opencl/usm.cpp b/unified-runtime/source/adapters/opencl/usm.cpp index 6f39e505ca5f6..b11c2a8f48bc8 100644 --- a/unified-runtime/source/adapters/opencl/usm.cpp +++ b/unified-runtime/source/adapters/opencl/usm.cpp @@ -269,7 +269,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMFill( // Have to look up the context from the kernel cl_context CLContext = hQueue->Context->CLContext; - if (patternSize <= 128 && isPowerOf2(patternSize)) { + if (patternSize <= 128 && isPowerOf2(patternSize) && + checkUSMImplAlignment(patternSize, &ptr)) { clEnqueueMemFillINTEL_fn EnqueueMemFill = nullptr; UR_RETURN_ON_FAILURE( cl_ext::getExtFuncFromContext( diff --git a/unified-runtime/source/common/ur_util.hpp b/unified-runtime/source/common/ur_util.hpp index 47a39e0ead8c0..99d0f767058b4 100644 --- a/unified-runtime/source/common/ur_util.hpp +++ b/unified-runtime/source/common/ur_util.hpp @@ -548,4 +548,9 @@ static inline std::string groupDigits(Numeric numeric) { template Spinlock> AtomicSingleton::instance; +inline bool checkUSMImplAlignment(uint32_t Alignment, void **ResultPtr) { + return Alignment == 0 || + reinterpret_cast(*ResultPtr) % Alignment == 0; +} + #endif /* UR_UTIL_H */