Author: Tim Northover Date: 2023-01-26T13:00:36Z New Revision: ecec44f2ae733b3848d4dd71324f5fdc33adc62e
URL: https://github.com/llvm/llvm-project/commit/ecec44f2ae733b3848d4dd71324f5fdc33adc62e DIFF: https://github.com/llvm/llvm-project/commit/ecec44f2ae733b3848d4dd71324f5fdc33adc62e.diff LOG: AArch64: remove SM4 support from Apple CPUs. The CPUs never supported SM4 instructions, but until recently I think crypto was folded into the baseline architecture as a monolithic feature so it was difficult to represent that. Now it's split we can, and the CPUs that support v8.4 onwards only handle AES, SHA2, SHA3 by way of crypto instructions. Added: Modified: clang/test/Preprocessor/aarch64-target-features.c llvm/include/llvm/TargetParser/AArch64TargetParser.h llvm/unittests/TargetParser/TargetParserTest.cpp Removed: ################################################################################ diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c index ba1b56c492067..9c03ae09cb79c 100644 --- a/clang/test/Preprocessor/aarch64-target-features.c +++ b/clang/test/Preprocessor/aarch64-target-features.c @@ -312,7 +312,7 @@ // 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-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" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" // 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" @@ -327,7 +327,7 @@ // 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" // 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" "+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" diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h index 11fce886ffb83..16bf3935e0356 100644 --- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h +++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h @@ -444,23 +444,26 @@ inline constexpr CpuInfo CpuInfos[] = { {"apple-a11", ARMV8_2A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, {"apple-a12", ARMV8_3A, (AArch64::AEK_CRYPTO | AArch64::AEK_FP16)}, {"apple-a13", ARMV8_4A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_SHA3)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-a14", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_SHA3)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-a15", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + 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_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + 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_SHA3)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)}, {"apple-m2", ARMV8_5A, - (AArch64::AEK_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | - AArch64::AEK_SHA3 | AArch64::AEK_BF16 | AArch64::AEK_I8MM)}, + (AArch64::AEK_AES | AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | + 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)}, diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp index 5c13b4a233ed5..2d967163b2c61 100644 --- a/llvm/unittests/TargetParser/TargetParserTest.cpp +++ b/llvm/unittests/TargetParser/TargetParserTest.cpp @@ -1212,7 +1212,8 @@ INSTANTIATE_TEST_SUITE_P( AArch64::AEK_FP16, "8.3-A"), ARMCPUTestParams("apple-a13", "armv8.4-a", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_CRYPTO | + AArch64::AEK_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | @@ -1220,7 +1221,8 @@ INSTANTIATE_TEST_SUITE_P( 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | @@ -1228,7 +1230,8 @@ INSTANTIATE_TEST_SUITE_P( 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | @@ -1237,7 +1240,8 @@ INSTANTIATE_TEST_SUITE_P( 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | @@ -1246,7 +1250,8 @@ INSTANTIATE_TEST_SUITE_P( 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | @@ -1254,7 +1259,8 @@ INSTANTIATE_TEST_SUITE_P( 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_CRC | AArch64::AEK_AES | + AArch64::AEK_SHA2 | AArch64::AEK_SHA3 | AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits