Author: Lucas Prates Date: 2023-07-07T12:33:34+01:00 New Revision: f1d7a55a4e0627302881957d225342d5b1531675
URL: https://github.com/llvm/llvm-project/commit/f1d7a55a4e0627302881957d225342d5b1531675 DIFF: https://github.com/llvm/llvm-project/commit/f1d7a55a4e0627302881957d225342d5b1531675.diff LOG: [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3 This implements the new value for the `__ARM_FEATURE_RCPC` feature macro, which was introduced to the ACLE to indicate the availability of FEAT_LRCPC3. More details can be found on: https://github.com/ARM-software/acle/blob/main/main/acle.md#rcpc Reviewed By: tmatheson Differential Revision: https://reviews.llvm.org/D153130 Added: Modified: clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/test/Preprocessor/aarch64-target-features.c Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp index 6de1728b1e50cc..ed0246d6faee16 100644 --- a/clang/lib/Basic/Targets/AArch64.cpp +++ b/clang/lib/Basic/Targets/AArch64.cpp @@ -415,7 +415,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts, if (HasCRC) Builder.defineMacro("__ARM_FEATURE_CRC32", "1"); - if (HasRCPC) + if (HasRCPC3) + Builder.defineMacro("__ARM_FEATURE_RCPC", "3"); + else if (HasRCPC) Builder.defineMacro("__ARM_FEATURE_RCPC", "1"); if (HasFMV) @@ -671,6 +673,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const { .Case("bti", HasBTI) .Cases("ls64", "ls64_v", "ls64_accdata", HasLS64) .Case("wfxt", HasWFxT) + .Case("rcpc3", HasRCPC3) .Default(false); } @@ -928,6 +931,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features, HasD128 = true; if (Feature == "+gcs") HasGCS = true; + if (Feature == "+rcpc3") + HasRCPC3 = 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 cce80e10f2bb1e..4304693e473dee 100644 --- a/clang/lib/Basic/Targets/AArch64.h +++ b/clang/lib/Basic/Targets/AArch64.h @@ -82,6 +82,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo { bool HasNoSVE = false; bool HasFMV = true; bool HasGCS = false; + bool HasRCPC3 = false; const llvm::AArch64::ArchInfo *ArchInfo = &llvm::AArch64::ARMV8A; diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c index baf3fda73d591e..7f2b353ab18c0d 100644 --- a/clang/test/Preprocessor/aarch64-target-features.c +++ b/clang/test/Preprocessor/aarch64-target-features.c @@ -27,6 +27,7 @@ // CHECK: __ARM_FEATURE_LDREX 0xF // CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1 // CHECK-NOT: __ARM_FEATURE_RCPC 1 +// CHECK-NOT: __ARM_FEATURE_RCPC 3 // CHECK-NOT: __ARM_FEATURE_SHA2 1 // CHECK-NOT: __ARM_FEATURE_SHA3 1 // CHECK-NOT: __ARM_FEATURE_SHA512 1 @@ -612,3 +613,6 @@ // RUN: %clang --target=aarch64 -march=armv8.2-a+rcpc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-RCPC %s // CHECK-RCPC: __ARM_FEATURE_RCPC 1 + +// RUN: %clang --target=aarch64 -march=armv8.2-a+rcpc3 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-RCPC3 %s +// CHECK-RCPC3: __ARM_FEATURE_RCPC 3 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits