[gcc r17-3217] aarch64: Define __ARM_FEATURE_CSSC ACLE macro
Kyrylo Tkachov via Gcc-cvs <[email protected]>
| Newsgroups | gmane.comp.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://gcc.gnu.org/g:a7bdb519ace49050d2c59c78829edfb216afef64 commit r17-3217-ga7bdb519ace49050d2c59c78829edfb216afef64 Author: Kyrylo Tkachov <[email protected]> Date: Tue Aug 11 08:11:17 2026 -0700 aarch64: Define __ARM_FEATURE_CSSC ACLE macro ACLE 2025 Q3 specifies the feature test macro __ARM_FEATURE_CSSC, defined to 1 when the Common Short Sequence Compression instructions (FEAT_CSSC) are available. GCC has generated ABS, CNT, CTZ, SMAX, SMIN, UMAX and UMIN for +cssc since GCC 13 but never defined the macro, whereas Clang has defined it since LLVM 21. Define it as usual. There are no intrinsics associated with it. Bootstrapped and tested on aarch64-none-linux-gnu. gcc/ChangeLog: * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define __ARM_FEATURE_CSSC for TARGET_CSSC. gcc/testsuite/ChangeLog: * gcc.target/aarch64/pragma_cpp_predefs_4.c: Add __ARM_FEATURE_CSSC tests. Signed-off-by: Kyrylo Tkachov <[email protected]> Diff: --- gcc/config/aarch64/aarch64-c.cc | 1 + .../gcc.target/aarch64/pragma_cpp_predefs_4.c | 35 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index 454c318d0d82..482c796d6390 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -303,6 +303,7 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) "__ARM_FEATURE_LS64", pfile); aarch64_def_or_undef (TARGET_RCPC, "__ARM_FEATURE_RCPC", pfile); aarch64_def_or_undef (TARGET_D128, "__ARM_FEATURE_SYSREG128", pfile); + aarch64_def_or_undef (TARGET_CSSC, "__ARM_FEATURE_CSSC", pfile); aarch64_def_or_undef (TARGET_SME, "__ARM_FEATURE_SME", pfile); aarch64_def_or_undef (TARGET_SME_I16I64, "__ARM_FEATURE_SME_I16I64", pfile); diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c index fd85b40cc8d5..1d6acc93bd17 100644 --- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c +++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c @@ -388,3 +388,38 @@ #ifndef __ARM_FEATURE_SSVE_FEXPA #error Foo #endif + +#pragma GCC target "arch=armv8.8-a" +#ifdef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "arch=armv8.9-a" +#ifndef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "arch=armv9.3-a" +#ifdef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "arch=armv9.4-a" +#ifndef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "arch=armv8-a+cssc" +#ifndef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "+nothing+cssc" +#ifndef __ARM_FEATURE_CSSC +#error Foo +#endif + +#pragma GCC target "arch=armv8.9-a+nocssc" +#ifdef __ARM_FEATURE_CSSC +#error Foo +#endif