Index: clang/lib/Driver/ToolChains/Arch/AArch64.cpp =================================================================== --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -407,6 +407,7 @@ } else if (*I == "-crypto") { HasCrypto = false; HasNoCrypto = true; + HasSM4 = HasSHA2 = HasSHA3 = HasAES = false; } // Register the iterator position if this is an architecture feature if (ArchFeatPos == -1 && (V8Version != -1 || V9Version != -1)) Index: clang/test/CodeGen/aarch64-targetattr-crypto.c =================================================================== --- clang/test/CodeGen/aarch64-targetattr-crypto.c +++ clang/test/CodeGen/aarch64-targetattr-crypto.c @@ -24,8 +24,7 @@ vsha1su1q_u32(data, key); } -// FIXME: This shouldn't need +crypto to be consistent with -mcpu options. -__attribute__((target("cpu=cortex-a55+crypto"))) +__attribute__((target("cpu=cortex-a55"))) void test_a55crypto(uint8x16_t data, uint8x16_t key) { vaeseq_u8(data, key); Index: clang/test/CodeGen/aarch64-targetattr.c =================================================================== --- clang/test/CodeGen/aarch64-targetattr.c +++ clang/test/CodeGen/aarch64-targetattr.c @@ -97,13 +97,13 @@ // 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"="+crc,+crypto,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+spe,+ssbs" "tune-cpu"="cortex-a710" } +// 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"="+bf16,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+lse,+neon,+rand,+ras,+rcpc,+rdm,+spe,+ssbs,+sve,+sve2" } -// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+bf16,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+lse,+neon,+rand,+ras,+rcpc,+rdm,+spe,+ssbs,-sve" } +// CHECK: attributes #10 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+lse,+neon,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2" } +// CHECK: attributes #11 = { {{.*}} "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+crc,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+lse,+neon,+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"="+bf16,+crc,+crypto,+dotprod,+fp-armv8,+fullfp16,+i8mm,+lse,+neon,+ras,+rcpc,+rdm,+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" {{.*}} "target-features"="+bf16,+crc,+crypto,+dotprod,+fp-armv8,+fullfp16,+i8mm,+lse,+neon,+ras,+rcpc,+rdm,+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,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+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" {{.*}} "target-features"="+aes,+bf16,+crc,+dotprod,+fp-armv8,+fullfp16,+i8mm,+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 #17 = { {{.*}} "target-features"="-neon" } Index: clang/test/Preprocessor/aarch64-target-features.c =================================================================== --- clang/test/Preprocessor/aarch64-target-features.c +++ clang/test/Preprocessor/aarch64-target-features.c @@ -307,30 +307,30 @@ // RUN: %clang -target aarch64 -mcpu=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-THUNDERX2T99 %s // RUN: %clang -target aarch64 -mcpu=a64fx -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A64FX %s // RUN: %clang -target aarch64 -mcpu=carmel -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-CARMEL %s -// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.4a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" +// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" +// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" +// CHECK-MCPU-APPLE-A11: "-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" "-target-feature" "+zcm" "-target-feature" +// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" +// 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-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon" "-target-feature" "+sm4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" +// 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" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs" "-target-feature" "+fullfp16" -// CHECK-MCPU-M3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" -// CHECK-MCPU-THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.1a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-A64FX: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sve" "-target-feature" "+sha2" "-target-feature" "+aes" -// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes" +// 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" +// CHECK-MCPU-THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.1a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon" +// CHECK-MCPU-A64FX: "-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" "-target-feature" "+sve" +// 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" "+v8.5a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes" +// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+v8.5a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" "+neon" "-target-feature" "+sm4" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" // 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" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes" +// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sha2" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" // 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 @@ -441,7 +441,7 @@ // RUN: %clang -target aarch64 -march=armv8.4a+crypto+sm4+nosm4+sha3+nosha3 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CRYPTO84-NOSMSHA %s // CHECK-CRYPTO84-NOSMSHA: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.4a" "-target-feature" "+crypto" "-target-feature" "-sm4" "-target-feature" "-sha3" "-target-feature" "+sha2" "-target-feature" "+aes" // -// + // RUN: %clang -target aarch64 -mcpu=cyclone+nocrypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-1 %s // RUN: %clang -target aarch64 -mcpu=cyclone+crypto+nocrypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-1 %s // RUN: %clang -target aarch64 -mcpu=generic+crc -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-2 %s @@ -453,9 +453,9 @@ // RUN: %clang -target aarch64 -mcpu=generic+Crc -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-2 %s // RUN: %clang -target aarch64 -mcpu=GENERIC+nocrc+CRC -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-2 %s // RUN: %clang -target aarch64 -mcpu=cortex-a53+noSIMD -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-3 %s -// CHECK-MCPU-1: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "-crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" +// CHECK-MCPU-1: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "-crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "-sha2" "-target-feature" "-aes" // CHECK-MCPU-2: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" -// CHECK-MCPU-3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "-neon" +// CHECK-MCPU-3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "-neon" // RUN: %clang -target aarch64 -mcpu=cyclone+nocrc+nocrypto -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MARCH %s // RUN: %clang -target aarch64 -march=armv8-a -mcpu=cyclone+nocrc+nocrypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MARCH %s @@ -466,7 +466,7 @@ // ================== Check whether -mtune accepts mixed-case features. // RUN: %clang -target aarch64 -mcpu=cortex-a53 -mtune=CYCLONE -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s // RUN: %clang -target aarch64 -mtune=CyclonE -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s -// CHECK-MCPU-MTUNE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" +// CHECK-MCPU-MTUNE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" "+sha2" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" // RUN: %clang -target aarch64 -mcpu=generic+neon -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-ERROR-NEON %s // RUN: %clang -target aarch64 -mcpu=generic+noneon -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-ERROR-NEON %s Index: llvm/include/llvm/TargetParser/AArch64TargetParser.h =================================================================== --- llvm/include/llvm/TargetParser/AArch64TargetParser.h +++ llvm/include/llvm/TargetParser/AArch64TargetParser.h @@ -338,45 +338,53 @@ }; inline constexpr CpuInfo CpuInfos[] = { - {"cortex-a34", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"cortex-a35", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"cortex-a53", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, + {"cortex-a34", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"cortex-a35", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"cortex-a53", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, {"cortex-a55", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC)}, {"cortex-a510", ARMV9A, (AArch64::AEK_BF16 | AArch64::AEK_I8MM | AArch64::AEK_SB | AArch64::AEK_PAUTH | AArch64::AEK_MTE | AArch64::AEK_SSBS | AArch64::AEK_SVE | AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM | AArch64::AEK_FP16FML)}, - {"cortex-a57", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, + {"cortex-a57", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, {"cortex-a65", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, {"cortex-a65ae", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, - {"cortex-a72", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"cortex-a73", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + {"cortex-a72", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"cortex-a73", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, {"cortex-a75", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC)}, {"cortex-a76", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, {"cortex-a76ae", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, {"cortex-a77", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_RCPC | - AArch64::AEK_DOTPROD | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | AArch64::AEK_SSBS)}, {"cortex-a78", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS | AArch64::AEK_PROFILE)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS | + AArch64::AEK_PROFILE)}, {"cortex-a78c", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS | AArch64::AEK_PROFILE | - AArch64::AEK_FLAGM | AArch64::AEK_PAUTH | AArch64::AEK_FP16FML)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS | + AArch64::AEK_PROFILE | AArch64::AEK_FLAGM | AArch64::AEK_PAUTH | + AArch64::AEK_FP16FML)}, {"cortex-a710", ARMV9A, (AArch64::AEK_MTE | AArch64::AEK_PAUTH | AArch64::AEK_FLAGM | AArch64::AEK_SB | AArch64::AEK_I8MM | AArch64::AEK_FP16FML | @@ -390,12 +398,13 @@ AArch64::AEK_BF16 | AArch64::AEK_FLAGM)}, {"cortex-r82", ARMV8R, (AArch64::AEK_LSE)}, {"cortex-x1", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS | AArch64::AEK_PROFILE)}, - {"cortex-x1c", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | - AArch64::AEK_RCPC | AArch64::AEK_SSBS | AArch64::AEK_PAUTH | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS | AArch64::AEK_PROFILE)}, + {"cortex-x1c", ARMV8_2A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS | + AArch64::AEK_PAUTH | AArch64::AEK_PROFILE)}, {"cortex-x2", ARMV9A, (AArch64::AEK_MTE | AArch64::AEK_BF16 | AArch64::AEK_I8MM | AArch64::AEK_PAUTH | AArch64::AEK_SSBS | AArch64::AEK_SB | @@ -408,23 +417,27 @@ AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_PREDRES | AArch64::AEK_FLAGM | AArch64::AEK_SSBS)}, {"neoverse-e1", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, {"neoverse-n1", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_PROFILE | AArch64::AEK_RCPC | AArch64::AEK_SSBS)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_PROFILE | AArch64::AEK_RCPC | + AArch64::AEK_SSBS)}, {"neoverse-n2", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_BF16 | AArch64::AEK_DOTPROD | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_BF16 | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_I8MM | AArch64::AEK_MTE | AArch64::AEK_SB | AArch64::AEK_SSBS | AArch64::AEK_SVE | AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM)}, {"neoverse-512tvb", ARMV8_4A, - (AArch64::AEK_CRYPTO | AArch64::AEK_SVE | AArch64::AEK_SSBS | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_SVE | AArch64::AEK_SSBS | AArch64::AEK_FP16 | AArch64::AEK_BF16 | AArch64::AEK_DOTPROD | AArch64::AEK_PROFILE | AArch64::AEK_RAND | AArch64::AEK_FP16FML | AArch64::AEK_I8MM)}, {"neoverse-v1", ARMV8_4A, - (AArch64::AEK_CRYPTO | AArch64::AEK_SVE | AArch64::AEK_SSBS | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_SVE | AArch64::AEK_SSBS | AArch64::AEK_FP16 | AArch64::AEK_BF16 | AArch64::AEK_DOTPROD | AArch64::AEK_PROFILE | AArch64::AEK_RAND | AArch64::AEK_FP16FML | AArch64::AEK_I8MM)}, @@ -433,55 +446,81 @@ AArch64::AEK_FP16 | AArch64::AEK_BF16 | AArch64::AEK_RAND | AArch64::AEK_DOTPROD | AArch64::AEK_PROFILE | AArch64::AEK_SVE2BITPERM | AArch64::AEK_FP16FML | AArch64::AEK_I8MM | AArch64::AEK_MTE)}, - {"cyclone", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_NONE)}, - {"apple-a7", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_NONE)}, - {"apple-a8", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_NONE)}, - {"apple-a9", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_NONE)}, + {"cyclone", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_NONE)}, + {"apple-a7", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_NONE)}, + {"apple-a8", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_NONE)}, + {"apple-a9", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_NONE)}, {"apple-a10", ARMV8A, - (AArch64::AEK_CRYPTO | AArch64::AEK_CRC | AArch64::AEK_RDM)}, - {"apple-a11", ARMV8_2A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, - {"apple-a12", ARMV8_3A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC | + AArch64::AEK_RDM)}, + {"apple-a11", ARMV8_2A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16)}, + {"apple-a12", ARMV8_3A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16)}, {"apple-a13", ARMV8_4A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-a14", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-a15", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, {"apple-a16", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, {"apple-m1", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-m2", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, - {"apple-s4", ARMV8_3A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, - {"apple-s5", ARMV8_3A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, - {"exynos-m3", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, + {"apple-s4", ARMV8_3A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16)}, + {"apple-s5", ARMV8_3A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16)}, + {"exynos-m3", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, {"exynos-m4", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16)}, {"exynos-m5", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16)}, {"falkor", ARMV8A, - (AArch64::AEK_CRYPTO | AArch64::AEK_CRC | AArch64::AEK_RDM)}, - {"saphira", ARMV8_3A, (AArch64::AEK_CRYPTO | AArch64::AEK_PROFILE)}, - {"kryo", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"thunderx2t99", ARMV8_1A, (AArch64::AEK_CRYPTO)}, - {"thunderx3t110", ARMV8_3A, (AArch64::AEK_CRYPTO)}, - {"thunderx", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"thunderxt88", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"thunderxt81", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, - {"thunderxt83", ARMV8A, (AArch64::AEK_CRYPTO | AArch64::AEK_CRC)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC | + AArch64::AEK_RDM)}, + {"saphira", ARMV8_3A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_PROFILE)}, + {"kryo", ARMV8A, (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"thunderx2t99", ARMV8_1A, (AArch64::AEK_AES | AArch64::AEK_SHA2)}, + {"thunderx3t110", ARMV8_3A, (AArch64::AEK_AES | AArch64::AEK_SHA2)}, + {"thunderx", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"thunderxt88", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"thunderxt81", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, + {"thunderxt83", ARMV8A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_CRC)}, {"tsv110", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML | AArch64::AEK_PROFILE)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_PROFILE)}, {"a64fx", ARMV8_2A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_SVE)}, - {"carmel", ARMV8_2A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16 | + AArch64::AEK_SVE)}, + {"carmel", ARMV8_2A, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_FP16)}, {"ampere1", ARMV8_6A, (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP16 | AArch64::AEK_SB | AArch64::AEK_SSBS)}, Index: llvm/unittests/TargetParser/TargetParserTest.cpp =================================================================== --- llvm/unittests/TargetParser/TargetParserTest.cpp +++ llvm/unittests/TargetParser/TargetParserTest.cpp @@ -979,113 +979,119 @@ ARMCPUTestParams("generic", "invalid", "none", AArch64::AEK_NONE, ""), ARMCPUTestParams("cortex-a34", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a35", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a53", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a55", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_RAS | AArch64::AEK_LSE | - AArch64::AEK_RDM | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC, - "8.2-A"), - ARMCPUTestParams("cortex-a510", "armv9-a", "neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_FP | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_RDM | - AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_BF16 | AArch64::AEK_I8MM | - AArch64::AEK_SVE | AArch64::AEK_SVE2 | - AArch64::AEK_SVE2BITPERM | AArch64::AEK_PAUTH | - AArch64::AEK_MTE | AArch64::AEK_SSBS | - AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_SB, - "9-A"), + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC, + "8.2-A"), + ARMCPUTestParams( + "cortex-a510", "armv9-a", "neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | AArch64::AEK_BF16 | + AArch64::AEK_I8MM | AArch64::AEK_SVE | AArch64::AEK_SVE2 | + AArch64::AEK_SVE2BITPERM | AArch64::AEK_PAUTH | + AArch64::AEK_MTE | AArch64::AEK_SSBS | AArch64::AEK_FP16 | + AArch64::AEK_FP16FML | AArch64::AEK_SB, + "9-A"), ARMCPUTestParams("cortex-a57", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a65", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | - AArch64::AEK_RAS | AArch64::AEK_RCPC | - AArch64::AEK_RDM | AArch64::AEK_SIMD | - AArch64::AEK_SSBS, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RCPC | AArch64::AEK_RDM | + AArch64::AEK_SIMD | AArch64::AEK_SSBS, "8.2-A"), ARMCPUTestParams("cortex-a65ae", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | - AArch64::AEK_RAS | AArch64::AEK_RCPC | - AArch64::AEK_RDM | AArch64::AEK_SIMD | - AArch64::AEK_SSBS, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RCPC | AArch64::AEK_RDM | + AArch64::AEK_SIMD | AArch64::AEK_SSBS, "8.2-A"), ARMCPUTestParams("cortex-a72", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a73", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("cortex-a75", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_RAS | AArch64::AEK_LSE | - AArch64::AEK_RDM | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_RAS | + AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC, "8.2-A"), ARMCPUTestParams("cortex-a76", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_SSBS, "8.2-A"), ARMCPUTestParams("cortex-a76ae", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_SSBS, "8.2-A"), ARMCPUTestParams("cortex-a77", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_SSBS, "8.2-A"), ARMCPUTestParams("cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS | AArch64::AEK_PROFILE, - "8.2-A"), - ARMCPUTestParams("cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_RAS | AArch64::AEK_CRC | - AArch64::AEK_CRYPTO | AArch64::AEK_FP | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS | - AArch64::AEK_PROFILE | AArch64::AEK_FLAGM | - AArch64::AEK_PAUTH | AArch64::AEK_FP16FML, + AArch64::AEK_PROFILE, "8.2-A"), + ARMCPUTestParams( + "cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8", + AArch64::AEK_RAS | AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | + AArch64::AEK_SSBS | AArch64::AEK_PROFILE | AArch64::AEK_FLAGM | + AArch64::AEK_PAUTH | AArch64::AEK_FP16FML, + "8.2-A"), ARMCPUTestParams( "cortex-a710", "armv9-a", "neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_SIMD | @@ -1096,40 +1102,41 @@ AArch64::AEK_PAUTH | AArch64::AEK_FLAGM | AArch64::AEK_SB | AArch64::AEK_I8MM | AArch64::AEK_BF16, "9-A"), - ARMCPUTestParams("cortex-a715", "armv9-a", "neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_BF16 | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_RDM | - AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_MTE | AArch64::AEK_PAUTH | - AArch64::AEK_SVE | AArch64::AEK_SVE2 | - AArch64::AEK_SVE2BITPERM | AArch64::AEK_SSBS | - AArch64::AEK_SB | AArch64::AEK_I8MM | - AArch64::AEK_PERFMON | AArch64::AEK_PREDRES | - AArch64::AEK_PROFILE | AArch64::AEK_FP16FML | - AArch64::AEK_FP16 | AArch64::AEK_FLAGM, - "9-A"), + ARMCPUTestParams( + "cortex-a715", "armv9-a", "neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_BF16 | + AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_MTE | AArch64::AEK_PAUTH | AArch64::AEK_SVE | + AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM | + AArch64::AEK_SSBS | AArch64::AEK_SB | AArch64::AEK_I8MM | + AArch64::AEK_PERFMON | AArch64::AEK_PREDRES | + AArch64::AEK_PROFILE | AArch64::AEK_FP16FML | + AArch64::AEK_FP16 | AArch64::AEK_FLAGM, + "9-A"), ARMCPUTestParams( "neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8", AArch64::AEK_RAS | AArch64::AEK_SVE | AArch64::AEK_SSBS | AArch64::AEK_RCPC | AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_BF16 | + 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, "8.4-A"), - ARMCPUTestParams( - "neoverse-v2", "armv9-a", "neon-fp-armv8", - AArch64::AEK_RAS | AArch64::AEK_SVE | AArch64::AEK_SSBS | - AArch64::AEK_RCPC | AArch64::AEK_CRC | AArch64::AEK_FP | - AArch64::AEK_SIMD | AArch64::AEK_MTE | AArch64::AEK_LSE | - AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_FP16 | AArch64::AEK_BF16 | AArch64::AEK_SVE2 | - AArch64::AEK_PROFILE | AArch64::AEK_FP16FML | - AArch64::AEK_I8MM | AArch64::AEK_SVE2BITPERM | - AArch64::AEK_RAND, - "9-A"), + ARMCPUTestParams("neoverse-v2", "armv9-a", "neon-fp-armv8", + AArch64::AEK_RAS | AArch64::AEK_SVE | + AArch64::AEK_SSBS | AArch64::AEK_RCPC | + AArch64::AEK_CRC | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_MTE | + AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_BF16 | + AArch64::AEK_SVE2 | AArch64::AEK_PROFILE | + AArch64::AEK_FP16FML | AArch64::AEK_I8MM | + AArch64::AEK_SVE2BITPERM | AArch64::AEK_RAND, + "9-A"), ARMCPUTestParams("cortex-r82", "armv8-r", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_RDM | AArch64::AEK_SSBS | AArch64::AEK_DOTPROD | @@ -1139,21 +1146,22 @@ AArch64::AEK_LSE | AArch64::AEK_SB, "8-R"), ARMCPUTestParams("cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS | AArch64::AEK_PROFILE, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_SSBS | + AArch64::AEK_PROFILE, "8.2-A"), ARMCPUTestParams("cortex-x1c", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_FP16 | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS | AArch64::AEK_PAUTH | - AArch64::AEK_PROFILE, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_SSBS | + AArch64::AEK_PAUTH | AArch64::AEK_PROFILE, "8.2-A"), ARMCPUTestParams("cortex-x2", "armv9-a", "neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_FP | @@ -1167,179 +1175,196 @@ AArch64::AEK_SB | AArch64::AEK_FP16 | AArch64::AEK_FP16FML, "9-A"), - ARMCPUTestParams("cortex-x3", "armv9-a", "neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_BF16 | - AArch64::AEK_SIMD | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_RDM | - AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_MTE | AArch64::AEK_PAUTH | - AArch64::AEK_SVE | AArch64::AEK_SVE2 | - AArch64::AEK_SVE2BITPERM | AArch64::AEK_SB | - AArch64::AEK_PROFILE | AArch64::AEK_PERFMON | - AArch64::AEK_I8MM | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML | AArch64::AEK_PREDRES | - AArch64::AEK_FLAGM | AArch64::AEK_SSBS, - "9-A"), + ARMCPUTestParams( + "cortex-x3", + "armv9-a", "neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_BF16 | + AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_MTE | AArch64::AEK_PAUTH | AArch64::AEK_SVE | + AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM | AArch64::AEK_SB | + AArch64::AEK_PROFILE | AArch64::AEK_PERFMON | + AArch64::AEK_I8MM | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + AArch64::AEK_PREDRES | AArch64::AEK_FLAGM | AArch64::AEK_SSBS, + "9-A"), ARMCPUTestParams("cyclone", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_NONE | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_NONE | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("apple-a7", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_NONE | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_NONE | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("apple-a8", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_NONE | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_NONE | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("apple-a9", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_NONE | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_NONE | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("apple-a10", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_RDM | - AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_RDM | AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("apple-a11", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_LSE | - AArch64::AEK_RAS | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_FP16, - "8.2-A"), - ARMCPUTestParams("apple-a12", "armv8.3-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | AArch64::AEK_LSE | AArch64::AEK_RAS | - AArch64::AEK_RDM | AArch64::AEK_RCPC | + AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_FP16, + "8.2-A"), + ARMCPUTestParams("apple-a12", "armv8.3-a", "crypto-neon-fp-armv8", + 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, "8.3-A"), ARMCPUTestParams("apple-a13", "armv8.4-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_LSE | + AArch64::AEK_RAS | AArch64::AEK_RDM | + AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + AArch64::AEK_SHA3, "8.4-A"), ARMCPUTestParams("apple-a14", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_LSE | + AArch64::AEK_RAS | AArch64::AEK_RDM | + AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | + AArch64::AEK_SHA3, "8.5-A"), ARMCPUTestParams("apple-a15", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | 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, "8.5-A"), ARMCPUTestParams("apple-a16", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - 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, - "8.5-A"), - ARMCPUTestParams("apple-m1", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_LSE | AArch64::AEK_RAS | - AArch64::AEK_RDM | AArch64::AEK_RCPC | - AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML | AArch64::AEK_SHA3, - "8.5-A"), - ARMCPUTestParams("apple-m2", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | 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, "8.5-A"), + ARMCPUTestParams( + "apple-m1", "armv8.5-a", "crypto-neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_AES | AArch64::AEK_SHA2 | + AArch64::AEK_SHA3 | AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3, + "8.5-A"), + ARMCPUTestParams( + "apple-m2", "armv8.5-a", "crypto-neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_AES | AArch64::AEK_SHA2 | + AArch64::AEK_SHA3 | AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | 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, + "8.5-A"), ARMCPUTestParams("apple-s4", "armv8.3-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_LSE | AArch64::AEK_RAS | - AArch64::AEK_RDM | AArch64::AEK_RCPC | - AArch64::AEK_FP16, + 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, "8.3-A"), ARMCPUTestParams("apple-s5", "armv8.3-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_LSE | AArch64::AEK_RAS | - AArch64::AEK_RDM | AArch64::AEK_RCPC | - AArch64::AEK_FP16, + 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, "8.3-A"), ARMCPUTestParams("exynos-m3", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("exynos-m4", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | - AArch64::AEK_RAS | AArch64::AEK_RDM | - AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RDM | AArch64::AEK_SIMD, "8.2-A"), ARMCPUTestParams("exynos-m5", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | - AArch64::AEK_RAS | AArch64::AEK_RDM | - AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RDM | AArch64::AEK_SIMD, "8.2-A"), ARMCPUTestParams("falkor", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_RDM, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_RDM, "8-A"), ARMCPUTestParams("kryo", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD, "8-A"), ARMCPUTestParams("neoverse-e1", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_RAS | + AArch64::AEK_RCPC | AArch64::AEK_RDM | + AArch64::AEK_SIMD | AArch64::AEK_SSBS, + "8.2-A"), + ARMCPUTestParams("neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_DOTPROD | + AArch64::AEK_FP | AArch64::AEK_FP16 | + AArch64::AEK_LSE | AArch64::AEK_PROFILE | AArch64::AEK_RAS | AArch64::AEK_RCPC | AArch64::AEK_RDM | AArch64::AEK_SIMD | AArch64::AEK_SSBS, "8.2-A"), - ARMCPUTestParams("neoverse-n1", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_DOTPROD | AArch64::AEK_FP | - AArch64::AEK_FP16 | AArch64::AEK_LSE | - AArch64::AEK_PROFILE | AArch64::AEK_RAS | - AArch64::AEK_RCPC | AArch64::AEK_RDM | - AArch64::AEK_SIMD | AArch64::AEK_SSBS, - "8.2-A"), - ARMCPUTestParams("neoverse-n2", "armv8.5-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_FP16 | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_SVE | - AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_RDM | AArch64::AEK_MTE | - AArch64::AEK_SSBS | AArch64::AEK_SB | - AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM | - AArch64::AEK_BF16 | AArch64::AEK_I8MM, - "8.5-A"), + ARMCPUTestParams( + "neoverse-n2", "armv8.5-a", "crypto-neon-fp-armv8", + AArch64::AEK_CRC | AArch64::AEK_AES | AArch64::AEK_SHA2 | + AArch64::AEK_SHA3 | AArch64::AEK_SM4 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_FP16 | AArch64::AEK_RAS | + AArch64::AEK_LSE | AArch64::AEK_SVE | AArch64::AEK_DOTPROD | + AArch64::AEK_RCPC | AArch64::AEK_RDM | AArch64::AEK_MTE | + AArch64::AEK_SSBS | AArch64::AEK_SB | AArch64::AEK_SVE2 | + AArch64::AEK_SVE2BITPERM | AArch64::AEK_BF16 | + AArch64::AEK_I8MM, + "8.5-A"), ARMCPUTestParams("ampere1", "armv8.6-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_FP16 | - AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | - AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_SHA2 | - AArch64::AEK_AES | AArch64::AEK_I8MM | AArch64::AEK_SSBS | - AArch64::AEK_SB, + AArch64::AEK_CRC | AArch64::AEK_FP | + AArch64::AEK_FP16 | AArch64::AEK_SIMD | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_RDM | AArch64::AEK_RCPC | + AArch64::AEK_DOTPROD | AArch64::AEK_SHA3 | + AArch64::AEK_BF16 | AArch64::AEK_SHA2 | + AArch64::AEK_AES | AArch64::AEK_I8MM | + AArch64::AEK_SSBS | AArch64::AEK_SB, "8.6-A"), ARMCPUTestParams( "neoverse-512tvb", "armv8.4-a", "crypto-neon-fp-armv8", @@ -1347,59 +1372,65 @@ AArch64::AEK_RCPC | AArch64::AEK_CRC | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | - AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_BF16 | + 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, "8.4-A"), ARMCPUTestParams("thunderx2t99", "armv8.1-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | - AArch64::AEK_CRYPTO | AArch64::AEK_LSE | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_LSE | AArch64::AEK_RDM | AArch64::AEK_FP | AArch64::AEK_SIMD, "8.1-A"), ARMCPUTestParams("thunderx3t110", "armv8.3-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | - AArch64::AEK_CRYPTO | AArch64::AEK_LSE | + 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, "8.3-A"), ARMCPUTestParams("thunderx", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_SIMD | AArch64::AEK_FP, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SIMD | + AArch64::AEK_FP, "8-A"), ARMCPUTestParams("thunderxt81", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_SIMD | AArch64::AEK_FP, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SIMD | + AArch64::AEK_FP, "8-A"), ARMCPUTestParams("thunderxt83", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_SIMD | AArch64::AEK_FP, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SIMD | + AArch64::AEK_FP, "8-A"), ARMCPUTestParams("thunderxt88", "armv8-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_SIMD | AArch64::AEK_FP, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SIMD | + AArch64::AEK_FP, "8-A"), ARMCPUTestParams("tsv110", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_RAS | AArch64::AEK_LSE | - AArch64::AEK_RDM | AArch64::AEK_PROFILE | - AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_DOTPROD, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_RAS | + AArch64::AEK_LSE | AArch64::AEK_RDM | + AArch64::AEK_PROFILE | AArch64::AEK_FP16 | + AArch64::AEK_FP16FML | AArch64::AEK_DOTPROD, "8.2-A"), ARMCPUTestParams("a64fx", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_FP16 | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_SVE | - AArch64::AEK_RDM, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_FP16 | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_SVE | AArch64::AEK_RDM, "8.2-A"), ARMCPUTestParams("carmel", "armv8.2-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_FP16 | AArch64::AEK_RAS | - AArch64::AEK_LSE | AArch64::AEK_RDM, + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_FP | + AArch64::AEK_SIMD | AArch64::AEK_FP16 | + AArch64::AEK_RAS | AArch64::AEK_LSE | + AArch64::AEK_RDM, "8.2-A"))); // Note: number of CPUs includes aliases. @@ -1508,7 +1539,8 @@ EXPECT_FALSE(testAArch64Extension("thunderxt81", AArch64::INVALID, "lse")); EXPECT_FALSE(testAArch64Extension("thunderxt83", AArch64::INVALID, "lse")); EXPECT_FALSE(testAArch64Extension("thunderxt88", AArch64::INVALID, "lse")); - EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "crypto")); + EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "aes")); + EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "sha2")); EXPECT_FALSE(testAArch64Extension("tsv110", AArch64::INVALID, "sha3")); EXPECT_FALSE(testAArch64Extension("tsv110", AArch64::INVALID, "sm4")); EXPECT_TRUE(testAArch64Extension("tsv110", AArch64::INVALID, "ras")); @@ -1519,7 +1551,8 @@ EXPECT_TRUE(testAArch64Extension("a64fx", AArch64::INVALID, "fp16")); EXPECT_TRUE(testAArch64Extension("a64fx", AArch64::INVALID, "sve")); EXPECT_FALSE(testAArch64Extension("a64fx", AArch64::INVALID, "sve2")); - EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "crypto")); + EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "aes")); + EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "sha2")); EXPECT_TRUE(testAArch64Extension("carmel", AArch64::INVALID, "fp16")); EXPECT_FALSE(testAArch64Extension("generic", AArch64::ARMV8A, "ras"));