Index: clang/test/Preprocessor/aarch64-target-features.c =================================================================== --- clang/test/Preprocessor/aarch64-target-features.c +++ clang/test/Preprocessor/aarch64-target-features.c @@ -238,7 +238,7 @@ // CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" // CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" // CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" -// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+rcpc" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes" +// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+rcpc" "-target-feature" "+fullfp16" // CHECK-MCPU-M1: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" // CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fullfp16" // CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" Index: llvm/include/llvm/Support/AArch64TargetParser.def =================================================================== --- llvm/include/llvm/Support/AArch64TargetParser.def +++ llvm/include/llvm/Support/AArch64TargetParser.def @@ -53,12 +53,10 @@ AArch64::AEK_SHA2 | AArch64::AEK_AES | AArch64::AEK_I8MM)) AARCH64_ARCH("armv8-r", ARMV8R, "8-R", "v8r", ARMBuildAttrs::CPUArch::v8_R, FK_CRYPTO_NEON_FP_ARMV8, - (AArch64::AEK_CRC | AArch64::AEK_RDM | AArch64::AEK_SSBS | - AArch64::AEK_CRYPTO | AArch64::AEK_SM4 | AArch64::AEK_SHA3 | - AArch64::AEK_SHA2 | AArch64::AEK_AES | AArch64::AEK_DOTPROD | - AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML | AArch64::AEK_RAS | AArch64::AEK_RCPC | - AArch64::AEK_SB)) + (AArch64::AEK_CRC | AArch64::AEK_RDM | AArch64::AEK_SSBS | + AArch64::AEK_DOTPROD | AArch64::AEK_FP | AArch64::AEK_SIMD | + AArch64::AEK_FP16 | AArch64::AEK_FP16FML | AArch64::AEK_RAS | + AArch64::AEK_RCPC | AArch64::AEK_SB)) #undef AARCH64_ARCH #ifndef AARCH64_ARCH_EXT_NAME @@ -139,7 +137,7 @@ (AArch64::AEK_FP16 | AArch64::AEK_DOTPROD | AArch64::AEK_RCPC | AArch64::AEK_SSBS)) AARCH64_CPU_NAME("cortex-r82", ARMV8R, FK_CRYPTO_NEON_FP_ARMV8, false, - (AArch64::AEK_NONE)) + (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)) Index: llvm/unittests/Support/TargetParserTest.cpp =================================================================== --- llvm/unittests/Support/TargetParserTest.cpp +++ llvm/unittests/Support/TargetParserTest.cpp @@ -897,12 +897,11 @@ "8.4-A")); EXPECT_TRUE(testAArch64CPU( "cortex-r82", "armv8-r", "crypto-neon-fp-armv8", - AArch64::AEK_CRC | AArch64::AEK_RDM | AArch64::AEK_SSBS | - AArch64::AEK_CRYPTO | AArch64::AEK_SM4 | AArch64::AEK_SHA3 | - AArch64::AEK_SHA2 | AArch64::AEK_AES | AArch64::AEK_DOTPROD | - AArch64::AEK_FP | AArch64::AEK_SIMD | AArch64::AEK_FP16 | - AArch64::AEK_FP16FML | AArch64::AEK_RAS | AArch64::AEK_RCPC | - AArch64::AEK_SB, "8-R")); + AArch64::AEK_CRC | AArch64::AEK_RDM | AArch64::AEK_SSBS | + 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, + "8-R")); EXPECT_TRUE(testAArch64CPU( "cortex-x1", "armv8.2-a", "crypto-neon-fp-armv8", AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP | @@ -1103,6 +1102,12 @@ AArch64::ArchKind::INVALID, "ras")); EXPECT_TRUE(testAArch64Extension("cortex-a55", AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_FALSE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-a55", + AArch64::ArchKind::INVALID, "dotprod")); EXPECT_FALSE(testAArch64Extension("cortex-a57", AArch64::ArchKind::INVALID, "ras")); EXPECT_FALSE(testAArch64Extension("cortex-a72", @@ -1111,6 +1116,22 @@ AArch64::ArchKind::INVALID, "ras")); EXPECT_TRUE(testAArch64Extension("cortex-a75", AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_FALSE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-a75", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "ras")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "fp16")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "fp16fml")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "dotprod")); + EXPECT_TRUE(testAArch64Extension("cortex-r82", + AArch64::ArchKind::INVALID, "lse")); EXPECT_FALSE(testAArch64Extension("cyclone", AArch64::ArchKind::INVALID, "ras")); EXPECT_FALSE(testAArch64Extension("exynos-m3", @@ -1153,18 +1174,6 @@ AArch64::ArchKind::INVALID, "profile")); EXPECT_FALSE(testAArch64Extension("saphira", AArch64::ArchKind::INVALID, "fp16")); - EXPECT_TRUE(testAArch64Extension("cortex-a55", - AArch64::ArchKind::INVALID, "fp16")); - EXPECT_FALSE(testAArch64Extension("cortex-a55", - AArch64::ArchKind::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("cortex-a55", - AArch64::ArchKind::INVALID, "dotprod")); - EXPECT_TRUE(testAArch64Extension("cortex-a75", - AArch64::ArchKind::INVALID, "fp16")); - EXPECT_FALSE(testAArch64Extension("cortex-a75", - AArch64::ArchKind::INVALID, "fp16fml")); - EXPECT_TRUE(testAArch64Extension("cortex-a75", - AArch64::ArchKind::INVALID, "dotprod")); EXPECT_FALSE(testAArch64Extension("thunderx2t99", AArch64::ArchKind::INVALID, "ras")); EXPECT_FALSE(testAArch64Extension("thunderx",