[clang] Add Macro for CSSC Feature (PR #143148)
Martin Wehking via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 6 07:21:26 PDT 2025
https://github.com/MartinWehking created https://github.com/llvm/llvm-project/pull/143148
Add a new __ARM_FEATURE_CSSC macro that can be utilized during the preprocessing stage.
__ARM_FEATURE_CSSC is defined to 1 if there is hardware support for CSSC.
Implements the ACLE change:
https://github.com/ARM-software/acle/pull/394
>From 72e36032cb8f1dc90e7224a27edbd9aa2bc7bc24 Mon Sep 17 00:00:00 2001
From: Martin Wehking <martin.wehking at arm.com>
Date: Wed, 21 May 2025 11:17:18 +0000
Subject: [PATCH] Add Macro for CSSC Feature
Add a new __ARM_FEATURE_CSSC macro that can be utilized during the preprocessing
stage.
__ARM_FEATURE_CSSC is defined to 1 if there is hardware support for
CSSC.
Implements the ACLE change:
https://github.com/ARM-software/acle/pull/394
---
clang/lib/Basic/Targets/AArch64.cpp | 6 ++++++
clang/lib/Basic/Targets/AArch64.h | 1 +
clang/test/Preprocessor/aarch64-target-features.c | 5 ++++-
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index e8abdf9aafd82..124b340b62d9f 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -625,6 +625,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
if (HasCRC)
Builder.defineMacro("__ARM_FEATURE_CRC32", "1");
+ if (HasCSSC)
+ Builder.defineMacro("__ARM_FEATURE_CSSC", "1");
+
if (HasRCPC3)
Builder.defineMacro("__ARM_FEATURE_RCPC", "3");
else if (HasRCPC)
@@ -874,6 +877,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
.Case("rdm", HasRDM)
.Case("lse", HasLSE)
.Case("crc", HasCRC)
+ .Case("cssc", HasCSSC)
.Case("sha2", HasSHA2)
.Case("sha3", HasSHA3)
.Cases("aes", "pmull", HasAES)
@@ -1249,6 +1253,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
HasPAuthLR = true;
HasPAuth = true;
}
+ if (Feature == "+cssc")
+ HasCSSC = true;
}
// Check features that are manually disabled by command line options.
diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h
index a4c65361105e4..1951e0679d2ec 100644
--- a/clang/lib/Basic/Targets/AArch64.h
+++ b/clang/lib/Basic/Targets/AArch64.h
@@ -66,6 +66,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
unsigned FPU = FPUMode;
bool HasCRC = false;
+ bool HasCSSC = false;
bool HasAES = false;
bool HasSHA2 = false;
bool HasSHA3 = false;
diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c
index 4cb9b6ce53b0d..fd83e4b689a2a 100644
--- a/clang/test/Preprocessor/aarch64-target-features.c
+++ b/clang/test/Preprocessor/aarch64-target-features.c
@@ -744,7 +744,10 @@
// CHECK-SMEB16B16: __ARM_FEATURE_SME2 1
// CHECK-SMEB16B16: __ARM_FEATURE_SME_B16B16 1
// CHECK-SMEB16B16: __ARM_FEATURE_SVE_B16B16 1
-//
+
+// RUN: %clang --target=aarch64 -march=armv9-a+cssc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CSSC %s
+// CHECK-CSSC: __ARM_FEATURE_CSSC 1
+
// RUN: %clang --target=aarch64 -march=armv9-a+fp8 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FP8 %s
// CHECK-FP8: __ARM_FEATURE_FP8 1
More information about the cfe-commits
mailing list