2 // { dg-require-effective-target vect_double }
12 main(int argc
, char** argv
)
16 cout
<< "usage: size N" << endl
;
20 const unsigned int size
= atoi(argv
[1]);
21 const unsigned int N
= atoi(argv
[2]);
23 cout
<< "size = " << size
<< endl
;
24 cout
<< "N = " << N
<< endl
;
26 typedef complex<double> cx_double
;
28 vector
< cx_double
> A(size
);
29 vector
< cx_double
> B(size
);
30 vector
< cx_double
> C(size
);
32 cx_double
* A_ptr
= &A
[0];
33 cx_double
* B_ptr
= &B
[0];
34 cx_double
* C_ptr
= &C
[0];
36 for (unsigned int i
=0; i
<size
; ++i
)
38 A_ptr
[i
] = cx_double( (double(rand())/RAND_MAX
), (double(rand())/RAND_MAX
) );
39 B_ptr
[i
] = cx_double( (double(rand())/RAND_MAX
), (double(rand())/RAND_MAX
) );
40 C_ptr
[i
] = cx_double( double(0), double(0) );
43 for (unsigned int j
=0; j
<N
; ++j
)
44 for (unsigned int i
=0; i
<size
; ++i
)
45 C_ptr
[i
] = A_ptr
[i
] + B_ptr
[i
];
47 cout
<< C_ptr
[0] << endl
;
52 // { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } }
53 // { dg-final { cleanup-tree-dump "vect" } }