mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-19 01:46:49 +00:00
[AArch64] Make +pauth enabled in Armv8.3-a by default (#78027)
Add AEK_PAUTH to ARMV8_3A in TargetParser and let it propagate to ARMV8R, as it aligns with GCC defaults. After adding AEK_PAUTH, several tests from TargetParserTest.cpp crashed when trying to format an error message, thus update a format string in AssertSameExtensionFlags to account for bitmask being pre-formatted as std::string. The CHECK-PAUTH* lines in aarch64-target-features.c are updated to account for the fact that FEAT_PAUTH support and pac-ret can be enabled independently and all four combinations are possible. (cherry picked from commit a52eea66795018550e95c4b060165a7250899298)
This commit is contained in:
parent
a7a74ece1d
commit
b4b76bdbf1
@ -258,7 +258,6 @@ void AArch64TargetInfo::getTargetDefinesARMV83A(const LangOptions &Opts,
|
||||
MacroBuilder &Builder) const {
|
||||
Builder.defineMacro("__ARM_FEATURE_COMPLEX", "1");
|
||||
Builder.defineMacro("__ARM_FEATURE_JCVT", "1");
|
||||
Builder.defineMacro("__ARM_FEATURE_PAUTH", "1");
|
||||
// Also include the Armv8.2 defines
|
||||
getTargetDefinesARMV82A(Opts, Builder);
|
||||
}
|
||||
|
@ -97,19 +97,19 @@ void minusarch() {}
|
||||
// CHECK: attributes #0 = { {{.*}} "target-features"="+crc,+fp-armv8,+lse,+neon,+ras,+rdm,+v8.1a,+v8.2a,+v8a" }
|
||||
// CHECK: attributes #1 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+v8.1a,+v8.2a,+v8a" }
|
||||
// CHECK: attributes #2 = { {{.*}} "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8a" }
|
||||
// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
|
||||
// CHECK: attributes #3 = { {{.*}} "target-features"="+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }
|
||||
// CHECK: attributes #4 = { {{.*}} "target-cpu"="cortex-a710" "target-features"="+bf16,+complxnum,+crc,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+ras,+rcpc,+rdm,+sb,+sve,+sve2,+sve2-bitperm" }
|
||||
// CHECK: attributes #5 = { {{.*}} "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #6 = { {{.*}} "target-cpu"="generic" }
|
||||
// CHECK: attributes #7 = { {{.*}} "tune-cpu"="generic" }
|
||||
// CHECK: attributes #8 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #9 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
|
||||
// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
|
||||
// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" }
|
||||
// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,-sve" }
|
||||
// CHECK: attributes #12 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve" }
|
||||
// CHECK: attributes #13 = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+sve,-sve2" }
|
||||
// CHECK: attributes #14 = { {{.*}} "target-features"="+fullfp16" }
|
||||
// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #15 = { {{.*}} "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #16 = { {{.*}} "branch-target-enforcement"="true" "guarded-control-stack"="true" {{.*}} "target-features"="+aes,+bf16,+complxnum,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }
|
||||
// CHECK: attributes #17 = { {{.*}} "target-features"="-neon" }
|
||||
// CHECK: attributes #18 = { {{.*}} "target-features"="-v9.3a" }
|
||||
|
@ -318,15 +318,15 @@
|
||||
// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8a" "-target-feature" "+aes"{{.*}} "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}"{{.*}}"-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "apple-a13" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
|
||||
// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs"
|
||||
// CHECK-MCPU-M3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
@ -335,10 +335,10 @@
|
||||
// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
|
||||
// RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64 %s
|
||||
// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
|
||||
// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+fp16fml" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon"
|
||||
|
||||
// RUN: %clang -target x86_64-apple-macosx -arch arm64_32 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64_32 %s
|
||||
// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+complxnum" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+pauth" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon"
|
||||
|
||||
// RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
|
||||
// RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
|
||||
@ -501,9 +501,10 @@
|
||||
// CHECK-MEMTAG: __ARM_FEATURE_MEMORY_TAGGING 1
|
||||
|
||||
// ================== Check Pointer Authentication Extension (PAuth).
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-OFF %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8.5-a -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-OFF %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+pauth -mbranch-protection=none -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-ON %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -x c -E -dM %s -o - | FileCheck -check-prefixes=CHECK-PAUTH-OFF,CHECK-CPU-NOPAUTH %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8.5-a+nopauth -x c -E -dM %s -o - | FileCheck -check-prefixes=CHECK-PAUTH-OFF,CHECK-CPU-NOPAUTH %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8.5-a -x c -E -dM %s -o - | FileCheck -check-prefixes=CHECK-PAUTH-OFF,CHECK-CPU-PAUTH %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+pauth -mbranch-protection=none -x c -E -dM %s -o - | FileCheck -check-prefixes=CHECK-PAUTH-OFF,CHECK-CPU-PAUTH %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=none -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-OFF %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=bti -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-OFF %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=standard -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH %s
|
||||
@ -511,12 +512,18 @@
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=pac-ret+b-key -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-BKEY %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=pac-ret+leaf -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-ALL %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -mbranch-protection=pac-ret+leaf+b-key -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-PAUTH-BKEY-ALL %s
|
||||
// CHECK-PAUTH-OFF-NOT: __ARM_FEATURE_PAC_DEFAULT
|
||||
// CHECK-PAUTH: #define __ARM_FEATURE_PAC_DEFAULT 1
|
||||
// CHECK-PAUTH-BKEY: #define __ARM_FEATURE_PAC_DEFAULT 2
|
||||
// CHECK-PAUTH-ALL: #define __ARM_FEATURE_PAC_DEFAULT 5
|
||||
// CHECK-PAUTH-BKEY-ALL: #define __ARM_FEATURE_PAC_DEFAULT 6
|
||||
// CHECK-PAUTH-ON: #define __ARM_FEATURE_PAUTH 1
|
||||
//
|
||||
// Note: PAUTH-OFF - pac-ret is disabled
|
||||
// CPU-NOPAUTH - FEAT_PAUTH support is disabled (but pac-ret can still use HINT-encoded instructions)
|
||||
//
|
||||
// CHECK-CPU-NOPAUTH-NOT: __ARM_FEATURE_PAUTH
|
||||
// CHECK-PAUTH-OFF-NOT: __ARM_FEATURE_PAC_DEFAULT
|
||||
// CHECK-PAUTH: #define __ARM_FEATURE_PAC_DEFAULT 1
|
||||
// CHECK-PAUTH-BKEY: #define __ARM_FEATURE_PAC_DEFAULT 2
|
||||
// CHECK-PAUTH-ALL: #define __ARM_FEATURE_PAC_DEFAULT 5
|
||||
// CHECK-PAUTH-BKEY-ALL: #define __ARM_FEATURE_PAC_DEFAULT 6
|
||||
// CHECK-CPU-PAUTH: #define __ARM_FEATURE_PAUTH 1
|
||||
// CHECK-CPU-NOPAUTH-NOT: __ARM_FEATURE_PAUTH
|
||||
|
||||
// ================== Check Branch Target Identification (BTI).
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a -x c -E -dM %s -o - | FileCheck -check-prefix=CHECK-BTI-OFF %s
|
||||
|
@ -478,7 +478,7 @@ inline constexpr ArchInfo ARMV8_1A = { VersionTuple{8, 1}, AProfile, "armv8.1-a
|
||||
inline constexpr ArchInfo ARMV8_2A = { VersionTuple{8, 2}, AProfile, "armv8.2-a", "+v8.2a", (ARMV8_1A.DefaultExts |
|
||||
AArch64::ExtensionBitset({AArch64::AEK_RAS}))};
|
||||
inline constexpr ArchInfo ARMV8_3A = { VersionTuple{8, 3}, AProfile, "armv8.3-a", "+v8.3a", (ARMV8_2A.DefaultExts |
|
||||
AArch64::ExtensionBitset({AArch64::AEK_RCPC, AArch64::AEK_JSCVT, AArch64::AEK_FCMA}))};
|
||||
AArch64::ExtensionBitset({AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC}))};
|
||||
inline constexpr ArchInfo ARMV8_4A = { VersionTuple{8, 4}, AProfile, "armv8.4-a", "+v8.4a", (ARMV8_3A.DefaultExts |
|
||||
AArch64::ExtensionBitset({AArch64::AEK_DOTPROD}))};
|
||||
inline constexpr ArchInfo ARMV8_5A = { VersionTuple{8, 5}, AProfile, "armv8.5-a", "+v8.5a", (ARMV8_4A.DefaultExts)};
|
||||
|
@ -133,8 +133,8 @@ template <ARM::ISAKind ISAKind> struct AssertSameExtensionFlags {
|
||||
|
||||
return testing::AssertionFailure() << llvm::formatv(
|
||||
"CPU: {4}\n"
|
||||
"Expected extension flags: {0} ({1:x})\n"
|
||||
" Got extension flags: {2} ({3:x})\n",
|
||||
"Expected extension flags: {0} ({1})\n"
|
||||
" Got extension flags: {2} ({3})\n",
|
||||
FormatExtensionFlags(ExpectedFlags),
|
||||
SerializeExtensionFlags(ExpectedFlags),
|
||||
FormatExtensionFlags(GotFlags),
|
||||
@ -1260,7 +1260,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
|
||||
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
|
||||
AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.4-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"neoverse-v2", "armv9-a", "neon-fp-armv8",
|
||||
@ -1275,7 +1276,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_SVE2, AArch64::AEK_PROFILE,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_I8MM,
|
||||
AArch64::AEK_SVE2BITPERM, AArch64::AEK_RAND,
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"9-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"cortex-r82", "armv8-r", "crypto-neon-fp-armv8",
|
||||
@ -1284,7 +1286,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_DOTPROD, AArch64::AEK_FP, AArch64::AEK_SIMD,
|
||||
AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_RAS,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_LSE, AArch64::AEK_SB,
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8-R"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8",
|
||||
@ -1389,7 +1391,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
|
||||
AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
|
||||
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.3-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-a13", "armv8.4-a", "crypto-neon-fp-armv8",
|
||||
@ -1399,7 +1402,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
|
||||
AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.4-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-a14", "armv8.5-a", "crypto-neon-fp-armv8",
|
||||
@ -1409,7 +1412,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
|
||||
AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.5-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-a15", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1419,7 +1422,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-a16", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1429,7 +1433,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-a17", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1439,7 +1444,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-m1", "armv8.5-a", "crypto-neon-fp-armv8",
|
||||
@ -1449,7 +1455,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_JSCVT,
|
||||
AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.5-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-m2", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1459,7 +1465,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-m3", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1469,7 +1476,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_LSE, AArch64::AEK_RAS, AArch64::AEK_RDM,
|
||||
AArch64::AEK_RCPC, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
|
||||
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-s4", "armv8.3-a", "crypto-neon-fp-armv8",
|
||||
@ -1477,7 +1485,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
|
||||
AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
|
||||
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.3-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"apple-s5", "armv8.3-a", "crypto-neon-fp-armv8",
|
||||
@ -1485,7 +1494,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
|
||||
AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_LSE,
|
||||
AArch64::AEK_RAS, AArch64::AEK_RDM, AArch64::AEK_RCPC,
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FP16, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.3-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"exynos-m3", "armv8-a", "crypto-neon-fp-armv8",
|
||||
@ -1550,7 +1560,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_SB, AArch64::AEK_SVE2,
|
||||
AArch64::AEK_SVE2BITPERM, AArch64::AEK_BF16,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT,
|
||||
AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.5-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1561,7 +1571,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_SHA3, AArch64::AEK_BF16, AArch64::AEK_SHA2,
|
||||
AArch64::AEK_AES, AArch64::AEK_I8MM, AArch64::AEK_SSBS,
|
||||
AArch64::AEK_SB, AArch64::AEK_RAND, AArch64::AEK_JSCVT,
|
||||
AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"ampere1a", "armv8.6-a", "crypto-neon-fp-armv8",
|
||||
@ -1572,7 +1582,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_SM4, AArch64::AEK_SHA3, AArch64::AEK_BF16,
|
||||
AArch64::AEK_SHA2, AArch64::AEK_AES, AArch64::AEK_I8MM,
|
||||
AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_RAND,
|
||||
AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_MTE, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.6-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8",
|
||||
@ -1584,7 +1595,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
|
||||
AArch64::AEK_SM4, AArch64::AEK_FP16, AArch64::AEK_BF16,
|
||||
AArch64::AEK_PROFILE, AArch64::AEK_RAND, AArch64::AEK_FP16FML,
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
|
||||
AArch64::AEK_PAUTH})),
|
||||
"8.4-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"thunderx2t99", "armv8.1-a", "crypto-neon-fp-armv8",
|
||||
@ -1599,7 +1611,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
{AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
|
||||
AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_FP,
|
||||
AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_RCPC,
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA})),
|
||||
AArch64::AEK_JSCVT, AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
|
||||
"8.3-A"),
|
||||
ARMCPUTestParams<AArch64::ExtensionBitset>(
|
||||
"thunderx", "armv8-a", "crypto-neon-fp-armv8",
|
||||
|
Loading…
x
Reference in New Issue
Block a user