1 /* { dg-do run { target { powerpc64le-*-* } } } */
2 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
3 /* { dg-options "-mcpu=power8 -O3" } */
9 int ca
[N
] __attribute__((aligned(16)));
10 int cb
[N
] __attribute__((aligned(16)));
11 int cc
[N
] __attribute__((aligned(16)));
12 int cd
[N
] __attribute__((aligned(16)));
15 __attribute__((noinline
)) void foo ()
18 vector
int va
, vb
, vc
, vd
, tmp
;
19 vector
unsigned int threes
= vec_splat_u32(3);
20 for (i
= 0; i
< N
; i
+=4) {
21 vb
= vec_vsx_ld (0, &cb
[i
]);
22 vc
= vec_vsx_ld (0, &cc
[i
]);
23 vd
= vec_vsx_ld (0, &cd
[i
]);
24 tmp
= vec_add (vb
, vc
);
25 tmp
= vec_sub (tmp
, vd
);
26 tmp
= vec_sra (tmp
, threes
);
28 vec_vsx_st (tmp
, 0, &ca
[i
]);
32 __attribute__((noinline
)) void init ()
35 for (i
= 0; i
< N
; ++i
) {
47 for (i
= 0; i
< N
; ++i
)
48 if (ca
[i
] != (-3 * i
- 1969) >> 3)