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