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



Reply via email to