brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 2e23df7 Raw
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