1#include <clc/clc.h> 2 3#ifdef cl_khr_int64_base_atomics 4 5#define IMPL(AS, TYPE) \ 6_CLC_OVERLOAD _CLC_DEF TYPE atom_cmpxchg(volatile AS TYPE *p, TYPE cmp, TYPE val) { \ 7 return __sync_val_compare_and_swap_8(p, cmp, val); \ 8} 9 10IMPL(global, long) 11IMPL(global, unsigned long) 12IMPL(local, long) 13IMPL(local, unsigned long) 14#undef IMPL 15 16#endif 17