From: Tamar Christina Date: Mon, 15 Apr 2024 11:22:19 +0000 (+0100) Subject: [AArch64]: remove ls64 from being mandatory on armv8.7-a X-Git-Tag: releases/gcc-12.4.0~236 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c3f3d967a43fa868036417a39354790afc45171;p=thirdparty%2Fgcc.git [AArch64]: remove ls64 from being mandatory on armv8.7-a 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. gcc/ChangeLog: * config/aarch64/aarch64.h (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/pragma_cpp_predefs_2.c: Correct header checks. --- diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 01f7751bc783..fadcf98b85c1 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -268,7 +268,7 @@ extern unsigned aarch64_architecture_version; (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_V8_6 | AARCH64_FL_FPSIMD \ | AARCH64_FL_I8MM | AARCH64_FL_BF16) #define AARCH64_FL_FOR_ARCH8_7 \ - (AARCH64_FL_FOR_ARCH8_6 | AARCH64_FL_V8_7 | AARCH64_FL_LS64) + (AARCH64_FL_FOR_ARCH8_6 | AARCH64_FL_V8_7) #define AARCH64_FL_FOR_ARCH8_8 \ (AARCH64_FL_FOR_ARCH8_7 | AARCH64_FL_V8_8 | AARCH64_FL_MOPS) diff --git a/gcc/testsuite/g++.target/aarch64/acle/ls64.C b/gcc/testsuite/g++.target/aarch64/acle/ls64.C index d9002785b578..dcfe6f1af671 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 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 274a4771e1c1..0198fe2a1b78 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 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 8b4f24277717..0e5ae0b052b5 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 int main(void) { diff --git a/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c b/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c index f56d5e619e8a..62a82b97c56d 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 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 fb88d633dd20..423d91b9a99f 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/pragma_cpp_predefs_2.c b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c index 2d76bfc23dfd..d8fc86d15578 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