1 /* { dg-do compile { target powerpc*-*-* } } */
2 /* { dg-require-effective-target powerpc_altivec_ok } */
3 /* { dg-options "-maltivec" } */
5 /* Origin: Aldy Hernandez <aldyh@redhat.com> */
12 vector pixel
*varpixel
;
13 vector
signed char *vecchar
;
14 vector
signed int *vecint
;
15 vector
signed short *vecshort
;
16 vector
unsigned char *vecuchar
;
17 vector
unsigned int *vecuint
;
18 vector
bool int *vecubi
;
19 vector
bool char *vecubci
;
20 vector
bool short int *vecubsi
;
21 vector
unsigned short *vecushort
;
22 vector
bool int *vecbint
;
23 vector
float *vecfloat
;
27 *vecfloat
++ = vec_andc((vector
bool int)vecint
[0], vecfloat
[1]);
28 *vecfloat
++ = vec_andc(vecfloat
[0], (vector
bool int)vecint
[1]);
29 *vecfloat
++ = vec_vxor((vector
bool int)vecint
[0], vecfloat
[1]);
30 *vecfloat
++ = vec_vxor(vecfloat
[0], (vector
bool int)vecint
[1]);
31 *varpixel
++ = vec_packpx(vecuint
[0], vecuint
[1]);
32 *varpixel
++ = vec_vpkpx(vecuint
[0], vecuint
[1]);
33 *vecshort
++ = vec_vmulesb(vecchar
[0], vecchar
[1]);
34 *vecshort
++ = vec_vmulosb(vecchar
[0], vecchar
[1]);
35 *vecint
++ = vec_ld(var_int
[0], intp
[1]);
36 *vecint
++ = vec_lde(var_int
[0], intp
[1]);
37 *vecint
++ = vec_ldl(var_int
[0], intp
[1]);
38 *vecint
++ = vec_lvewx(var_int
[0], intp
[1]);
39 *vecint
++ = vec_unpackh(vecshort
[0]);
40 *vecint
++ = vec_unpackl(vecshort
[0]);
41 *vecushort
++ = vec_andc((vector
bool short)vecshort
[0], vecushort
[1]);
42 *vecushort
++ = vec_andc(vecushort
[0], (vector
bool short)vecshort
[1]);
43 *vecushort
++ = vec_vxor((vector
bool short)vecshort
[0], vecushort
[1]);
44 *vecushort
++ = vec_vxor(vecushort
[0], (vector
bool short)vecshort
[1]);
45 *vecuint
++ = vec_ld(var_int
[0], uintp
[1]);
46 *vecuint
++ = vec_lvx(var_int
[0], uintp
[1]);
47 *vecuint
++ = vec_vmsumubm(vecuchar
[0], vecuchar
[1], vecuint
[2]);
48 *vecuchar
++ = vec_xor(vecuchar
[0], (vector
unsigned char)vecchar
[1]);
50 *vecubi
++ = vec_unpackh(vecubsi
[0]);
51 *vecuint
++ = vec_unpackh(varpixel
[0]);
52 *vecubsi
++ = vec_unpackh(vecubci
[0]);
53 *vecshort
++ = vec_unpackh(vecchar
[0]);
55 *vecubi
++ = vec_unpackl(vecubsi
[0]);
56 *vecuint
++ = vec_unpackl(varpixel
[0]);
57 *vecubsi
++ = vec_unpackl(vecubci
[0]);
58 *vecshort
++ = vec_unpackl(vecchar
[0]);
76 vec_andc xxlnor (vnor AIX)
85 /* { dg-final { scan-assembler-times "vpkpx" 2 } } */
86 /* { dg-final { scan-assembler-times "vmulesb" 1 } } */
87 /* { dg-final { scan-assembler-times "vmulosb" 1 } } */
88 /* { dg-final { scan-assembler-times {\mlvx\M} 0 { target { powerpc*-*-linux* } } } } */
89 /* { dg-final { scan-assembler-times {\mlvx\M} 42 { target { powerpc*-*-aix* } } } } */
90 /* { dg-final { scan-assembler-times "lvewx" 2 } } */
91 /* { dg-final { scan-assembler-times "lvxl" 1 } } */
92 /* { dg-final { scan-assembler-times "vupklsh" 2 } } */
93 /* { dg-final { scan-assembler-times "vupkhsh" 2 } } */
94 /* { dg-final { scan-assembler-times {\mxxlnor\M|\mvnor\M} 4 } } */
95 /* { dg-final { scan-assembler-times {\mxxland\M|\mvand\M} 4 } } */
96 /* { dg-final { scan-assembler-times {\mxxlxor\M|\mvxor\M} 5 } } */
97 /* { dg-final { scan-assembler-times "xxlandc" 0 } } */
98 /* { dg-final { scan-assembler-times "vmsumubm" 1 } } */
99 /* { dg-final { scan-assembler-times "vupklpx" 1 } } */
100 /* { dg-final { scan-assembler-times "vupklsx" 0 } } */
101 /* { dg-final { scan-assembler-times "vupklsb" 2 } } */
102 /* { dg-final { scan-assembler-times "vupkhpx" 1 } } */
103 /* { dg-final { scan-assembler-times "vupkhsb" 2 } } */