Skip to content

Commit 1c830b7

Browse files
authored
[Preprocessor] Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 for AArch64 (#74954)
GCC sets `#define HAVE_atomic_compare_and_swapti 1` and therefore defines `__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16`. Clang compiles the 16-byte legacy `__sync_bool_compare_and_swap` and new `__atomic_compare_exchange` compile to LDXP/STXP or (with LSE) CASP{,A,L,AL}. Link: #71883
1 parent d2672a5 commit 1c830b7

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,11 +574,12 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
574574
else if (*ArchInfo == llvm::AArch64::ARMV9_5A)
575575
getTargetDefinesARMV95A(Opts, Builder);
576576

577-
// All of the __sync_(bool|val)_compare_and_swap_(1|2|4|8) builtins work.
577+
// All of the __sync_(bool|val)_compare_and_swap_(1|2|4|8|16) builtins work.
578578
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
579579
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
580580
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
581581
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
582+
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16");
582583

583584
// Allow detection of fast FMA support.
584585
Builder.defineMacro("__FP_FAST_FMA", "1");

clang/test/Preprocessor/init-aarch64.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
// AARCH64-NEXT: #define __FP_FAST_FMAF 1
119119
// AARCH64-NEXT: #define __GCC_ASM_FLAG_OUTPUTS__ 1
120120
// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
121+
// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
121122
// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
122123
// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
123124
// AARCH64-NEXT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1

0 commit comments

Comments
 (0)