aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.vnet.ibm.com>2016-05-24 17:21:18 +0000
committerKelvin Nilsen <kelvin@gcc.gnu.org>2016-05-24 17:21:18 +0000
commit27bad558289e5d2a8e9d974ebcf9715c896139af (patch)
tree755fde5dd48708d81eda1bd2e84c9b50d738aa9f
parent081fdda62b19bed707a53c32819a871fcedb29b7 (diff)
downloadgcc-27bad558289e5d2a8e9d974ebcf9715c896139af.zip
gcc-27bad558289e5d2a8e9d974ebcf9715c896139af.tar.gz
gcc-27bad558289e5d2a8e9d974ebcf9715c896139af.tar.bz2
p9-vpermr.c: New test for ISA 3.0 vpermr support.
gcc/testsuite/ChangeLog: 2016-05-24 Michael Meissner <meissner@linux.vnet.ibm.com> Kelvin Nilsen <kelvin@gcc.gnu.org> * gcc.target/powerpc/p9-vpermr.c: New test for ISA 3.0 vpermr support. Co-Authored-By: Kelvin Nilsen <kelvin@gcc.gnu.org> From-SVN: r236655
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/p9-vpermr.c21
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d27369c..3eef44e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-24 Michael Meissner <meissner@linux.vnet.ibm.com>
+ Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/p9-vpermr.c: New test for ISA 3.0 vpermr
+ support.
+
2016-05-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/69872
diff --git a/gcc/testsuite/gcc.target/powerpc/p9-vpermr.c b/gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
new file mode 100644
index 0000000..7e7a266
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
@@ -0,0 +1,21 @@
+/* { dg-do compile { target { powerpc64le-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+/* { dg-options "-mcpu=power9 -O2" } */
+
+/* Test generation of VPERMR/XXPERMR on ISA 3.0 in little endian. */
+
+#include <altivec.h>
+
+vector long long
+permute (vector long long *p, vector long long *q, vector unsigned char mask)
+{
+ vector long long a = *p;
+ vector long long b = *q;
+
+ /* Force a, b to be in altivec registers to select vpermr insn. */
+ __asm__ (" # a: %x0, b: %x1" : "+v" (a), "+v" (b));
+
+ return vec_perm (a, b, mask);
+}
+
+/* { dg-final { scan-assembler "vpermr\|xxpermr" } } */