[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.