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