GCC Maintainers: The following patch fixes the instruction count tests for various builtin testcases that fail on AIX. The expected instruction counts differ in a few cases between Linux and AIX. An AIX instruction target was added to the instruction count tests that differ on AIX and Linux. Additionally, the patch contains a fix for a count that is wrong in general.
The patch has been tested on powerpc64le-unknown-linux-gnu (Power 8 LE) powerpc64-unknown-linux-gnu (Power 8 BE) AIX 7200-00-01-1543 (Power 8 BE) With no regressions. Please let me know if the patch looks OK for GCC mainline. Carl Love ---------------------------------------------------------------------- gcc/testsuite/ChangeLog: 2018-06-12 Carl Love <c...@us.ibm.com> * gcc.target/powerpc/altivec-7.c: Add qualifiers for counts on AIX versus Linux. * gcc.target/powerpc/builtins-1.c: Add qualifiers for counts on AIX versus Linux. * gcc.target/powerpc/builtins-4.c: Add qualifiers for counts on AIX versus Linux. * gcc.target/powerpc/vsx-vector-6.p7.c: Fix xxlnor BE expected count. --- gcc/testsuite/gcc.target/powerpc/altivec-7.c | 17 +++++++++++------ gcc/testsuite/gcc.target/powerpc/builtins-1.c | 11 +++++++---- gcc/testsuite/gcc.target/powerpc/builtins-4.c | 7 ++++--- gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c | 2 +- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-7.c b/gcc/testsuite/gcc.target/powerpc/altivec-7.c index b61092c..b691d20 100644 --- a/gcc/testsuite/gcc.target/powerpc/altivec-7.c +++ b/gcc/testsuite/gcc.target/powerpc/altivec-7.c @@ -85,17 +85,22 @@ int main () /* { dg-final { scan-assembler-times "vpkpx" 2 } } */ /* { dg-final { scan-assembler-times "vmulesb" 1 } } */ /* { dg-final { scan-assembler-times "vmulosb" 1 } } */ -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 42 { target le } } } */ -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 4 { target be } } } */ +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 42 { target { le && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 4 { target { be && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 0 { target { powerpc*-*-aix* } } } } */ /* { dg-final { scan-assembler-times "lvewx" 2 } } */ /* { dg-final { scan-assembler-times "lvxl" 1 } } */ /* { dg-final { scan-assembler-times "vupklsh" 2 } } */ /* { dg-final { scan-assembler-times "vupkhsh" 2 } } */ -/* { dg-final { scan-assembler-times "xxlnor" 4 } } */ -/* { dg-final { scan-assembler-times "xxland" 4 } } */ -/* { dg-final { scan-assembler-times "xxlxor" 5 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 0 { target { powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxlnor" 4 { target { !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxland" 0 { target { powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxland" 4 { target { !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxlxor" 0 { target { powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxlxor" 5 { target { !powerpc*-*-aix* } } } } */ /* { dg-final { scan-assembler-times "xxlandc" 0 } } */ -/* { dg-final { scan-assembler-times "lvx" 1 } } */ +/* { dg-final { scan-assembler-times "lvx" 1 { target { !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "lvx" 43 { target { powerpc*-*-aix* } } } } */ /* { dg-final { scan-assembler-times "vmsumubm" 1 } } */ /* { dg-final { scan-assembler-times "vupklpx" 1 } } */ /* { dg-final { scan-assembler-times "vupklsx" 0 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-1.c b/gcc/testsuite/gcc.target/powerpc/builtins-1.c index 45727b9..94ac95e 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-1.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-1.c @@ -333,8 +333,9 @@ int main () /* { dg-final { scan-assembler-times "xxmrglw" 8 } } */ /* { dg-final { scan-assembler-times "vmrglh" 8 } } */ /* { dg-final { scan-assembler-times "xxlnor" 6 } } */ -/* { dg-final { scan-assembler-times "xxlor" 11 { target { ilp32 } } } } */ -/* { dg-final { scan-assembler-times "xxlor" 7 { target { lp64 } } } } */ +/* { dg-final { scan-assembler-times "xxlor" 11 { target { ilp32 && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxlor" 7 { target { lp64 && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "xxlor" 7 { target { powerpc*-*-aix* } } } } */ /* { dg-final { scan-assembler-times "vpksdus" 2 } } */ /* { dg-final { scan-assembler-times "vperm" 4 } } */ /* { dg-final { scan-assembler-times "xvrdpi" 2 } } */ @@ -343,8 +344,10 @@ int main () /* { dg-final { scan-assembler-times "divd" 8 { target lp64 } } } */ /* { dg-final { scan-assembler-times "divdu" 2 { target lp64 } } } */ /* { dg-final { scan-assembler-times "mulld" 4 { target lp64 } } } */ -/* { dg-final { scan-assembler-times "bl __divdi3" 3 { target ilp32 } } } */ -/* { dg-final { scan-assembler-times "bl __udivdi3" 3 { target ilp32 } } } */ +/* { dg-final { scan-assembler-times "bl __divdi3" 3 { target ilp32 && !powerpc*-*-\ +aix* } } } */ +/* { dg-final { scan-assembler-times "bl __udivdi3" 3 { target ilp32 && !powerpc*-*-\ +aix* } } } */ /* { dg-final { scan-assembler-times "mullw" 12 { target ilp32 } } } */ /* { dg-final { scan-assembler-times "mulhwu" 4 { target ilp32 } } } */ /* { dg-final { scan-assembler-times "xxmrgld" 0 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-4.c b/gcc/testsuite/gcc.target/powerpc/builtins-4.c index c5249fe..8cc972d 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-4.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-4.c @@ -162,6 +162,7 @@ test_sll_vuill_vuill_vuc (vector unsigned long long int x, /* { dg-final { scan-assembler-times "xvnabsdp" 1 } } */ /* { dg-final { scan-assembler-times "vslo" 4 } } */ /* { dg-final { scan-assembler-times "xxlor" 30 } } */ -/* { dg-final { scan-assembler-times "vsl" 45 { target le } } } */ -/* { dg-final { scan-assembler-times "vsl" 45 { target { be && ilp32 } } } } */ -/* { dg-final { scan-assembler-times "vsl" 59 { target { be && lp64 } } } } */ +/* { dg-final { scan-assembler-times "vsl" 45 { target { le && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "vsl" 45 { target { { be && ilp32 } && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "vsl" 59 { target { { be && lp64 } && !powerpc*-*-aix* } } } } */ +/* { dg-final { scan-assembler-times "vsl" 80 { target { powerpc*-*-aix* } } } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c b/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c index 66ec064..ef7eb1a 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c @@ -10,7 +10,7 @@ /* { 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" 8 { target be } } } */ +/* { 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 } } } */ -- 2.7.4