diff --git a/llvm/include/llvm/Support/AArch64TargetParser.def b/llvm/include/llvm/Support/AArch64TargetParser.def --- a/llvm/include/llvm/Support/AArch64TargetParser.def +++ b/llvm/include/llvm/Support/AArch64TargetParser.def @@ -168,10 +168,10 @@ AARCH64_CPU_NAME("cortex-a57", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_CRC)) AARCH64_CPU_NAME("cortex-a65", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RAS | + (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)) AARCH64_CPU_NAME("cortex-a65ae", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RAS | + (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)) AARCH64_CPU_NAME("cortex-a72", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_CRC)) @@ -190,10 +190,11 @@ AArch64::AEK_SSBS)) AARCH64_CPU_NAME("cortex-a78", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS)) + AArch64::AEK_SSBS | AArch64::AEK_PROFILE)) AARCH64_CPU_NAME("cortex-a78c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS)) + AArch64::AEK_SSBS | AArch64::AEK_PROFILE | AArch64::AEK_FLAGM | + AArch64::AEK_PAUTH | AArch64::AEK_FP16FML)) AARCH64_CPU_NAME("cortex-a710", ARMV9A, FK_NEON_FP_ARMV8, false, (AArch64::AEK_MTE | AArch64::AEK_PAUTH | AArch64::AEK_FLAGM | AArch64::AEK_SB | AArch64::AEK_I8MM | AArch64::AEK_FP16FML | @@ -203,35 +204,37 @@ (AArch64::AEK_LSE)) AARCH64_CPU_NAME("cortex-x1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS)) + AArch64::AEK_SSBS | AArch64::AEK_PROFILE)) AARCH64_CPU_NAME("cortex-x1c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS | AArch64::AEK_PAUTH)) + AArch64::AEK_SSBS | AArch64::AEK_PAUTH | AArch64::AEK_PROFILE)) AARCH64_CPU_NAME("cortex-x2", ARMV9A, FK_NEON_FP_ARMV8, false, (AArch64::AEK_MTE | AArch64::AEK_BF16 | AArch64::AEK_I8MM | AArch64::AEK_PAUTH | AArch64::AEK_SSBS | AArch64::AEK_SB | AArch64::AEK_SVE | AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM | AArch64::AEK_FP16FML)) AARCH64_CPU_NAME("neoverse-e1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RAS | + (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_RCPC | AArch64::AEK_SSBS)) AARCH64_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_PROFILE | AArch64::AEK_RAS | AArch64::AEK_RCPC | + AArch64::AEK_PROFILE | AArch64::AEK_RCPC | AArch64::AEK_SSBS)) AARCH64_CPU_NAME("neoverse-n2", ARMV8_5A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_BF16 | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_I8MM | AArch64::AEK_MTE | AArch64::AEK_RAS | - AArch64::AEK_RCPC | AArch64::AEK_SB | AArch64::AEK_SSBS | + AArch64::AEK_I8MM | AArch64::AEK_MTE | + AArch64::AEK_SB | AArch64::AEK_SSBS | AArch64::AEK_SVE | AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM)) AARCH64_CPU_NAME("neoverse-512tvb", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_RAS | AArch64::AEK_SVE | AArch64::AEK_SSBS | - AArch64::AEK_RCPC | AArch64::AEK_FP16 | AArch64::AEK_BF16 | - AArch64::AEK_DOTPROD )) + (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)) AARCH64_CPU_NAME("neoverse-v1", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_RAS | AArch64::AEK_SVE | AArch64::AEK_SSBS | - AArch64::AEK_RCPC | AArch64::AEK_FP16 | AArch64::AEK_BF16 | - AArch64::AEK_DOTPROD )) + (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)) AARCH64_CPU_NAME("cyclone", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_NONE)) AARCH64_CPU_NAME("apple-a7", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, @@ -247,11 +250,11 @@ AARCH64_CPU_NAME("apple-a12", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16)) AARCH64_CPU_NAME("apple-a13", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_FP16 | AArch64::AEK_FP16FML)) + (AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)) AARCH64_CPU_NAME("apple-a14", ARMV8_5A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_FP16 | AArch64::AEK_FP16FML)) + (AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)) AARCH64_CPU_NAME("apple-m1", ARMV8_5A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_FP16 | AArch64::AEK_FP16FML)) + (AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_SHA3)) AARCH64_CPU_NAME("apple-s4", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_FP16)) AARCH64_CPU_NAME("apple-s5", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false, @@ -271,17 +274,15 @@ AARCH64_CPU_NAME("thunderx2t99", ARMV8_1A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_NONE)) AARCH64_CPU_NAME("thunderx3t110", ARMV8_3A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_CRC | AEK_CRYPTO | AEK_FP | AEK_SIMD | - AEK_LSE | AEK_RAND | AArch64::AEK_PROFILE | - AArch64::AEK_RAS)) + (AArch64::AEK_NONE)) AARCH64_CPU_NAME("thunderx", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_CRC | AArch64::AEK_PROFILE)) + (AArch64::AEK_CRC)) AARCH64_CPU_NAME("thunderxt88", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_CRC | AArch64::AEK_PROFILE)) + (AArch64::AEK_CRC)) AARCH64_CPU_NAME("thunderxt81", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_CRC | AArch64::AEK_PROFILE)) + (AArch64::AEK_CRC)) AARCH64_CPU_NAME("thunderxt83", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_CRC | AArch64::AEK_PROFILE)) + (AArch64::AEK_CRC)) AARCH64_CPU_NAME("tsv110", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false, (AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | AArch64::AEK_FP16FML | diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp --- a/llvm/unittests/Support/TargetParserTest.cpp +++ b/llvm/unittests/Support/TargetParserTest.cpp @@ -996,7 +996,7 @@ AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS, + 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 | @@ -1004,7 +1004,9 @@ 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_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 | @@ -1023,7 +1025,9 @@ 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_CRYPTO | AArch64::AEK_FP16 | AArch64::AEK_BF16 | + AArch64::AEK_PROFILE | AArch64::AEK_RAND | + AArch64::AEK_FP16FML | AArch64::AEK_I8MM, "8.4-A"), ARMCPUTestParams("cortex-r82", "armv8-r", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_RDM | @@ -1039,7 +1043,7 @@ AArch64::AEK_SIMD | AArch64::AEK_RAS | AArch64::AEK_LSE | AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | - AArch64::AEK_SSBS, + 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 | @@ -1047,7 +1051,8 @@ 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_SSBS | AArch64::AEK_PAUTH | + AArch64::AEK_PROFILE, "8.2-A"), ARMCPUTestParams("cortex-x2", "armv9-a", "neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_FP | @@ -1100,7 +1105,7 @@ AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML, + 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 | @@ -1108,7 +1113,7 @@ AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML, + AArch64::AEK_FP16FML | AArch64::AEK_SHA3, "8.5-A"), ARMCPUTestParams("apple-m1", "armv8.5-a", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_CRYPTO | @@ -1116,7 +1121,7 @@ AArch64::AEK_LSE | AArch64::AEK_RAS | AArch64::AEK_RDM | AArch64::AEK_RCPC | AArch64::AEK_DOTPROD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML, + AArch64::AEK_FP16FML | AArch64::AEK_SHA3, "8.5-A"), ARMCPUTestParams("apple-s4", "armv8.3-a", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_CRYPTO | @@ -1192,7 +1197,9 @@ 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_CRYPTO | 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_NONE | AArch64::AEK_CRC | @@ -1201,31 +1208,27 @@ 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_RDM | - AArch64::AEK_FP | AArch64::AEK_SIMD | - AArch64::AEK_PROFILE | AArch64::AEK_RAS | - AArch64::AEK_RAND | AArch64::AEK_RCPC, + AArch64::AEK_NONE | AArch64::AEK_CRC | + AArch64::AEK_CRYPTO | 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_PROFILE, + 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_PROFILE, + 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_PROFILE, + 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_PROFILE, + AArch64::AEK_SIMD | AArch64::AEK_FP, "8-A"), ARMCPUTestParams("tsv110", "armv8.2-a", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_CRYPTO |