From: Kyrylo Tkachov <[email protected]>
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.
Pushing to trunk.
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]>
---
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 454c318d0d8..482c796d639 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 fd85b40cc8d..1d6acc93bd1 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
--
2.50.1 (Apple Git-155)