2008-05-30 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / ifc-20040816-2.c
blobf37a4d3361a3520552129d59972ae9ee869e9332
1 /* { dg-do compile } */
2 /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats" { target *-*-* } } */
4 void foo(const int * __restrict__ zr_in,
5 const int * __restrict__ zi_in,
6 const int * __restrict__ zk_in,
7 int * __restrict__ zr_out,
8 int * __restrict__ zi_out,
9 int * __restrict__ zk_out,
10 int cr, int ci)
12 unsigned int pi;
13 int tmp_r, tmp_i, tmp_k;
14 #if __SIZEOF_INT__ >= 4
15 for (pi = 0; pi < (512)*(512); pi++) {
16 #else
17 for (pi = 0; pi < (32)*(32); pi++) {
18 #endif
19 int zr = zr_in[pi];
20 int zi = zi_in[pi];
21 int zk = zk_in[pi];
23 if (zr*zr + zi*zi >= 4) {
24 tmp_r = zr;
25 tmp_i = zi;
26 tmp_k = zk;
27 } else {
28 tmp_r = (zr*zr - zi*zi + cr);
29 tmp_i = (2 * zr * zi + ci);
30 tmp_k = zk + 1;
32 zr_out[pi] = tmp_r;
33 zi_out[pi] = tmp_i;
34 zk_out[pi] = tmp_k;
39 /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */
40 /* { dg-final { cleanup-tree-dump "ifcvt" } } */