[libclc] Fix atomic_fetch_add/sub overloads for uintptr_t (#192570) The overloads taking the memory order and/or scope parameters should have the `_explicit` suffix, according to the OpenCL C specification. GitOrigin-RevId: daf814c4319b4cbf183a55df0030d0706630999e
diff --git a/opencl/lib/generic/atomic/atomic_fetch_add.cl b/opencl/lib/generic/atomic/atomic_fetch_add.cl index 12b6f37..7a475a2 100644 --- a/opencl/lib/generic/atomic/atomic_fetch_add.cl +++ b/opencl/lib/generic/atomic/atomic_fetch_add.cl
@@ -52,22 +52,21 @@ #ifdef __opencl_c_atomic_scope_device -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add( +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add_explicit( volatile __local atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_add((volatile __local uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add( +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add_explicit( volatile __global atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_add((volatile __global uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, - ptrdiff_t v, - memory_order order) { +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add_explicit( + volatile atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } @@ -75,25 +74,24 @@ #endif // __opencl_c_atomic_scope_device _CLC_DEF _CLC_OVERLOAD uintptr_t -atomic_fetch_add(volatile __local atomic_uintptr_t *p, ptrdiff_t v, - memory_order order, memory_scope scope) { +atomic_fetch_add_explicit(volatile __local atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_add((volatile __local uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); } _CLC_DEF _CLC_OVERLOAD uintptr_t -atomic_fetch_add(volatile __global atomic_uintptr_t *p, ptrdiff_t v, - memory_order order, memory_scope scope) { +atomic_fetch_add_explicit(volatile __global atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_add((volatile __global uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, - ptrdiff_t v, - memory_order order, - memory_scope scope) { +_CLC_DEF _CLC_OVERLOAD uintptr_t +atomic_fetch_add_explicit(volatile atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); }
diff --git a/opencl/lib/generic/atomic/atomic_fetch_sub.cl b/opencl/lib/generic/atomic/atomic_fetch_sub.cl index 6dfcdde..8ef4ae2 100644 --- a/opencl/lib/generic/atomic/atomic_fetch_sub.cl +++ b/opencl/lib/generic/atomic/atomic_fetch_sub.cl
@@ -52,22 +52,21 @@ #ifdef __opencl_c_atomic_scope_device -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub( +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub_explicit( volatile __local atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_sub((volatile __local uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub( +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub_explicit( volatile __global atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_sub((volatile __global uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, - ptrdiff_t v, - memory_order order) { +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub_explicit( + volatile atomic_uintptr_t *p, ptrdiff_t v, memory_order order) { return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } @@ -75,25 +74,24 @@ #endif // __opencl_c_atomic_scope_device _CLC_DEF _CLC_OVERLOAD uintptr_t -atomic_fetch_sub(volatile __local atomic_uintptr_t *p, ptrdiff_t v, - memory_order order, memory_scope scope) { +atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_sub((volatile __local uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); } _CLC_DEF _CLC_OVERLOAD uintptr_t -atomic_fetch_sub(volatile __global atomic_uintptr_t *p, ptrdiff_t v, - memory_order order, memory_scope scope) { +atomic_fetch_sub_explicit(volatile __global atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_sub((volatile __global uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, - ptrdiff_t v, - memory_order order, - memory_scope scope) { +_CLC_DEF _CLC_OVERLOAD uintptr_t +atomic_fetch_sub_explicit(volatile atomic_uintptr_t *p, ptrdiff_t v, + memory_order order, memory_scope scope) { return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, order, __opencl_get_clang_memory_scope(scope)); }