From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9C8CF158170 for ; Thu, 18 Jul 2024 00:45:15 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CA253E2A1F; Thu, 18 Jul 2024 00:45:14 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A3DABE2A1F for ; Thu, 18 Jul 2024 00:45:14 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 8EE2633C1C1 for ; Thu, 18 Jul 2024 00:45:13 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 8201E1E32 for ; Thu, 18 Jul 2024 00:45:11 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1721263475.3caa1b3eb3879d24c604ffa282b1c4b2c17fc391.sam@gentoo> Subject: [gentoo-commits] proj/gcc-patches:master commit in: 15.0.0/gentoo/ X-VCS-Repository: proj/gcc-patches X-VCS-Files: 15.0.0/gentoo/76_all_ppc_PR97367-power7-cell-altivec.patch X-VCS-Directories: 15.0.0/gentoo/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 3caa1b3eb3879d24c604ffa282b1c4b2c17fc391 X-VCS-Branch: master Date: Thu, 18 Jul 2024 00:45:11 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: b677ecdd-d645-4552-a78b-08d3aa1f8f68 X-Archives-Hash: 8e8b2c14dba2fe4c64be9a3945920293 commit: 3caa1b3eb3879d24c604ffa282b1c4b2c17fc391 Author: Sam James gentoo org> AuthorDate: Thu Jul 18 00:44:35 2024 +0000 Commit: Sam James gentoo org> CommitDate: Thu Jul 18 00:44:35 2024 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=3caa1b3e 15.0.0: update power7 .feature patch Switch to Peter's version. Can update older branches once it's merged. Signed-off-by: Sam James gentoo.org> .../76_all_ppc_PR97367-power7-cell-altivec.patch | 102 ++++++++++++++++++++- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/15.0.0/gentoo/76_all_ppc_PR97367-power7-cell-altivec.patch b/15.0.0/gentoo/76_all_ppc_PR97367-power7-cell-altivec.patch index 154dd0f..d4ca6c2 100644 --- a/15.0.0/gentoo/76_all_ppc_PR97367-power7-cell-altivec.patch +++ b/15.0.0/gentoo/76_all_ppc_PR97367-power7-cell-altivec.patch @@ -1,13 +1,109 @@ https://gcc.gnu.org/PR97367 -https://inbox.sourceware.org/gcc-patches/20240308.123342.1112119677226246836.rene@exactcode.de/ +https://inbox.sourceware.org/gcc-patches/5f2b5d5e-a682-4084-b70e-89929f4cc6dc@bergner.org/T/#u + +From git@z Thu Jan 1 00:00:00 1970 +Subject: [PATCH v2] rs6000: Fix .machine cpu selection w/ altivec [PR97367] +From: Peter Bergner +Date: Fri, 12 Jul 2024 16:48:29 -0500 +Message-Id: <5f2b5d5e-a682-4084-b70e-89929f4cc6dc@bergner.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +René's patch seems to have stalled, so here is an updated version of the +patch with the requested changes to his patch. + +I'll note I have added an additional code change, which is to also emit a +".machine altivec" if Altivec is enabled. The problem this fixes is for +cpus like the G5, which is basically a power4 plus an Altivec unit, its +".machine power4" doesn't enable the assembler to recognize Altivec insns. +That isn't a problem if you use gcc -mcpu=G5 to assemble the assembler file, +since gcc passes -maltivec to the assembler. However, if you try to assemble +the assembler file with as by hand, you'll get "unrecognized opcode" errors. +I did not do the same for VSX, since all ".machine " for cpus that +support VSX already enable VSX insn recognition, so it's not needed. + + +rs6000: Fix .machine cpu selection w/ altivec [PR97367] + +There are various non-IBM CPUs with altivec, so we cannot use that +flag to determine which .machine cpu to use, so ignore it. +Emit an additional ".machine altivec" if Altivec is enabled so +that the assembler doesn't require an explicit -maltivec option +to assemble any Altivec instructions for those targets where +the ".machine cpu" is insufficient to enable Altivec. For example, +-mcpu=G5 emits a ".machine power4". + +This passed bootstrap and regtesting on powrpc64-linux (running the testsuite +in both 32-bit and 64-bit modes) with no regressions. + +Ok for trunk and the release branches after some trunk burn-in time? + +Peter + + +2024-07-12 René Rebe + Peter Bergner + +gcc/ + PR target/97367 + * config/rs6000/rs6000.c (rs6000_machine_from_flags): Do not consider + OPTION_MASK_ALTIVEC. + (emit_asm_machine): For Altivec compiles, emit a ".machine altivec". + +gcc/testsuite/ + PR target/97367 + * gcc.target/powerpc/pr97367.c: New test. + +Signed-of-by: René Rebe +--- + gcc/config/rs6000/rs6000.cc | 5 ++++- + gcc/testsuite/gcc.target/powerpc/pr97367.c | 13 +++++++++++++ + 2 files changed, 17 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gcc.target/powerpc/pr97367.c + +diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc +index 2cbea6ea2d7..2cb8f35739b 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc -@@ -5869,7 +5869,7 @@ rs6000_machine_from_flags (void) +@@ -5888,7 +5888,8 @@ rs6000_machine_from_flags (void) HOST_WIDE_INT flags = rs6000_isa_flags; /* Disable the flags that should never influence the .machine selection. */ - flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL); -+ flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ALTIVEC | OPTION_MASK_ISEL); ++ flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL ++ | OPTION_MASK_ALTIVEC); if ((flags & (ISA_3_1_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0) return "power10"; +@@ -5913,6 +5914,8 @@ void + emit_asm_machine (void) + { + fprintf (asm_out_file, "\t.machine %s\n", rs6000_machine); ++ if (TARGET_ALTIVEC) ++ fprintf (asm_out_file, "\t.machine altivec\n"); + } + #endif + +diff --git a/gcc/testsuite/gcc.target/powerpc/pr97367.c b/gcc/testsuite/gcc.target/powerpc/pr97367.c +new file mode 100644 +index 00000000000..f9118dbcdec +--- /dev/null ++++ b/gcc/testsuite/gcc.target/powerpc/pr97367.c +@@ -0,0 +1,13 @@ ++/* PR target/97367 */ ++/* { dg-options "-mdejagnu-cpu=G5" } */ ++ ++/* Verify we emit a ".machine power4" and ".machine altivec" rather ++ than a ".machine power7". */ ++ ++int dummy (void) ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.\mmachine power4\M} } } */ ++/* { dg-final { scan-assembler {\.\mmachine altivec\M} } } */ +-- +2.45.2 +