1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-require-effective-target powerpc_p8vector_ok } */
4 /* { dg-options "-O3 -mdejagnu-cpu=power8" } */
5 /* { dg-final { scan-assembler "vbpermq" } } */
6 /* { dg-final { scan-assembler "mfvsrd" } } */
7 /* { dg-final { scan-assembler-not "stfd" } } */
8 /* { dg-final { scan-assembler-not "stxvd2x" } } */
9
10 #include <altivec.h>
11
12 #if __LITTLE_ENDIAN__
13 #define OFFSET 1
14 #else
15 #define OFFSET 0
16 #endif
17
18 long foos (vector signed char a, vector signed char b)
19 {
20 return vec_extract (vec_vbpermq (a, b), OFFSET);
21 }
22
23 long foou (vector unsigned char a, vector unsigned char b)
24 {
25 return vec_extract (vec_vbpermq (a, b), OFFSET);
26 }
27