Tamar Christina <tamar.christ...@arm.com> writes:
> Hi,  this I a new version of the patch updating some additional tests
> because some of the LTO tests required a newer binutils than my distro had.
>
> ---
>
> The Arm Architectural Reference Manual (Version J.a, section A2.9 on 
> FEAT_LS64)
> shows that ls64 is an optional extensions and should not be enabled by default
> for Armv8.7-a.
>
> This drops it from the mandatory bits for the architecture and brings GCC 
> inline
> with LLVM and the achitecture.
>
> Note that we will not be changing binutils to preserve compatibility with 
> older
> released compilers.
>
> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.
>
> Ok for master? and backport to GCC 13,12,11?
>
> Thanks,
> Tamar
>
> gcc/ChangeLog:
>
>         * config/aarch64/aarch64-arches.def (AARCH64_ARCH): Remove LS64 from
>         Armv8.7-a.
>
> gcc/testsuite/ChangeLog:
>
>         * g++.target/aarch64/acle/ls64.C: Add +ls64.
>         * g++.target/aarch64/acle/ls64_lto.C: Likewise.
>         * gcc.target/aarch64/acle/ls64_lto.c: Likewise.
>         * gcc.target/aarch64/acle/pr110100.c: Likewise.
>         * gcc.target/aarch64/acle/pr110132.c: Likewise.
>         * gcc.target/aarch64/options_set_28.c: Drop check for nols64.
>         * gcc.target/aarch64/pragma_cpp_predefs_2.c: Correct header checks.

OK, thanks.

Richard

