Hi James On 07/11/18 15:16, James Greenhalgh wrote: > On Fri, Nov 02, 2018 at 01:37:33PM -0500, Sudakshina Das wrote: >> Hi >> >> This patch is part of a series that enables ARMv8.5-A in GCC and >> adds Branch Target Identification Mechanism. >> (https://developer.arm.com/products/architecture/cpu-architecture/a-profile/exploration-tools) >> >> This patch add the march option for armv8.5-a. >> >> Bootstrapped and regression tested with aarch64-none-linux-gnu. >> Is this ok for trunk? > > One minor tweak, otherwise OK. > >> *** gcc/ChangeLog *** >> >> 2018-xx-xx Sudakshina Das <sudi....@arm.com> >> >> * config/aarch64/aarch64-arches.def: Define AARCH64_ARCH for >> ARMv8.5-A. >> * gcc/config/aarch64/aarch64.h (AARCH64_FL_V8_5): New. >> (AARCH64_FL_FOR_ARCH8_5, AARCH64_ISA_V8_5): New. >> * gcc/doc/invoke.texi: Document ARMv8.5-A. > >> diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h >> index >> fa9af26fd40fd23b1c9cd6da9b6300fd77089103..b324cdd2fede33af13c03362750401f9eb1c9a90 >> 100644 >> --- a/gcc/config/aarch64/aarch64.h >> +++ b/gcc/config/aarch64/aarch64.h >> @@ -170,6 +170,8 @@ extern unsigned aarch64_architecture_version; >> #define AARCH64_FL_SHA3 (1 << 18) /* Has ARMv8.4-a SHA3 and >> SHA512. */ >> #define AARCH64_FL_F16FML (1 << 19) /* Has ARMv8.4-a FP16 extensions. >> */ >> #define AARCH64_FL_RCPC8_4 (1 << 20) /* Has ARMv8.4-a RCPC extensions. >> */ >> +/* ARMv8.5-A architecture extensions. */ >> +#define AARCH64_FL_V8_5 (1 << 22) /* Has ARMv8.5-A features. */ >> >> /* Statistical Profiling extensions. */ >> #define AARCH64_FL_PROFILE (1 << 21) > > Let's keep this in order. 20, 21, 22. >
I have the moved the Armv8.5 stuff below. Patch attached. If this looks ok, I will rebase 2/6 on top. Let me know if you want me to resend the rebased 2/6 too. Thanks Sudi > Thanks, > James > >
diff --git a/gcc/config/aarch64/aarch64-arches.def b/gcc/config/aarch64/aarch64-arches.def index a37a5553894d6ab1d629017ea204478f69d8773d..7d05cd604093d15f27e5b197803a50c45a260e6e 100644 --- a/gcc/config/aarch64/aarch64-arches.def +++ b/gcc/config/aarch64/aarch64-arches.def @@ -35,5 +35,6 @@ AARCH64_ARCH("armv8.1-a", generic, 8_1A, 8, AARCH64_FL_FOR_ARCH8_1) AARCH64_ARCH("armv8.2-a", generic, 8_2A, 8, AARCH64_FL_FOR_ARCH8_2) AARCH64_ARCH("armv8.3-a", generic, 8_3A, 8, AARCH64_FL_FOR_ARCH8_3) AARCH64_ARCH("armv8.4-a", generic, 8_4A, 8, AARCH64_FL_FOR_ARCH8_4) +AARCH64_ARCH("armv8.5-a", generic, 8_5A, 8, AARCH64_FL_FOR_ARCH8_5) #undef AARCH64_ARCH diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 8ab21e7bc37c7d5ffba1a365345f70d9f501b3ac..8ce8445586f29963107848604c5e2bab8e853685 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -177,6 +177,9 @@ extern unsigned aarch64_architecture_version; /* Statistical Profiling extensions. */ #define AARCH64_FL_PROFILE (1 << 21) +/* ARMv8.5-A architecture extensions. */ +#define AARCH64_FL_V8_5 (1 << 22) /* Has ARMv8.5-A features. */ + /* Has FP and SIMD. */ #define AARCH64_FL_FPSIMD (AARCH64_FL_FP | AARCH64_FL_SIMD) @@ -195,6 +198,8 @@ extern unsigned aarch64_architecture_version; #define AARCH64_FL_FOR_ARCH8_4 \ (AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_V8_4 | AARCH64_FL_F16FML \ | AARCH64_FL_DOTPROD | AARCH64_FL_RCPC8_4) +#define AARCH64_FL_FOR_ARCH8_5 \ + (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5) /* Macros to test ISA flags. */ @@ -216,6 +221,7 @@ extern unsigned aarch64_architecture_version; #define AARCH64_ISA_SHA3 (aarch64_isa_flags & AARCH64_FL_SHA3) #define AARCH64_ISA_F16FML (aarch64_isa_flags & AARCH64_FL_F16FML) #define AARCH64_ISA_RCPC8_4 (aarch64_isa_flags & AARCH64_FL_RCPC8_4) +#define AARCH64_ISA_V8_5 (aarch64_isa_flags & AARCH64_FL_V8_5) /* 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 3e54087ab98049ba932caa34ba2fb135eda48396..26770c5aafda1524d63a89cacf8cc069b7c8b9b6 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -15118,8 +15118,11 @@ more feature modifiers. This option has the form @option{-march=@var{arch}@r{@{}+@r{[}no@r{]}@var{feature}@r{@}*}}. The permissible values for @var{arch} are @samp{armv8-a}, -@samp{armv8.1-a}, @samp{armv8.2-a}, @samp{armv8.3-a} or @samp{armv8.4-a} -or @var{native}. +@samp{armv8.1-a}, @samp{armv8.2-a}, @samp{armv8.3-a}, @samp{armv8.4-a}, +@samp{armv8.5-a} or @var{native}. + +The value @samp{armv8.5-a} implies @samp{armv8.4-a} and enables compiler +support for the ARMv8.5-A architecture extensions. The value @samp{armv8.4-a} implies @samp{armv8.3-a} and enables compiler support for the ARMv8.4-A architecture extensions.