From 047b4e9368ea936cedccf1146b3f580b49e481c9 Mon Sep 17 00:00:00 2001 From: Richard Barton Date: Thu, 18 Aug 2016 15:50:11 +0000 Subject: [PATCH] [ARM] Correct ARMv8*-A optional extension definitions in TargetParser The ARMv8*-A descriptions in the ARM and AArch64 TargetParsers are incorrect architecturally and mismatched to the backend descriptions. RAS is an optional extension to ARMv8-A and ARMv8.1-A and mandatory in ARMv8.2-A. Correct the ARMTargetParser descriptions which had this as enabled by default in the earlier versions. The FP16 and SPE extensions are optional in ARMv8.2-A and the backend defaults them as off. They are not available as extensions to earlier ARMv8-A versions. Correct the AArch64TargetParser which had these as enabled by default in all ARMv8-A definitions. These macros are only used to define preprocessor macros. There are no macros yet as ACLE has not caught up with ARMv8.2-A so not possible to add a test. Differential Revision: https://reviews.llvm.org/D23500 llvm-svn: 279078 --- include/llvm/Support/AArch64TargetParser.def | 7 +++---- include/llvm/Support/ARMTargetParser.def | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/include/llvm/Support/AArch64TargetParser.def b/include/llvm/Support/AArch64TargetParser.def index d15a00fd34b..a2e30e70eb1 100644 --- a/include/llvm/Support/AArch64TargetParser.def +++ b/include/llvm/Support/AArch64TargetParser.def @@ -21,16 +21,15 @@ AARCH64_ARCH("invalid", AK_INVALID, nullptr, nullptr, AARCH64_ARCH("armv8-a", AK_ARMV8A, "8-A", "v8", ARMBuildAttrs::CPUArch::v8_A, FK_CRYPTO_NEON_FP_ARMV8, (AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP | - AArch64::AEK_SIMD | AArch64::AEK_FP16 | AArch64::AEK_PROFILE)) + AArch64::AEK_SIMD)) AARCH64_ARCH("armv8.1-a", AK_ARMV8_1A, "8.1-A", "v8.1a", ARMBuildAttrs::CPUArch::v8_A, FK_CRYPTO_NEON_FP_ARMV8, (AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP | - AArch64::AEK_SIMD | AArch64::AEK_FP16 | AArch64::AEK_PROFILE)) + AArch64::AEK_SIMD)) AARCH64_ARCH("armv8.2-a", AK_ARMV8_2A, "8.2-A", "v8.2a", ARMBuildAttrs::CPUArch::v8_A, FK_CRYPTO_NEON_FP_ARMV8, (AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP | - AArch64::AEK_SIMD | AArch64::AEK_FP16 | AArch64::AEK_PROFILE | - AArch64::AEK_RAS)) + AArch64::AEK_SIMD | AArch64::AEK_RAS)) #undef AARCH64_ARCH #ifndef AARCH64_ARCH_EXT_NAME diff --git a/include/llvm/Support/ARMTargetParser.def b/include/llvm/Support/ARMTargetParser.def index 037d2499d99..49e6860d8ea 100644 --- a/include/llvm/Support/ARMTargetParser.def +++ b/include/llvm/Support/ARMTargetParser.def @@ -89,11 +89,11 @@ ARM_ARCH("armv8-a", AK_ARMV8A, "8-A", "v8", ARMBuildAttrs::CPUArch::v8_A, ARM_ARCH("armv8.1-a", AK_ARMV8_1A, "8.1-A", "v8.1a", ARMBuildAttrs::CPUArch::v8_A, FK_CRYPTO_NEON_FP_ARMV8, (ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM | - ARM::AEK_HWDIV | ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS)) + ARM::AEK_HWDIV | ARM::AEK_DSP | ARM::AEK_CRC)) ARM_ARCH("armv8.2-a", AK_ARMV8_2A, "8.2-A", "v8.2a", ARMBuildAttrs::CPUArch::v8_A, FK_CRYPTO_NEON_FP_ARMV8, (ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM | - ARM::AEK_HWDIV | ARM::AEK_DSP | ARM::AEK_CRC)) + ARM::AEK_HWDIV | ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS)) ARM_ARCH("armv8-m.base", AK_ARMV8MBaseline, "8-M.Baseline", "v8m.base", ARMBuildAttrs::CPUArch::v8_M_Base, FK_NONE, ARM::AEK_HWDIV) ARM_ARCH("armv8-m.main", AK_ARMV8MMainline, "8-M.Mainline", "v8m.main",