[PATCH] D153130: [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGf1d7a55a4e06: [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3 (authored by pratlucas). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153130/new/ https://reviews.llvm.org/D153130 Files: clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/test/Preprocessor/aarch64-target-features.c Index: clang/test/Preprocessor/aarch64-target-features.c === --- clang/test/Preprocessor/aarch64-target-features.c +++ 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 Index: clang/lib/Basic/Targets/AArch64.h === --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -82,6 +82,7 @@ bool HasNoSVE = false; bool HasFMV = true; bool HasGCS = false; + bool HasRCPC3 = false; const llvm::AArch64::ArchInfo *ArchInfo = ::AArch64::ARMV8A; Index: clang/lib/Basic/Targets/AArch64.cpp === --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -415,7 +415,9 @@ 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 @@ .Case("bti", HasBTI) .Cases("ls64", "ls64_v", "ls64_accdata", HasLS64) .Case("wfxt", HasWFxT) + .Case("rcpc3", HasRCPC3) .Default(false); } @@ -928,6 +931,8 @@ HasD128 = true; if (Feature == "+gcs") HasGCS = true; +if (Feature == "+rcpc3") + HasRCPC3 = true; } // Check features that are manually disabled by command line options. Index: clang/test/Preprocessor/aarch64-target-features.c === --- clang/test/Preprocessor/aarch64-target-features.c +++ 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 Index: clang/lib/Basic/Targets/AArch64.h === --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -82,6 +82,7 @@ bool HasNoSVE = false; bool HasFMV = true; bool HasGCS = false; + bool HasRCPC3 = false; const llvm::AArch64::ArchInfo *ArchInfo = ::AArch64::ARMV8A; Index: clang/lib/Basic/Targets/AArch64.cpp === --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -415,7 +415,9 @@ 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 @@ .Case("bti", HasBTI) .Cases("ls64", "ls64_v", "ls64_accdata", HasLS64) .Case("wfxt", HasWFxT) + .Case("rcpc3", HasRCPC3) .Default(false); } @@ -928,6 +931,8 @@ HasD128 = true; if (Feature == "+gcs") HasGCS = true; +if (Feature == "+rcpc3") + HasRCPC3 = true; } // Check features that are manually disabled by command line options. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D153130: [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3
tmatheson accepted this revision. tmatheson added a comment. This revision is now accepted and ready to land. LGTM Comment at: clang/lib/Basic/Targets/AArch64.cpp:420 +Builder.defineMacro("__ARM_FEATURE_RCPC", "3"); + else if (HasRCPC) Builder.defineMacro("__ARM_FEATURE_RCPC", "1"); I didn't realise we hadn't implemented RPCP2 here. If we aren't aware of anyone Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153130/new/ https://reviews.llvm.org/D153130 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D153130: [Clang][AArch64] Implement ACLE feature macro for FEAT_LRCPC3
pratlucas created this revision. pratlucas added reviewers: tmatheson, vhscampos. Herald added a subscriber: kristof.beyls. Herald added a project: All. pratlucas requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. 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 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D153130 Files: clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/test/Preprocessor/aarch64-target-features.c Index: clang/test/Preprocessor/aarch64-target-features.c === --- clang/test/Preprocessor/aarch64-target-features.c +++ 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 Index: clang/lib/Basic/Targets/AArch64.h === --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -82,6 +82,7 @@ bool HasNoSVE = false; bool HasFMV = true; bool HasGCS = false; + bool HasRCPC3 = false; const llvm::AArch64::ArchInfo *ArchInfo = ::AArch64::ARMV8A; Index: clang/lib/Basic/Targets/AArch64.cpp === --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -415,7 +415,9 @@ 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 @@ .Case("bti", HasBTI) .Cases("ls64", "ls64_v", "ls64_accdata", HasLS64) .Case("wfxt", HasWFxT) + .Case("rcpc3", HasRCPC3) .Default(false); } @@ -928,6 +931,8 @@ HasD128 = true; if (Feature == "+gcs") HasGCS = true; +if (Feature == "+rcpc3") + HasRCPC3 = true; } // Check features that are manually disabled by command line options. Index: clang/test/Preprocessor/aarch64-target-features.c === --- clang/test/Preprocessor/aarch64-target-features.c +++ 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 Index: clang/lib/Basic/Targets/AArch64.h === --- clang/lib/Basic/Targets/AArch64.h +++ clang/lib/Basic/Targets/AArch64.h @@ -82,6 +82,7 @@ bool HasNoSVE = false; bool HasFMV = true; bool HasGCS = false; + bool HasRCPC3 = false; const llvm::AArch64::ArchInfo *ArchInfo = ::AArch64::ARMV8A; Index: clang/lib/Basic/Targets/AArch64.cpp === --- clang/lib/Basic/Targets/AArch64.cpp +++ clang/lib/Basic/Targets/AArch64.cpp @@ -415,7 +415,9 @@ 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 @@ .Case("bti", HasBTI) .Cases("ls64", "ls64_v", "ls64_accdata", HasLS64) .Case("wfxt", HasWFxT) + .Case("rcpc3", HasRCPC3) .Default(false); } @@ -928,6 +931,8 @@ HasD128 = true; if (Feature == "+gcs") HasGCS = true; +if (Feature == "+rcpc3") + HasRCPC3 = true; } // Check features that are manually disabled by command line options. ___ cfe-commits mailing list