1 /* { dg-do compile { target powerpc*-*-* } } */
2 /* { dg-require-effective-target powerpc_p8vector_ok } */
3 /* { dg-options "-mpower8-vector -mvsx" } */
4 
5 #include <altivec.h>
6 
7 vector bool int *vecubi;
8 vector bool long long *vecublli;
9 vector signed int *vecsi;
10 vector signed long long int *vecslli;
11 
main()12 int main ()
13 {
14 
15   /*  use of ‘long long’ in AltiVec types requires -mvsx */
16   /* __builtin_altivec_vupkhsw and __builtin_altivec_vupklsw
17      requires the -mpower8-vector option */
18   *vecublli++ = vec_unpackh(vecubi[0]);
19   *vecublli++ = vec_unpackl(vecubi[0]);
20   *vecslli++ = vec_unpackh(vecsi[0]);
21   *vecslli++ = vec_unpackl(vecsi[0]);
22 
23   return 0;
24 }
25 
26 /* Expected results:
27      vec_unpackh                    vupklsw
28      vec_unpackl                    vupkhsw
29 */
30 
31 /* { dg-final { scan-assembler-times "vupklsw" 2 } } */
32 /* { dg-final { scan-assembler-times "vupkhsw" 2 } } */
33