This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64] Rework ARMv8.1 command line options.
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: Matthew Wahab <matthew dot wahab at foss dot arm dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 24 Nov 2015 15:22:59 +0000
- Subject: Re: [AArch64] Rework ARMv8.1 command line options.
- Authentication-results: sourceware.org; auth=none
- References: <564A04E4 dot 90409 at foss dot arm dot com>
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
>