> --- inline copy of patch ---
>
> diff --git a/gcc/config/aarch64/aarch64-arches.def 
> b/gcc/config/aarch64/aarch64-arches.def
> index 
> b7115ff7c3d4a7ee7abbedcb091ef15a7efacc79..9bec30e9203bac01155281ef3474846c402bb29e
>  100644
> --- a/gcc/config/aarch64/aarch64-arches.def
> +++ b/gcc/config/aarch64/aarch64-arches.def
> @@ -37,7 +37,7 @@ AARCH64_ARCH("armv8.3-a",     generic_armv8_a,   V8_3A,     
> 8,  (V8_2A, PAUTH, R
>  AARCH64_ARCH("armv8.4-a",     generic_armv8_a,   V8_4A,     8,  (V8_3A, 
> F16FML, DOTPROD, FLAGM))
>  AARCH64_ARCH("armv8.5-a",     generic_armv8_a,   V8_5A,     8,  (V8_4A, SB, 
> SSBS, PREDRES))
>  AARCH64_ARCH("armv8.6-a",     generic_armv8_a,   V8_6A,     8,  (V8_5A, 
> I8MM, BF16))
> -AARCH64_ARCH("armv8.7-a",     generic_armv8_a,   V8_7A,     8,  (V8_6A, 
> LS64))
> +AARCH64_ARCH("armv8.7-a",     generic_armv8_a,   V8_7A,     8,  (V8_6A))
>  AARCH64_ARCH("armv8.8-a",     generic_armv8_a,   V8_8A,     8,  (V8_7A, 
> MOPS))
>  AARCH64_ARCH("armv8.9-a",     generic_armv8_a,   V8_9A,     8,  (V8_8A))
>  AARCH64_ARCH("armv8-r",       generic_armv8_a,   V8R  ,     8,  (V8_4A))
> diff --git a/gcc/testsuite/g++.target/aarch64/acle/ls64.C 
> b/gcc/testsuite/g++.target/aarch64/acle/ls64.C
> index 
> d9002785b578741bde1202761f0881dc3d47e608..dcfe6f1af6711a7f3ec2562f6aabf56baecf417d
>  100644
> --- a/gcc/testsuite/g++.target/aarch64/acle/ls64.C
> +++ b/gcc/testsuite/g++.target/aarch64/acle/ls64.C
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-additional-options "-march=armv8.7-a" } */
> +/* { dg-additional-options "-march=armv8.7-a+ls64" } */
>  #include <arm_acle.h>
>  int main()
>  {
> diff --git a/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C 
> b/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C
> index 
> 274a4771e1c1d13bcb1a7bdc77c2e499726f024c..0198fe2a1b78627b873bf22e3d8416dbdcc77078
>  100644
> --- a/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C
> +++ b/gcc/testsuite/g++.target/aarch64/acle/ls64_lto.C
> @@ -1,5 +1,5 @@
>  /* { dg-do link { target aarch64_asm_ls64_ok } } */
> -/* { dg-additional-options "-march=armv8.7-a -flto" } */
> +/* { dg-additional-options "-march=armv8.7-a+ls64 -flto" } */
>  #include <arm_acle.h>
>  int main()
>  {
> diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c 
> b/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c
> index 
> 8b4f24277717675badc39dd145d365f75f5ceb27..0e5ae0b052b50b08d35151f4bc113617c1569bd3
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c
> +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_lto.c
> @@ -1,5 +1,5 @@
>  /* { dg-do link { target aarch64_asm_ls64_ok } } */
> -/* { dg-additional-options "-march=armv8.7-a -flto" } */
> +/* { dg-additional-options "-march=armv8.7-a+ls64 -flto" } */
>  #include <arm_acle.h>
>  int main(void)
>  {
> diff --git a/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c 
> b/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
> index 
> f56d5e619e8ac23cdf720574bd6ee08fbfd36423..62a82b97c56debad092cc8fd1ed48f0219109cd7
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
> +++ b/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-options "-march=armv8.7-a -O2" } */
> +/* { dg-options "-march=armv8.7-a+ls64 -O2" } */
>  #include <arm_acle.h>
>  void do_st64b(data512_t data) {
>    __arm_st64b((void*)0x10000000, data);
> diff --git a/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c 
> b/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c
> index 
> fb88d633dd20772fd96e976a400fe52ae0bc3647..423d91b9a99f269d01d07428414ade7cc518c711
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c
> +++ b/gcc/testsuite/gcc.target/aarch64/acle/pr110132.c
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-additional-options "-march=armv8.7-a" } */
> +/* { dg-additional-options "-march=armv8.7-a+ls64" } */
>
>  /* Check that ls64 builtins can be invoked using a preprocesed testcase
>     without triggering bogus builtin warnings, see PR110132.
> diff --git a/gcc/testsuite/gcc.target/aarch64/options_set_28.c 
> b/gcc/testsuite/gcc.target/aarch64/options_set_28.c
> index 
> 9e63768581e9d429e9408863942051b1b04761ac..d5b15f8bc5831de56fe667179d83d9c853529aaf
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/options_set_28.c
> +++ b/gcc/testsuite/gcc.target/aarch64/options_set_28.c
> @@ -1,9 +1,9 @@
>  /* { dg-do compile } */
> -/* { dg-additional-options "-march=armv9.3-a+nopredres+nols64+nomops" } */
> +/* { dg-additional-options "-march=armv9.3-a+nopredres+nomops" } */
>
>  int main ()
>  {
>    return 0;
>  }
>
> -/* { dg-final { scan-assembler-times {\.arch 
> armv9\.3\-a\+crc\+nopredres\+nols64\+nomops\n} 1 } } */
> +/* { dg-final { scan-assembler-times {\.arch 
> armv9\.3\-a\+crc\+nopredres\+nomops\n} 1 } } */
> diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c 
> b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
> index 
> 2d76bfc23dfdcd78a74ec0e4845a3bd8d110b010..d8fc86d1557895f91ffe8be2f65d6581abe51568
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
> +++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
> @@ -242,8 +242,8 @@
>
>  #pragma GCC push_options
>  #pragma GCC target ("arch=armv8.7-a")
> -#ifndef __ARM_FEATURE_LS64
> -#error "__ARM_FEATURE_LS64 is not defined but should be!"
> +#ifdef __ARM_FEATURE_LS64
> +#error "__ARM_FEATURE_LS64 is defined but should not be!"
>  #endif
>  #pragma GCC pop_options

Reply via email to