1 /* { dg-do compile { target powerpc*-*-* } } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-mvsx" } */
4
5 /* Variations of tests that require VSX support. This is a variation of
6 the altivec-13.c testcase. */
7
8 #include <altivec.h>
9
10 void foo (void)
11 {
12
13 vector signed char vsc1, vsc2, vscz;
14 vector unsigned char vuc1, vuc2, vucz;
15 vector bool long long vubll1, vubll2, vubllz;
16 vector signed int long long vsill1, vsill2, vsillz;
17 vector unsigned int long long vuill1, vuill2, vuillz;
18 vector double vd1, vd2, vdz;
19
20 vubllz = vec_sld( vubll1, vubll2, 1 );
21 vsillz = vec_sld( vsill1, vsill2, 1 );
22 vuillz = vec_sld( vuill1, vuill2, 1 );
23
24 vsillz = vec_srl(vsill1, vuc2);
25 vuillz = vec_srl(vuill1, vuc2);
26
27 vsillz = vec_sro(vsill1, vsc2);
28 vsillz = vec_sro(vsill1, vuc2);
29 vuillz = vec_sro(vuill1, vsc2);
30 vuillz = vec_sro(vuill1, vuc2);
31
32 vdz = vec_sld( vd1, vd2, 1 );
33 }
34
35 /* Expected results:
36 vec_sld vsldoi
37 vec_srl vsr
38 vec_sro vsro */
39
40 /* { dg-final { scan-assembler-times "vsldoi" 4 } } */
41 /* { dg-final { scan-assembler-times "vsr " 2 } } */
42 /* { dg-final { scan-assembler-times "vsro" 4 } } */