llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-aarch64 Author: Martin Wehking (MartinWehking) <details> <summary>Changes</summary> 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 --- Full diff: https://github.com/llvm/llvm-project/pull/143148.diff 3 Files Affected: - (modified) clang/lib/Basic/Targets/AArch64.cpp (+6) - (modified) clang/lib/Basic/Targets/AArch64.h (+1) - (modified) clang/test/Preprocessor/aarch64-target-features.c (+4-1) ``````````diff 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 `````````` </details> https://github.com/llvm/llvm-project/pull/143148 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits