Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 14 additions & 11 deletions libclc/clc/lib/generic/atomic/clc_atomic_def.inc
Original file line number Diff line number Diff line change
Expand Up @@ -21,47 +21,50 @@

#ifdef __CLC_HAS_ATOMIC

#ifndef __CLC_PTR_CASTTYPE
#define __CLC_PTR_CASTTYPE __CLC_GENTYPE
#ifndef __CLC_CASTTYPE
#define __CLC_CASTTYPE __CLC_GENTYPE
#endif

#ifndef __CLC_AS_RETTYPE
#define __CLC_AS_RETTYPE(x) x
#endif

#ifndef __CLC_AS_CASTTYPE
#define __CLC_AS_CASTTYPE(x) x
#endif

#ifdef __CLC_NO_VALUE_ARG
#define __CLC_DEFINE_ATOMIC(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_FUNCTION( \
volatile ADDRSPACE __CLC_GENTYPE *Ptr, int MemoryOrder, \
int MemoryScope) { \
return __CLC_AS_RETTYPE(__CLC_IMPL_FUNCTION( \
(ADDRSPACE __CLC_PTR_CASTTYPE *)Ptr, MemoryOrder, MemoryScope)); \
(ADDRSPACE __CLC_CASTTYPE *)Ptr, MemoryOrder, MemoryScope)); \
}
#elif defined(__CLC_INC_DEC)
#define __CLC_DEFINE_ATOMIC(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_FUNCTION( \
volatile ADDRSPACE __CLC_GENTYPE *Ptr, int MemoryOrder, \
int MemoryScope) { \
return __CLC_AS_RETTYPE( \
__CLC_IMPL_FUNCTION((ADDRSPACE __CLC_PTR_CASTTYPE *)Ptr, \
(__CLC_GENTYPE)1, MemoryOrder, MemoryScope)); \
return __CLC_IMPL_FUNCTION(Ptr, (__CLC_GENTYPE)1, MemoryOrder, \
MemoryScope); \
}
#elif defined(__CLC_RETURN_VOID)
#define __CLC_DEFINE_ATOMIC(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF void __CLC_FUNCTION( \
volatile ADDRSPACE __CLC_GENTYPE *Ptr, __CLC_GENTYPE Value, \
int MemoryOrder, int MemoryScope) { \
__CLC_IMPL_FUNCTION((ADDRSPACE __CLC_PTR_CASTTYPE *)Ptr, Value, \
MemoryOrder, MemoryScope); \
__CLC_IMPL_FUNCTION((ADDRSPACE __CLC_CASTTYPE *)Ptr, \
__CLC_AS_CASTTYPE(Value), MemoryOrder, MemoryScope); \
}
#else
#define __CLC_DEFINE_ATOMIC(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_FUNCTION( \
volatile ADDRSPACE __CLC_GENTYPE *Ptr, __CLC_GENTYPE Value, \
int MemoryOrder, int MemoryScope) { \
return __CLC_AS_RETTYPE( \
__CLC_IMPL_FUNCTION((ADDRSPACE __CLC_PTR_CASTTYPE *)Ptr, Value, \
MemoryOrder, MemoryScope)); \
return __CLC_AS_RETTYPE(__CLC_IMPL_FUNCTION( \
(ADDRSPACE __CLC_CASTTYPE *)Ptr, __CLC_AS_CASTTYPE(Value), \
MemoryOrder, MemoryScope)); \
}
#endif

Expand Down
6 changes: 4 additions & 2 deletions libclc/clc/lib/generic/atomic/clc_atomic_exchange.cl
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
#define __CLC_BODY <clc_atomic_def.inc>
#include <clc/integer/gentype.inc>

#undef __CLC_PTR_CASTTYPE
#undef __CLC_CASTTYPE
#undef __CLC_AS_RETTYPE
#define __CLC_PTR_CASTTYPE __CLC_BIT_INTN
#undef __CLC_AS_CASTTYPE
#define __CLC_CASTTYPE __CLC_BIT_INTN
#define __CLC_AS_RETTYPE(x) __CLC_AS_GENTYPE(x)
#define __CLC_AS_CASTTYPE __CLC_AS_S_GENTYPE

#define __CLC_BODY <clc_atomic_def.inc>
#include <clc/math/gentype.inc>
4 changes: 2 additions & 2 deletions libclc/clc/lib/generic/atomic/clc_atomic_load.cl
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
#define __CLC_BODY <clc_atomic_def.inc>
#include <clc/integer/gentype.inc>

#undef __CLC_PTR_CASTTYPE
#undef __CLC_CASTTYPE
#undef __CLC_AS_RETTYPE
#define __CLC_PTR_CASTTYPE __CLC_BIT_INTN
#define __CLC_CASTTYPE __CLC_BIT_INTN
#define __CLC_AS_RETTYPE(x) __CLC_AS_GENTYPE(x)

#define __CLC_BODY <clc_atomic_def.inc>
Expand Down
6 changes: 4 additions & 2 deletions libclc/clc/lib/generic/atomic/clc_atomic_store.cl
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
#define __CLC_BODY <clc_atomic_def.inc>
#include <clc/integer/gentype.inc>

#undef __CLC_PTR_CASTTYPE
#define __CLC_PTR_CASTTYPE __CLC_BIT_INTN
#undef __CLC_CASTTYPE
#undef __CLC_AS_CASTTYPE
#define __CLC_CASTTYPE __CLC_BIT_INTN
#define __CLC_AS_CASTTYPE __CLC_AS_S_GENTYPE

#define __CLC_BODY <clc_atomic_def.inc>
#include <clc/math/gentype.inc>
Loading