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 <[email protected]>
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)