Hi Kewen,

thank you for your reply.

> on 2024/3/8 19:33, Rene Rebe wrote:
> > This might not be the best timing -short before a major release-,
> > however, Sam just commented on the bug I filled years ago [1], so here
> > we go:
> > 
> > Glibc uses .machine to determine assembler optimizations to use.
> > However, since reworking the rs6000 .machine output selection in
> > commit e154242724b084380e3221df7c08fcdbd8460674 22 May 2019, G5 as
> > well as Cell, and even power4 w/ -maltivec currently resulted in
> > power7. Mask _ALTIVEC away as the .machine selection already did for
> > GFX and GPOPT.
> 
> Thanks for fixing, this fix looks reasonable to me, OPTION_MASK_ALTIVEC
> is a part of POWERPC_7400_MASK so any specified cpu type which has this
> POWERPC_7400_MASK by default and isn't handled early in function
> rs6000_machine_from_flags can suffer from this issue.
> 
> > 
> > powerpc64-t2-linux-gnu-gcc  test.c -S -o - -mcpu=G5
> >     .file   "test.c"
> >     .machine power7
> >     .abiversion 2
> >     .section        ".text"
> >     .ident  "GCC: (GNU) 10.2.0"
> >     .section        .note.GNU-stack,"",@progbits
> > 
> 
> Nit: Could you also add one test case for this?
> 
> btw, -mdejagnu-cpu=G5 can force the cpu type in dg-options.

It took me a while to allocate enough time to study dejagnu and write
a suitable test, I hope this suits your needs:

--- ./gcc/testsuite/gcc.target/powerpc/pr97367.c.vanilla        2024-05-30 
18:26:29.839784279 +0200
+++ ./gccc/testsuite/gcc.target/powerpc/pr97367.c       2024-05-30 
18:20:34.873818482 +0200
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-S -mcpu=G5" } */
+
+/* { dg-final { scan-assembler "power4" } } */

I double checked it works and fails as expected.

> > We ship this in T2/Linux [2] since 2020 and it is tested on G5, Cell
> > and Power8.
> > 
> > Signed-of-by: René Rebe <r...@exactcode.de>
> > 
> > [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97367
> > [2] https://t2sde.org
> > 
> > --- gcc-11.1.0-RC-20210423/gcc/config/rs6000/rs6000.cc.vanilla      
> > 2021-04-25 22:57:16.964223106 +0200
> > +++ gcc-11.1.0-RC-20210423/gcc/config/rs6000/rs6000.cc      2021-04-25 
> > 22:57:27.193223841 +0200
> > @@ -5765,7 +5765,7 @@
> >    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);
> 
> Nit: This line is too long and needs re-format.

While I don't really find ~100 chars too long for modern standards,
I'm happy to line break that for you once the above test is approved.

Thank you so much,

      René

-- 
  René Rebe, ExactCODE GmbH, Lietzenburger Str. 42, DE-10789 Berlin
  https://exactcode.com | https://t2sde.org | https://rene.rebe.de

Reply via email to