1 /* { dg-require-effective-target vect_condition } */
8 int cond_array
[2*K
][K
] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__
)));
9 int a
[K
][K
] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__
)));
11 int check_result
[K
] = {2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
13 __attribute__ ((noinline
)) void
16 int res
, i
, j
, k
, next
;
18 for (k
= 0; k
< K
; k
++)
21 for (j
= 0; j
< K
; j
++)
22 for (i
= 0; i
< K
; i
++)
25 res
= c
> cond_array
[i
+k
][j
] ? next
: res
;
38 for (j
= 0; j
< K
; j
++)
40 for (i
= 0; i
< 2*K
; i
++)
41 cond_array
[i
][j
] = i
+j
;
43 for (i
= 0; i
< K
; i
++)
49 for (k
= 0; k
< K
; k
++)
50 if (out
[k
] != check_result
[k
])
56 /* Double reduction with cond_expr is not supported, since eventhough the order
57 of computation is the same, but vector results should be reduced to scalar
58 result, which can'be done for cond_expr. */
59 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
60 /* { dg-final { cleanup-tree-dump "vect" } } */