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.wehk...@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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits