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