Hi Bill,

On Tue, Feb 05, 2019 at 02:14:16PM -0600, Bill Seurer wrote:
> [PATCH, rs6000] Fix instruction counts on powerpc64 test cases.
> 
> This patch fixes the assembler instruction counts for some test cases
> that started failing due to changes in code generation.  The targets
> were adjusted a bit as well to avoid generating BE/LE endian code on
> unsupported platforms.

>       * gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c: Update 
>       instruction counts and target.

(Trailing space after "Update").

>  /* { dg-final { scan-assembler-times "xvabsdp" 1 } } */
>  /* { dg-final { scan-assembler-times "xvadddp" 1 } } */
> -/* { dg-final { scan-assembler-times "xxlnor" 8 { target le } } } */
> -/* { dg-final { scan-assembler-times "xxlnor" 7 { target be } } } */
> -/* { dg-final { scan-assembler-times "xvcmpeqdp" 5 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpeqdp" 6 { target be }} } */
> -/* { dg-final { scan-assembler-times "xvcmpeqdp." 5 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpeqdp." 6 { target be } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgtdp" 9 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgtdp" 8 { target be } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgtdp." 9 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgtdp." 8 { target be } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgedp" 6 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgedp" 7 { target be } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgedp." 6 { target le } } } */
> -/* { dg-final { scan-assembler-times "xvcmpgedp." 7 { target be } } } */
> +/* { dg-final { scan-assembler-times "xxlnor" 5 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 1 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 5 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\s} 2 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 5 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgedp\s} 1 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgedp\.\s} 6 } } */
>  /* { dg-final { scan-assembler-times "xvrdpim" 1 } } */
>  /* { dg-final { scan-assembler-times "xvmaddadp" 1 } } */
>  /* { dg-final { scan-assembler-times "xvmsubadp" 1 } } */

As a future cleanup / robustification, all the other insns could use \m
and \M as well.  For example xxlor would match xxlorc.  I don't know if
there are currently any possible conflicts, but :-)

> Index: gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c
> ===================================================================
> --- gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c        (revision 
> 268524)
> +++ gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c        (working copy)
> @@ -1,16 +1,15 @@
> -/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
> +/* { dg-do compile { target { lp64 } } } */

No braces around "lp64" please.  They are needed when there is more than
one selector in there, in an expression with && or whatnot (this is parsed
by custom code, not by the tcl parser).

> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 1 { target le } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 5 { target le } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 1 { target be } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 5 { target be } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\s} 2 { target le } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 6 { target le } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\s} 2 { target be } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 6 { target be } } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgedp\s} 2 } } */
> +/* { dg-final { scan-assembler-times {\mxvcmpgedp\.\s} 4 } } */

"le" and "be" are now identical, so unify them?

> --- gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c        (revision 
> 268524)
> +++ gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c        (working copy)
> @@ -1,4 +1,4 @@
> -/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
> +/* { dg-do compile { target { lp64 && le } } } */
>  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
>  /* { dg-require-effective-target powerpc_p9vector_ok } */
>  /* { dg-options "-mvsx -O2 -mcpu=power9" } */

I don't know if we should limit the p9 testcases to LE only.  If no one
ever tests GCC on p9 BE, leaving out the "le" works fine; and if people
_do_ test on it, we will want to know if it doesn't work.

Okay for trunk with those things fixed.  (The \m\M thing isn't required of
course).  Thanks!


Segher

Reply via email to