1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3 /* { dg-require-effective-target powerpc_vsx_ok } */
4 /* { dg-options "-O2 -ftree-vectorize -mcpu=power7" } */
5 /* { dg-final { scan-assembler "xvadddp" } } */
6 /* { dg-final { scan-assembler "xvsubdp" } } */
7 /* { dg-final { scan-assembler "xvmuldp" } } */
8 /* { dg-final { scan-assembler "xvdivdp" } } */
9 /* { dg-final { scan-assembler "xvmadd" } } */
10 /* { dg-final { scan-assembler "xvmsub" } } */
11 
12 __vector double a, b, c, d;
13 
14 void
vector_add(void)15 vector_add (void)
16 {
17   a = b + c;
18 }
19 
20 void
vector_subtract(void)21 vector_subtract (void)
22 {
23   a = b - c;
24 }
25 
26 void
vector_multiply(void)27 vector_multiply (void)
28 {
29   a = b * c;
30 }
31 
32 void
vector_multiply_add(void)33 vector_multiply_add (void)
34 {
35   a = (b * c) + d;
36 }
37 
38 void
vector_multiply_subtract(void)39 vector_multiply_subtract (void)
40 {
41   a = (b * c) - d;
42 }
43 
44 void
vector_divide(void)45 vector_divide (void)
46 {
47   a = b / c;
48 }
49