https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/188478
Follow up to #185263, which missed the overloads which take a memory order. >From fd0ad60347fe594fec7d17f670ebaad97aa0cb59 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 25 Mar 2026 13:45:19 +0100 Subject: [PATCH] libclc: Fix missing overloads for atomic_fetch_add/sub Follow up to #185263, which missed the overloads which take a memory order. --- .../lib/generic/atomic/atomic_fetch_add.cl | 19 +++++++++++++++++++ .../lib/generic/atomic/atomic_fetch_sub.cl | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl index ff2115f4c4b41..f4f3c322975ac 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl @@ -27,12 +27,24 @@ atomic_fetch_add(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( + 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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile __global atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_add((volatile __global uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( + 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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, @@ -41,6 +53,13 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(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); +} + #endif // _CLC_GENERIC_AS_SUPPORTED #endif // defined(__opencl_c_atomic_order_seq_cst) && diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl index 9740ff7c036db..1d8811335e810 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl @@ -27,12 +27,24 @@ atomic_fetch_sub(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( + 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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile __global atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_sub((volatile __global uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( + 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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, @@ -41,6 +53,13 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, __MEMORY_SCOPE_DEVICE); } +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(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); +} + #endif // _CLC_GENERIC_AS_SUPPORTED #endif // defined(__opencl_c_atomic_order_seq_cst) && _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
