8f9763cc8888076e0224e2cf4367e3e8a8ed4d13
1 /* { dg-do compile { target { powerpc64le-*-* } } } */
2 /* { dg-options "-mdejagnu-cpu=power8 -O3" } */
3 /* { dg-final { scan-assembler "lxvd2x" } } */
4 /* { dg-final { scan-assembler "stxvd2x" } } */
5 /* { dg-final { scan-assembler-not "xxpermdi" } } */
11 int ca
[N
] __attribute__((aligned(16)));
12 int cb
[N
] __attribute__((aligned(16)));
13 int cc
[N
] __attribute__((aligned(16)));
14 int cd
[N
] __attribute__((aligned(16)));
17 __attribute__((noinline
)) void foo ()
20 vector
int va
, vb
, vc
, vd
, tmp
;
21 vector
unsigned int threes
= vec_splat_u32(3);
22 for (i
= 0; i
< N
; i
+=4) {
23 vb
= vec_vsx_ld (0, &cb
[i
]);
24 vc
= vec_vsx_ld (0, &cc
[i
]);
25 vd
= vec_vsx_ld (0, &cd
[i
]);
26 tmp
= vec_add (vb
, vc
);
27 tmp
= vec_sub (tmp
, vd
);
28 tmp
= vec_sra (tmp
, threes
);
30 vec_vsx_st (tmp
, 0, &ca
[i
]);
34 __attribute__((noinline
)) void init ()
37 for (i
= 0; i
< N
; ++i
) {
49 for (i
= 0; i
< N
; ++i
)
50 if (ca
[i
] != (-3 * i
- 1969) >> 3)