Hi, This fixes the scan-assembler errors as seen on power9. While verifying that fix and ensuring coverage, cleaned up some nearby bits as well.
builtins-3.c: Add/update options and skip-if stanzas, this test specifically targets vsx/power6. builtins-3-p9.c: Update stanzas to require -mcpu=power9 capability. For better coverage, added tests here (from builtins-3.c) that have different code-gen when targeting p9. builtins-3-p8.c: Update stanzas to require -mcpu=power8 capability. builtins-3-runnable.c: Update requires to indicate p8vector_hw is required for running the test. Fixed the do-not-override stanza typo so this test can run. builtins-3-vec_reve-runnable.c: Update stanzas to require vsx_hw capability to run. Removed the skip-if stanza (by direct inspection, this runs OK on P8,P9, and vsx_hw requirement prevents run attempts on earlier systems). Sniff-testing across systems looks good. Will kick off a regtest in clean environments shortly. OK for trunk? (and gcc-7 backport)? Thanks -Will [testsuite] 2018-02-15 Will Schmidt <will_schm...@vnet.ibm.com> target/pr84371 * gcc.target/powerpc/builtins-3-p8.c: Update stanzas. * gcc.target/powerpc/builtins-3-p9.c: Update stanzas, Enhance test. * gcc.target/powerpc/builtins-3-runnable.c: Update stanzas. * gcc.target/powerpc/builtins-3-vec_reve_runnable.c: Same. * gcc.target/powerpc/builtins-3.c: Same. diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c index 83d538b..a586805 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mcpu=power8" } */ +/* { dg-options "-maltivec -mcpu=power8" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ #include <altivec.h> vector bool long long test_eq_long_long (vector bool long long x, vector bool long long y) diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c index 9dc53da..146f8b7 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-options "-mcpu=power9 -O1" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ #include <altivec.h> vector bool char test_ne_char (vector bool char x, vector bool char y) @@ -45,28 +46,78 @@ test_vull_bperm_vull_vuc (vector unsigned long long x, vector unsigned char y) { return vec_bperm (x, y); } +vector signed char +test_nabs_char (vector signed char x) +{ + return vec_nabs (x); +} + +vector short +test_nabs_short (vector short x) +{ + return vec_nabs (x); +} + +vector int +test_nabs_int (vector int x) +{ + return vec_nabs (x); +} + + +vector signed char +test_neg_char (vector signed char x) +{ + return vec_neg (x); +} + +vector short +test_neg_short (vector short x) +{ + return vec_neg (x); +} + +vector int +test_neg_int (vector int x) +{ + return vec_neg (x); +} + /* Expected test results: test_ne_char 1 vcmpneb test_ne_short 1 vcmpneh test_ne_int 1 vcmpnew test_ne_long 1 vcmpequd, 1 xxlnor inst test_neg_long_long 1 vnegd test_vull_bperm_vull_vuc 1 vbpermd test_nabs_long_long (-O0) 1 xxspltib, 1 vsubudm, 1 vminsd test_nabs_long_long (-O1) 1 vnegd, vminsd + test_nabs_char (P9) 1 xxspltib, 1 vsububm, 1 vminsb + test_nabs_short (P9) 1 xxspltib, 1 vsubuhm, 1 vminsh + test_nabs_int (P9) 1 vnegw, 1 vminsw + test_neg_char (P9) 1 xxspltib, 1 vsububm + test_neg_short (P9) 1 xxspltib, 1 vsubuhm + test_neg_int (P9) 1 vnegw */ /* { dg-final { scan-assembler-times "vcmpneb" 1 } } */ /* { dg-final { scan-assembler-times "vcmpneh" 1 } } */ /* { dg-final { scan-assembler-times "vcmpnew" 1 } } */ /* { dg-final { scan-assembler-times "vcmpequd" 1 } } */ /* { dg-final { scan-assembler-times "xxlnor" 1 } } */ -/* { dg-final { scan-assembler-times "xxspltib" 0 } } */ +/* { dg-final { scan-assembler-times "xxspltib" 4 } } */ /* { dg-final { scan-assembler-times "vsubudm" 0 } } */ +/* { dg-final { scan-assembler-times "vsububm" 2 } } */ +/* { dg-final { scan-assembler-times "vsubuhm" 2 } } */ +/* { dg-final { scan-assembler-times "vsubuwm" 0 } } */ +/* { dg-final { scan-assembler-times "vminsb" 1 } } */ +/* { dg-final { scan-assembler-times "vminsh" 1 } } */ +/* { dg-final { scan-assembler-times "vminsw" 1 } } */ /* { dg-final { scan-assembler-times "vminsd" 1 } } */ /* { dg-final { scan-assembler-times "vnegd" 2 } } */ +/* { dg-final { scan-assembler-times "vnegw" 2 } } */ /* { dg-final { scan-assembler-times "vbpermd" 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c index 1549817..43de454 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c @@ -1,9 +1,9 @@ -/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-do run { target { p8vector_hw } } } */ /* { dg-require-effective-target vsx_hw } */ /* { dg-options "-O2 -mvsx -mcpu=power8" } */ -/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=power8" } } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ #include <altivec.h> // vector #ifdef DEBUG #include <stdio.h> diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c index f7c3c3d..de378e0 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c @@ -1,7 +1,6 @@ -/* { dg-do run { target { powerpc*-*-linux* } } } */ -/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ +/* { dg-do run { target { vsx_hw } } } */ /* { dg-options "-O2 -mvsx -mcpu=power7" } */ #include <altivec.h> // vector #ifdef DEBUG diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3.c b/gcc/testsuite/gcc.target/powerpc/builtins-3.c index 833116e..b8a6dcd 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-3.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-3.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_vsx_ok } */ -/* { dg-options "-maltivec -mvsx" } */ +/* { dg-options "-O2 -mvsx -mcpu=power6" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */ #include <altivec.h> vector bool char test_eq_char (vector bool char x, vector bool char y)