Message ID | 564A04E4.90409@foss.arm.com |
---|---|
State | New |
Headers | show |
On Mon, Nov 16, 2015 at 8:31 AM, Matthew Wahab <matthew.wahab@foss.arm.com> wrote: > Hello, > > The command line options for target selection allow ARMv8.1 extensions > to be individually enabled/disabled. They also allow the extensions to > be enabled with -march=armv8-a. This doesn't reflect the ARMv8.1 > architecture which requires all extensions to be enabled and doesn't make > them available for ARMv8. > > This patch removes the options for the individual ARMv8.1 extensions > except for +lse. This means that setting -march=armv8.1-a will enable > all extensions required by ARMv8.1 and that the ARMv8.1 extensions can't > be used with -march=armv8. > > The exception to this is +lse since there may be existing code expecting > to be built with -march=armv8-a+lse. Note that +crc, which is enabled by > -march=armv8.1-a, is still an option for -march=armv8-a. > > This patch depends on the patch series > https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02429.html. > > Tested aarch64-none-elf with cross-compiled check-gcc and > aarch64-none-linux-gnu with native bootstrap and make check. I like this patch. Note I was going to soon submit patches to change thunderx over to 8.1-a and add thunderxt88pass1 which is 8-a. But I need a few more patches to get to get that. Thanks, Andrew > > Ok for trunk? > Matthew > > gcc/ > 2015-11-16 Matthew Wahab <matthew.wahab@arm.com> > > * config/aarch64/aarch64-options-extensions.def: Remove > AARCH64_FL_RDMA from "fp" and "simd". Remove "pan", "lor", > "rdma". > * config/aarch64/aarch64.h (AARCH64_FL_PAN): Remove. > (AARCH64_FL_LOR): Remove. > (AARCH64_FL_RDMA): Remove. > (AARCH64_FL_V8_1): New. > (AARCH64_FL_FOR_AARCH8_1): Replace AARCH64_FL_PAN, AARCH64_FL_LOR > and AARCH64_FL_RDMA with AARCH64_FL_V8_1. > (AARCH64_ISA_RDMA): Replace AARCH64_FL_RDMA with AARCH64_FL_V8_1. > * doc/invoke.texi (AArch64 - Feature Modifiers): Remove "pan", > "lor" and "rdma".
On Mon, Nov 16, 2015 at 04:31:32PM +0000, Matthew Wahab wrote: > Hello, > > The command line options for target selection allow ARMv8.1 extensions > to be individually enabled/disabled. They also allow the extensions to > be enabled with -march=armv8-a. This doesn't reflect the ARMv8.1 > architecture which requires all extensions to be enabled and doesn't make > them available for ARMv8. > > This patch removes the options for the individual ARMv8.1 extensions > except for +lse. This means that setting -march=armv8.1-a will enable > all extensions required by ARMv8.1 and that the ARMv8.1 extensions can't > be used with -march=armv8. > > The exception to this is +lse since there may be existing code expecting > to be built with -march=armv8-a+lse. Note that +crc, which is enabled by > -march=armv8.1-a, is still an option for -march=armv8-a. > > This patch depends on the patch series > https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02429.html. > > Tested aarch64-none-elf with cross-compiled check-gcc and > aarch64-none-linux-gnu with native bootstrap and make check. > > Ok for trunk? > Matthew > > gcc/ > 2015-11-16 Matthew Wahab <matthew.wahab@arm.com> > > * config/aarch64/aarch64-options-extensions.def: Remove > AARCH64_FL_RDMA from "fp" and "simd". Remove "pan", "lor", > "rdma". > * config/aarch64/aarch64.h (AARCH64_FL_PAN): Remove. > (AARCH64_FL_LOR): Remove. > (AARCH64_FL_RDMA): Remove. > (AARCH64_FL_V8_1): New. > (AARCH64_FL_FOR_AARCH8_1): Replace AARCH64_FL_PAN, AARCH64_FL_LOR > and AARCH64_FL_RDMA with AARCH64_FL_V8_1. > (AARCH64_ISA_RDMA): Replace AARCH64_FL_RDMA with AARCH64_FL_V8_1. > * doc/invoke.texi (AArch64 - Feature Modifiers): Remove "pan", > "lor" and "rdma". I think I mentioned it in another review, but this patch seems a good place to solve the problem. Could you please update the documentation to explain what you've written above. As it stands I find myself confused by which features GCC will make available at -march=armv8-a and -march=armv8.1-a. Thanks, James > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 8057ac9..710198a 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -12674,13 +12674,6 @@ instructions. This is on by default for all possible values for options > @option{-march} and @option{-mcpu}. > @item lse > Enable Large System Extension instructions. > -@item pan > -Enable Privileged Access Never support. > -@item lor > -Enable Limited Ordering Regions support. > -@item rdma > -Enable ARMv8.1 Advanced SIMD instructions. This implies Advanced SIMD > -is enabled. > > @end table > > -- > 2.1.4 >
From bc4ea389754127ec639ea2de085a7c82aebae117 Mon Sep 17 00:00:00 2001 From: Matthew Wahab <matthew.wahab@arm.com> Date: Fri, 30 Oct 2015 10:32:59 +0000 Subject: [PATCH] [AArch64] Rework ARMv8.1 command line options. Change-Id: Ib9053719f45980255a3d7727e226a53d9f214049 --- gcc/config/aarch64/aarch64-option-extensions.def | 9 ++++----- gcc/config/aarch64/aarch64.h | 9 +++------ gcc/doc/invoke.texi | 7 ------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index b261a0f..4f1d535 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -34,11 +34,10 @@ should contain a whitespace-separated list of the strings in 'Features' that are required. Their order is not important. */ -AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, "fp") -AARCH64_OPT_EXTENSION("simd", AARCH64_FL_FPSIMD, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, "asimd") +AARCH64_OPT_EXTENSION ("fp", AARCH64_FL_FP, + AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO, "fp") +AARCH64_OPT_EXTENSION ("simd", AARCH64_FL_FPSIMD, + AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "asimd") AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO | AARCH64_FL_FPSIMD, AARCH64_FL_CRYPTO, "aes pmull sha1 sha2") AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, AARCH64_FL_CRC, "crc32") AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, AARCH64_FL_LSE, "lse") -AARCH64_OPT_EXTENSION("pan", AARCH64_FL_PAN, AARCH64_FL_PAN, "pan") -AARCH64_OPT_EXTENSION("lor", AARCH64_FL_LOR, AARCH64_FL_LOR, "lor") -AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA | AARCH64_FL_FPSIMD, AARCH64_FL_RDMA, "rdma") diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 68c006f..06345f0 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -134,9 +134,7 @@ extern unsigned aarch64_architecture_version; #define AARCH64_FL_CRC (1 << 3) /* Has CRC. */ /* ARMv8.1 architecture extensions. */ #define AARCH64_FL_LSE (1 << 4) /* Has Large System Extensions. */ -#define AARCH64_FL_PAN (1 << 5) /* Has Privileged Access Never. */ -#define AARCH64_FL_LOR (1 << 6) /* Has Limited Ordering regions. */ -#define AARCH64_FL_RDMA (1 << 7) /* Has ARMv8.1 Adv.SIMD. */ +#define AARCH64_FL_V8_1 (1 << 5) /* Has ARMv8.1 extensions. */ /* Has FP and SIMD. */ #define AARCH64_FL_FPSIMD (AARCH64_FL_FP | AARCH64_FL_SIMD) @@ -147,8 +145,7 @@ extern unsigned aarch64_architecture_version; /* Architecture flags that effect instruction selection. */ #define AARCH64_FL_FOR_ARCH8 (AARCH64_FL_FPSIMD) #define AARCH64_FL_FOR_ARCH8_1 \ - (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_PAN \ - | AARCH64_FL_LOR | AARCH64_FL_RDMA) + (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_V8_1) /* Macros to test ISA flags. */ @@ -157,7 +154,7 @@ extern unsigned aarch64_architecture_version; #define AARCH64_ISA_FP (aarch64_isa_flags & AARCH64_FL_FP) #define AARCH64_ISA_SIMD (aarch64_isa_flags & AARCH64_FL_SIMD) #define AARCH64_ISA_LSE (aarch64_isa_flags & AARCH64_FL_LSE) -#define AARCH64_ISA_RDMA (aarch64_isa_flags & AARCH64_FL_RDMA) +#define AARCH64_ISA_RDMA (aarch64_isa_flags & AARCH64_FL_V8_1) /* Crypto is an optional extension to AdvSIMD. */ #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 8057ac9..710198a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12674,13 +12674,6 @@ instructions. This is on by default for all possible values for options @option{-march} and @option{-mcpu}. @item lse Enable Large System Extension instructions. -@item pan -Enable Privileged Access Never support. -@item lor -Enable Limited Ordering Regions support. -@item rdma -Enable ARMv8.1 Advanced SIMD instructions. This implies Advanced SIMD -is enabled. @end table -- 2.1.4