47 lines · plain
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifdef __CLC_SCALAR10 11#if defined(__opencl_c_fp64) && (defined(cl_khr_int64_base_atomics) && \12 defined(cl_khr_int64_extended_atomics))13#define __CLC_HAVE_64_ATOMIC14#endif15#if defined(__CLC_FPSIZE) && \16 (__CLC_FPSIZE < 64 || defined(__CLC_HAVE_64_ATOMIC))17#define __CLC_HAVE_FP_ATOMIC18#endif19#if defined(__CLC_GENSIZE) && \20 ((__CLC_GENSIZE == 32) || \21 (__CLC_GENSIZE == 64 && defined(__CLC_HAVE_64_ATOMIC)))22#define __CLC_HAVE_INT_ATOMIC23#endif24#if defined(__CLC_HAVE_FP_ATOMIC) || defined(__CLC_HAVE_INT_ATOMIC)25 26#define __CLC_DEFINE_ATOMIC(ADDRSPACE) \27 _CLC_OVERLOAD _CLC_DEF void atomic_init( \28 volatile ADDRSPACE __CLC_ATOMIC_GENTYPE *Ptr, __CLC_GENTYPE Value) { \29 *(ADDRSPACE __CLC_GENTYPE *)Ptr = Value; \30 }31 32__CLC_DEFINE_ATOMIC(global)33__CLC_DEFINE_ATOMIC(local)34#if _CLC_GENERIC_AS_SUPPORTED35__CLC_DEFINE_ATOMIC()36#endif37 38#undef __CLC_DEFINE_ATOMIC39 40#endif // __CLC_HAVE_FP_ATOMIC || __CLC_HAVE_INT_ATOMIC41 42#undef __CLC_HAVE_INT_ATOMIC43#undef __CLC_HAVE_FP_ATOMIC44#undef __CLC_HAVE_64_ATOMIC45 46#endif // __CLC_SCALAR47