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. > /* { 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. > -#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? > 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