Skip to content

Commit 928cdaa

Browse files
MartinWehkingtomtor
authored andcommitted
Add Macro for CSSC Feature (llvm#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: ARM-software/acle#394
1 parent 155a737 commit 928cdaa

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
625625
if (HasCRC)
626626
Builder.defineMacro("__ARM_FEATURE_CRC32", "1");
627627

628+
if (HasCSSC)
629+
Builder.defineMacro("__ARM_FEATURE_CSSC", "1");
630+
628631
if (HasRCPC3)
629632
Builder.defineMacro("__ARM_FEATURE_RCPC", "3");
630633
else if (HasRCPC)
@@ -874,6 +877,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
874877
.Case("rdm", HasRDM)
875878
.Case("lse", HasLSE)
876879
.Case("crc", HasCRC)
880+
.Case("cssc", HasCSSC)
877881
.Case("sha2", HasSHA2)
878882
.Case("sha3", HasSHA3)
879883
.Cases("aes", "pmull", HasAES)
@@ -1249,6 +1253,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
12491253
HasPAuthLR = true;
12501254
HasPAuth = true;
12511255
}
1256+
if (Feature == "+cssc")
1257+
HasCSSC = true;
12521258
}
12531259

12541260
// Check features that are manually disabled by command line options.

clang/lib/Basic/Targets/AArch64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
6666

6767
unsigned FPU = FPUMode;
6868
bool HasCRC = false;
69+
bool HasCSSC = false;
6970
bool HasAES = false;
7071
bool HasSHA2 = false;
7172
bool HasSHA3 = false;

clang/test/Preprocessor/aarch64-target-features.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,10 @@
744744
// CHECK-SMEB16B16: __ARM_FEATURE_SME2 1
745745
// CHECK-SMEB16B16: __ARM_FEATURE_SME_B16B16 1
746746
// CHECK-SMEB16B16: __ARM_FEATURE_SVE_B16B16 1
747-
//
747+
748+
// RUN: %clang --target=aarch64 -march=armv9-a+cssc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CSSC %s
749+
// CHECK-CSSC: __ARM_FEATURE_CSSC 1
750+
748751
// RUN: %clang --target=aarch64 -march=armv9-a+fp8 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FP8 %s
749752
// CHECK-FP8: __ARM_FEATURE_FP8 1
750753

0 commit comments

Comments
 (0)