On Thu, Nov 14, 2024 at 06:47:58PM -0600, Peter Bergner wrote:
> On 11/8/24 1:55 PM, Michael Meissner wrote:
> > Two tests used -mvsx to raise the processor level to at least power7. These
> > tests were rewritten to add cpu=power7 support.
>
> Again, this cleanup patch like the TARGET_<FOO> -> TARGET_<CPU> patches
> is independent of the main patches in this series (ie, patche 1-3),
> so let's pull this out of the series and just mention they're cleanup
> patches preparing for the actual 3 patch series to come later.
See my latest round of patches.
>
> > /* { dg-skip-if "" { powerpc*-*-darwin* } } */
> > /* { dg-require-effective-target powerpc_fprs } */
> > /* { dg-options "-O2 -ffast-math -mdejagnu-cpu=power5 -mno-altivec
> > -mabi=altivec -fno-unroll-loops" } */
> > -/* { dg-final { scan-assembler-times "vaddfp" 1 } } */
> > +/* { dg-final { scan-assembler-times "vaddfp" 2 } } */
> > /* { dg-final { scan-assembler-times "xvaddsp" 1 } } */
> > /* { dg-final { scan-assembler-times "fadds" 1 } } */
> >
> > @@ -18,10 +18,6 @@
> > #error "__VSX__ should not be defined."
> > #endif
> >
> > -#pragma GCC target("altivec,vsx")
> > -#include <altivec.h>
> > -#pragma GCC reset_options
> > -
> > #pragma GCC push_options
> > #pragma GCC target("altivec,no-vsx")
>
> Is this illegal? We're using -mcpu=power5, which should always flag
> an error if we use it with -maltivec or -mvsx. Isn't that what's
> happening above (before your patch too) by the pragma adding -maltivec
> to the compile options? Or does the pragma target through out all
> all of our dg-options? If so, aren't we using the default -mcpu=
> values (Power4 for BE and Power8 for LE) which would seem ok on LE,
> but a problem on BE.
I'm not sure what the question is. Without the patch as I said, if you use
-mvsx or #pragma GCC target("vsx"), it essentially sets the cpu to at least
power7. The patch is to make it illega to use -mvsx to raise the cpu level.
>
> > -#pragma GCC target("vsx")
> > +/* cpu=power7 must be used to enable VSX. */
> > +#pragma GCC target("cpu=power7,vsx")
>
> Is there a reason you're adding -mvsx too, since the -mcpu=power7
> should enable VSX implicitly. ...or does the -mno-altivec -mno-vsx
> in the dg-options stick around so we beed to override them with
> the explicit -mvsx?
I was just trying to make the test case work. I just added the cpu=power7 into
the pragma.
>
>
> > for (i = 0; i < n; i++)
> > - a[i] = vec_add (b[i], c[i]);
> > + a[i] = b[i] + c[i];
>
> Much better, thanks! I dislike it when people use vector intrinsics
> when straight C code is cleaner and easier to read.
>
>
>
>
>
> > diff --git a/gcc/testsuite/gcc.target/powerpc/pr115688.c
> > b/gcc/testsuite/gcc.target/powerpc/pr115688.c
> > index 5222e66ef17..00c7c301436 100644
> > --- a/gcc/testsuite/gcc.target/powerpc/pr115688.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/pr115688.c
> > @@ -7,7 +7,8 @@
> >
> > /* Verify there is no ICE under 32 bit env. */
> >
> > -__attribute__((target("vsx")))
> > +/* cpu=power7 must be used to enable VSX. */
> > +__attribute__((target("cpu=power7,vsx")))
> > int test (void)
> > {
> > return 0;
>
> Same question as above. Why the need for adding -mvsx here?
>
> Peter
>
>
>
--
Michael Meissner, IBM
PO Box 98, Ayer, Massachusetts, USA, 01432
email: [email protected]