[clang] f1d7a55 - [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3
Lucas Prates via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 7 04:33:40 PDT 2023
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
More information about the cfe-commits
mailing list