Skip to content

Commit 508332d

Browse files
labrineatmsri
authored andcommitted
[AArch64] Add missing ACLE predefined macros and update __ARM_ACLE. (llvm#108857)
Adds __ARM_ACLE_VERSION and __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL as defined here ARM-software/acle#301 and here ARM-software/acle#302. Also bumps __ARM_ACLE to 202420.
1 parent c68e40b commit 508332d

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,14 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
399399
Builder.defineMacro("__AARCH64_CMODEL_" + CodeModel + "__");
400400

401401
// ACLE predefines. Many can only have one possible value on v8 AArch64.
402-
Builder.defineMacro("__ARM_ACLE", "200");
402+
Builder.defineMacro("__ARM_ACLE_VERSION(year, quarter, patch)",
403+
"(100 * (year) + 10 * (quarter) + (patch))");
404+
#define __ARM_ACLE_VERSION(Y, Q, P) (100 * (Y) + 10 * (Q) + (P))
405+
Builder.defineMacro("__ARM_ACLE",
406+
std::to_string(__ARM_ACLE_VERSION(2024, 2, 0)));
407+
Builder.defineMacro("__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL",
408+
std::to_string(__ARM_ACLE_VERSION(2024, 2, 0)));
409+
#undef __ARM_ACLE_VERSION
403410
Builder.defineMacro("__ARM_ARCH",
404411
std::to_string(ArchInfo->Version.getMajor()));
405412
Builder.defineMacro("__ARM_ARCH_PROFILE",

clang/test/Preprocessor/aarch64-target-features.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
// CHECK: __AARCH64EL__ 1
55
// CHECK: __ARM_64BIT_STATE 1
66
// CHECK-NOT: __ARM_32BIT_STATE
7-
// CHECK: __ARM_ACLE 200
87
// CHECK: __ARM_ALIGN_MAX_STACK_PWR 4
98
// CHECK: __ARM_ARCH 8
109
// CHECK: __ARM_ARCH_ISA_A64 1

clang/test/Preprocessor/init-aarch64.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
// AARCH64_LE-NEXT: #define __AARCH64EL__ 1
1313
// AARCH64_LE-NEXT: #define __AARCH64_CMODEL_SMALL__ 1
1414
// AARCH64-NEXT: #define __ARM_64BIT_STATE 1
15-
// AARCH64-NEXT: #define __ARM_ACLE 200
15+
// AARCH64-NEXT: #define __ARM_ACLE 202420
16+
// AARCH64-NEXT: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
1617
// AARCH64-NEXT: #define __ARM_ALIGN_MAX_STACK_PWR 4
1718
// AARCH64-NEXT: #define __ARM_ARCH 8
1819
// AARCH64-NEXT: #define __ARM_ARCH_ISA_A64 1
@@ -121,6 +122,7 @@
121122
// AARCH64-NEXT: #define __FPCLASS_SNAN 0x0001
122123
// AARCH64-NEXT: #define __FP_FAST_FMA 1
123124
// AARCH64-NEXT: #define __FP_FAST_FMAF 1
125+
// AARCH64-NEXT: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202420
124126
// AARCH64-NEXT: #define __GCC_ASM_FLAG_OUTPUTS__ 1
125127
// AARCH64-NEXT: #define __GCC_CONSTRUCTIVE_SIZE {{.+}}
126128
// AARCH64-NEXT: #define __GCC_DESTRUCTIVE_SIZE {{.+}}
@@ -393,6 +395,8 @@
393395
// AARCH64-DARWIN: #define __AARCH64EL__ 1
394396
// AARCH64-DARWIN-NOT: #define __AARCH_BIG_ENDIAN 1
395397
// AARCH64-DARWIN: #define __ARM_64BIT_STATE 1
398+
// AARCH64-DARWIN: #define __ARM_ACLE 202420
399+
// AARCH64-DARWIN: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
396400
// AARCH64-DARWIN: #define __ARM_ARCH 8
397401
// AARCH64-DARWIN: #define __ARM_ARCH_ISA_A64 1
398402
// AARCH64-DARWIN-NOT: #define __ARM_BIG_ENDIAN 1
@@ -429,6 +433,7 @@
429433
// AARCH64-DARWIN: #define __FLT_MIN_EXP__ (-125)
430434
// AARCH64-DARWIN: #define __FLT_MIN__ 1.17549435e-38F
431435
// AARCH64-DARWIN: #define __FLT_RADIX__ 2
436+
// AARCH64-DARWIN: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202420
432437
// AARCH64-DARWIN: #define __INT16_C_SUFFIX__
433438
// AARCH64-DARWIN: #define __INT16_FMTd__ "hd"
434439
// AARCH64-DARWIN: #define __INT16_FMTi__ "hi"
@@ -588,7 +593,8 @@
588593
// AARCH64-MSVC: #define _WIN64 1
589594
// AARCH64-MSVC: #define __AARCH64EL__ 1
590595
// AARCH64-MSVC: #define __ARM_64BIT_STATE 1
591-
// AARCH64-MSVC: #define __ARM_ACLE 200
596+
// AARCH64-MSVC: #define __ARM_ACLE 202420
597+
// AARCH64-MSVC: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
592598
// AARCH64-MSVC: #define __ARM_ALIGN_MAX_STACK_PWR 4
593599
// AARCH64-MSVC: #define __ARM_ARCH 8
594600
// AARCH64-MSVC: #define __ARM_ARCH_ISA_A64 1
@@ -644,6 +650,7 @@
644650
// AARCH64-MSVC: #define __FLT_MIN_EXP__ (-125)
645651
// AARCH64-MSVC: #define __FLT_MIN__ 1.17549435e-38F
646652
// AARCH64-MSVC: #define __FLT_RADIX__ 2
653+
// AARCH64-MSVC: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202420
647654
// AARCH64-MSVC: #define __INT_MAX__ 2147483647
648655
// AARCH64-MSVC: #define __LDBL_DECIMAL_DIG__ 17
649656
// AARCH64-MSVC: #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
@@ -750,7 +757,8 @@
750757
// ARM64EC-MSVC: #define __AARCH64EL__ 1
751758
// ARM64EC-MSVC: #define __AARCH64_CMODEL_SMALL__ 1
752759
// ARM64EC-MSVC: #define __ARM_64BIT_STATE 1
753-
// ARM64EC-MSVC: #define __ARM_ACLE 200
760+
// ARM64EC-MSVC: #define __ARM_ACLE 202420
761+
// ARM64EC-MSVC: #define __ARM_ACLE_VERSION(year,quarter,patch) (100 * (year) + 10 * (quarter) + (patch))
754762
// ARM64EC-MSVC: #define __ARM_ALIGN_MAX_STACK_PWR 4
755763
// ARM64EC-MSVC: #define __ARM_ARCH 8
756764
// ARM64EC-MSVC: #define __ARM_ARCH_ISA_A64 1
@@ -850,6 +858,7 @@
850858
// ARM64EC-MSVC: #define __FPCLASS_SNAN 0x0001
851859
// ARM64EC-MSVC: #define __FP_FAST_FMA 1
852860
// ARM64EC-MSVC: #define __FP_FAST_FMAF 1
861+
// ARM64EC-MSVC: #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL 202420
853862
// ARM64EC-MSVC: #define __GCC_ASM_FLAG_OUTPUTS__ 1
854863
// ARM64EC-MSVC: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
855864
// ARM64EC-MSVC: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1

0 commit comments

Comments
 (0)