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