[CUDA] Ignore __CLANG_ATOMIC_LLONG_LOCK_FREE on i386
authorRyan Prichard <rprichard@google.com>
Thu, 21 Jul 2022 20:09:39 +0000 (13:09 -0700)
committerRyan Prichard <rprichard@google.com>
Fri, 22 Jul 2022 00:23:29 +0000 (17:23 -0700)
commit408a2638fda63b381f8750e16c78bc3c845cfdfd
treee21acd2ad6910507aa19fa4c04dec709f5d316e6
parentb8e1544b9df0340b920d1322884e9c5c51885bb1
[CUDA] Ignore __CLANG_ATOMIC_LLONG_LOCK_FREE on i386

The default host CPU for an i386 triple is typically at least an i586,
which has cmpxchg8b (Clang feature, "cx8"). Therefore,
`__CLANG_ATOMIC_LLONG_LOCK_FREE` is 2 on the host, but the value should
be 1 for the device.

Also, grep for `__CLANG_ATOMIC_*` instead of `__GCC_ATOMIC_*`. The CLANG
macros are always emitted, but the GCC macros are omitted for the
*-windows-msvc targets. The `__GCC_HAVE_SYNC_COMPARE_AND_SWAP` macro
always has GCC in its name, not CLANG, however.

Reviewed By: tra

Differential Revision: https://reviews.llvm.org/D127465
clang/test/Preprocessor/cuda-types.cu