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 -mcpu=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 
foos(vector signed char a,vector signed char b)18 long foos (vector signed char a, vector signed char b)
19 {
20   return vec_extract (vec_vbpermq (a, b), OFFSET);
21 }
22 
foou(vector unsigned char a,vector unsigned char b)23 long foou (vector unsigned char a, vector unsigned char b)
24 {
25   return vec_extract (vec_vbpermq (a, b), OFFSET);
26 }
27 
28