p9-vpermr.c: New test for ISA 3.0 vpermr support.
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Tue, 24 May 2016 17:21:18 +0000 (17:21 +0000)
committerKelvin Nilsen <kelvin@gcc.gnu.org>
Tue, 24 May 2016 17:21:18 +0000 (17:21 +0000)
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

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/p9-vpermr.c [new file with mode: 0644]

index d27369c..3eef44e 100644 (file)
@@ -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 (file)
index 0000000..7e7a266
--- /dev/null
@@ -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" } } */