https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/188478
>From 4c99177556caf9c386e7f1260cd1dcb6c9bf15f3 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 25 Mar 2026 13:45:19 +0100 Subject: [PATCH 1/3] 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) && >From e76bbaa26b503fac27a3811e7a53c0673c93fc46 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 25 Mar 2026 14:46:47 +0100 Subject: [PATCH 2/3] Address comments --- .../lib/generic/atomic/atomic_fetch_add.cl | 49 ++++++++++++++----- .../lib/generic/atomic/atomic_fetch_sub.cl | 49 ++++++++++++++----- 2 files changed, 72 insertions(+), 26 deletions(-) diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl index f4f3c322975ac..e399afef9f0d6 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl @@ -18,8 +18,9 @@ #define __CLC_BODY "atomic_def.inc" #include "clc/math/gentype.inc" -#if defined(__opencl_c_atomic_order_seq_cst) && \ - defined(__opencl_c_atomic_scope_device) +#ifdef __opencl_c_atomic_scope_device + +#ifdef __opencl_c_atomic_order_seq_cst _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { @@ -27,6 +28,21 @@ 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 __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); +} + +#if _CLC_GENERIC_AS_SUPPORTED +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, + ptrdiff_t v) { + return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, + __MEMORY_SCOPE_DEVICE); +} +#endif // _CLC_GENERIC_AS_SUPPORTED +#endif // __opencl_c_atomic_order_seq_cst + _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, @@ -34,9 +50,10 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( } _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); +atomic_fetch_add(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( @@ -45,22 +62,28 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( __MEMORY_SCOPE_DEVICE); } -#if _CLC_GENERIC_AS_SUPPORTED +_CLC_OVERLOAD _CLC_DEF uintptr_t +atomic_fetch_add(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, - ptrdiff_t v) { - return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, + ptrdiff_t v, + memory_order order) { + return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, ptrdiff_t v, - memory_order order) { + memory_order order, + memory_scope scope) { return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, order, - __MEMORY_SCOPE_DEVICE); + __opencl_get_clang_memory_scope(scope)); } #endif // _CLC_GENERIC_AS_SUPPORTED - -#endif // defined(__opencl_c_atomic_order_seq_cst) && - // defined(__opencl_c_atomic_scope_device) +#endif // __opencl_c_atomic_scope_device diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl index 1d8811335e810..f639a71794639 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl @@ -18,8 +18,9 @@ #define __CLC_BODY "atomic_def.inc" #include "clc/math/gentype.inc" -#if defined(__opencl_c_atomic_order_seq_cst) && \ - defined(__opencl_c_atomic_scope_device) +#ifdef __opencl_c_atomic_scope_device + +#ifdef __opencl_c_atomic_order_seq_cst _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { @@ -27,6 +28,21 @@ 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 __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); +} + +#if _CLC_GENERIC_AS_SUPPORTED +_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, + ptrdiff_t v) { + return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, + __MEMORY_SCOPE_DEVICE); +} +#endif // _CLC_GENERIC_AS_SUPPORTED +#endif // __opencl_c_atomic_order_seq_cst + _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, @@ -34,9 +50,10 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( } _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); +atomic_fetch_sub(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( @@ -45,22 +62,28 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( __MEMORY_SCOPE_DEVICE); } -#if _CLC_GENERIC_AS_SUPPORTED +_CLC_OVERLOAD _CLC_DEF uintptr_t +atomic_fetch_sub(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, - ptrdiff_t v) { - return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, + ptrdiff_t v, + memory_order order) { + return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, order, __MEMORY_SCOPE_DEVICE); } _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, ptrdiff_t v, - memory_order order) { + memory_order order, + memory_scope scope) { return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, order, - __MEMORY_SCOPE_DEVICE); + __opencl_get_clang_memory_scope(scope)); } #endif // _CLC_GENERIC_AS_SUPPORTED - -#endif // defined(__opencl_c_atomic_order_seq_cst) && - // defined(__opencl_c_atomic_scope_device) +#endif // __opencl_c_atomic_scope_device >From 412912c9a76884ed32a6e1be10162af4306e42c4 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 25 Mar 2026 14:55:13 +0100 Subject: [PATCH 3/3] Fix formatting --- .../lib/generic/atomic/atomic_fetch_add.cl | 18 +++++++++--------- .../lib/generic/atomic/atomic_fetch_sub.cl | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl index e399afef9f0d6..d63101fced189 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl @@ -22,20 +22,20 @@ #ifdef __opencl_c_atomic_order_seq_cst -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_add((volatile __local uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD 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); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_add((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); @@ -43,26 +43,26 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, #endif // _CLC_GENERIC_AS_SUPPORTED #endif // __opencl_c_atomic_order_seq_cst -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( +_CLC_DEF _CLC_OVERLOAD 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 +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add( +_CLC_DEF _CLC_OVERLOAD 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); } -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(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, @@ -70,14 +70,14 @@ atomic_fetch_add(volatile __global atomic_uintptr_t *p, ptrdiff_t v, } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD 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); } -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_add(volatile atomic_uintptr_t *p, ptrdiff_t v, memory_order order, memory_scope scope) { diff --git a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl index f639a71794639..c97b9cb247d51 100644 --- a/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl +++ b/libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl @@ -22,20 +22,20 @@ #ifdef __opencl_c_atomic_order_seq_cst -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(volatile __local atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_sub((volatile __local uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); } -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD 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); } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, ptrdiff_t v) { return __scoped_atomic_fetch_sub((volatile uintptr_t *)p, v, __ATOMIC_SEQ_CST, __MEMORY_SCOPE_DEVICE); @@ -43,26 +43,26 @@ _CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, #endif // _CLC_GENERIC_AS_SUPPORTED #endif // __opencl_c_atomic_order_seq_cst -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( +_CLC_DEF _CLC_OVERLOAD 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 +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(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_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub( +_CLC_DEF _CLC_OVERLOAD 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); } -_CLC_OVERLOAD _CLC_DEF uintptr_t +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(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, @@ -70,14 +70,14 @@ atomic_fetch_sub(volatile __global atomic_uintptr_t *p, ptrdiff_t v, } #if _CLC_GENERIC_AS_SUPPORTED -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD 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); } -_CLC_OVERLOAD _CLC_DEF uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, +_CLC_DEF _CLC_OVERLOAD uintptr_t atomic_fetch_sub(volatile atomic_uintptr_t *p, ptrdiff_t v, memory_order order, memory_scope scope) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
