P9LE generated instruction is not worse than P8LE. mtvsrdd;xxlnot;stxv vs. not;not;std;std. Update the test case to fix failures.
gcc/testsuite/ChangeLog: 2019-11-15 Luo Xiong Hu <luo...@linux.ibm.com> testsuite/pr92398 * gcc.target/powerpc/pr72804.h: New. * gcc.target/powerpc/pr72804.p8.c: New. * gcc.target/powerpc/pr72804.c: Rename to ... * gcc.target/powerpc/pr72804.p9.c: ... this one. --- gcc/testsuite/gcc.target/powerpc/pr72804.h | 17 ++++++++++++++ gcc/testsuite/gcc.target/powerpc/pr72804.p8.c | 16 ++++++++++++++ .../powerpc/{pr72804.c => pr72804.p9.c} | 22 ++++++------------- 3 files changed, 40 insertions(+), 15 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr72804.h create mode 100644 gcc/testsuite/gcc.target/powerpc/pr72804.p8.c rename gcc/testsuite/gcc.target/powerpc/{pr72804.c => pr72804.p9.c} (59%) diff --git a/gcc/testsuite/gcc.target/powerpc/pr72804.h b/gcc/testsuite/gcc.target/powerpc/pr72804.h new file mode 100644 index 00000000000..8a5ea93cc17 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr72804.h @@ -0,0 +1,17 @@ +/* This test code is included into pr72804.p8.c and pr72804.p9.c + The two files have the tests for the number of instructions generated for + P8LE versus P9LE. */ + +__int128_t +foo (__int128_t *src) +{ + return ~*src; +} + +void +bar (__int128_t *dst, __int128_t src) +{ + *dst = ~src; +} + + diff --git a/gcc/testsuite/gcc.target/powerpc/pr72804.p8.c b/gcc/testsuite/gcc.target/powerpc/pr72804.p8.c new file mode 100644 index 00000000000..ad968769aae --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr72804.p8.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target lp64 } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O2 -mvsx -mdejagnu-cpu=power8" } */ + +/* { dg-final { scan-assembler-times "not " 4 {xfail be} } } */ +/* { dg-final { scan-assembler-times "std " 2 {xfail be} } } */ +/* { dg-final { scan-assembler-times "ld " 2 } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ +/* { dg-final { scan-assembler-not "xxpermdi" } } */ +/* { dg-final { scan-assembler-not "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "mfvsrd" } } */ + +/* Source code for the test in pr72804.h */ +#include "pr72804.h" diff --git a/gcc/testsuite/gcc.target/powerpc/pr72804.c b/gcc/testsuite/gcc.target/powerpc/pr72804.p9.c similarity index 59% rename from gcc/testsuite/gcc.target/powerpc/pr72804.c rename to gcc/testsuite/gcc.target/powerpc/pr72804.p9.c index 10e37caed6b..2059d7df1a2 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr72804.c +++ b/gcc/testsuite/gcc.target/powerpc/pr72804.p9.c @@ -1,25 +1,17 @@ /* { dg-do compile { target { lp64 } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-O2 -mvsx -fno-inline-functions --param max-inline-insns-single-O2=200" } */ +/* { dg-options "-O2 -mvsx -mdejagnu-cpu=power9" } */ -__int128_t -foo (__int128_t *src) -{ - return ~*src; -} - -void -bar (__int128_t *dst, __int128_t src) -{ - *dst = ~src; -} - -/* { dg-final { scan-assembler-times "not " 4 } } */ -/* { dg-final { scan-assembler-times "std " 2 } } */ +/* { dg-final { scan-assembler-times "not " 2 } } */ +/* { dg-final { scan-assembler-times "std " 0 } } */ /* { dg-final { scan-assembler-times "ld " 2 } } */ /* { dg-final { scan-assembler-not "lxvd2x" } } */ /* { dg-final { scan-assembler-not "stxvd2x" } } */ /* { dg-final { scan-assembler-not "xxpermdi" } } */ /* { dg-final { scan-assembler-not "mfvsrd" } } */ /* { dg-final { scan-assembler-not "mfvsrd" } } */ + +/* Source code for the test in pr72804.h */ +#include "pr72804.h" + -- 2.21.0.777.g83232e3864