1 /* { dg-do compile { target { powerpc64le-*-* } } } */
2 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
3 /* { dg-options "-mcpu=power8 -O3" } */
4 /* { dg-final { scan-assembler "lxvd2x" } } */
5 /* { dg-final { scan-assembler "stxvd2x" } } */
6 /* { dg-final { scan-assembler-not "xxpermdi" } } */
12 int ca
[N
] __attribute__((aligned(16)));
13 int cb
[N
] __attribute__((aligned(16)));
14 int cc
[N
] __attribute__((aligned(16)));
15 int cd
[N
] __attribute__((aligned(16)));
18 __attribute__((noinline
)) void foo ()
21 vector
int va
, vb
, vc
, vd
, tmp
;
22 vector
unsigned int threes
= vec_splat_u32(3);
23 for (i
= 0; i
< N
; i
+=4) {
24 vb
= vec_vsx_ld (0, &cb
[i
]);
25 vc
= vec_vsx_ld (0, &cc
[i
]);
26 vd
= vec_vsx_ld (0, &cd
[i
]);
27 tmp
= vec_add (vb
, vc
);
28 tmp
= vec_sub (tmp
, vd
);
29 tmp
= vec_sra (tmp
, threes
);
31 vec_vsx_st (tmp
, 0, &ca
[i
]);
35 __attribute__((noinline
)) void init ()
38 for (i
= 0; i
< N
; ++i
) {
50 for (i
= 0; i
< N
; ++i
)
51 if (ca
[i
] != (-3 * i
- 1969) >> 3)