| /* { dg-do compile } */ |
| /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats" { target *-*-* } } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| void foo(const int * __restrict__ zr_in, |
| const int * __restrict__ zi_in, |
| const int * __restrict__ zk_in, |
| int * __restrict__ zr_out, |
| int * __restrict__ zi_out, |
| int * __restrict__ zk_out, |
| int cr, int ci) |
| { |
| unsigned int pi; |
| int tmp_r, tmp_i, tmp_k; |
| for (pi = 0; pi < (512)*(512); pi++) { |
| int zr = zr_in[pi]; |
| int zi = zi_in[pi]; |
| int zk = zk_in[pi]; |
| |
| if (zr*zr + zi*zi >= 4) { |
| tmp_r = zr; |
| tmp_i = zi; |
| tmp_k = zk; |
| } else { |
| tmp_r = (zr*zr - zi*zi + cr); |
| tmp_i = (2 * zr * zi + ci); |
| tmp_k = zk + 1; |
| } |
| zr_out[pi] = tmp_r; |
| zi_out[pi] = tmp_i; |
| zk_out[pi] = tmp_k; |
| } |
| } |
| |
| |
| /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */ |
| /* { dg-final { cleanup-tree-dump "ifcvt" } } */ |