1 /* { dg-require-effective-target vect_float } */
13 /* Should be vectorized. Fixed misaligment in the inner-loop. */
14 /* Currently not vectorized because we get too many BBs in the inner-loop,
15 because the compiler doesn't realize that the inner-loop executes at
16 least once (cause k<4), and so there's no need to create a guard code
17 to skip the inner-loop in case it doesn't execute. */
18 __attribute__ ((noinline
))
23 for (i
= 0; i
< N
; i
++) {
27 for (k
= 0; k
< 4; k
++) {
28 for (i
= 0; i
< N
; i
++) {
30 for (j
= k
; j
< M
; j
+=4) {
31 diff
+= in
[j
+i
]*coeff
[j
];
39 /* Vectorized. Changing misalignment in the inner-loop. */
40 __attribute__ ((noinline
))
45 for (i
= 0; i
< N
; i
++) {
47 for (j
= 0; j
< M
; j
++) {
48 diff
+= in
[j
+i
]*coeff
[j
];
61 for (i
= 0; i
< M
; i
++)
63 for (i
= 0; i
< N
+M
; i
++)
69 for (i
= 0; i
< N
; i
++) {
70 if (out
[i
] != fir_out
[i
])
77 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail *-*-* } } } */
78 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */
79 /* { dg-final { cleanup-tree-dump "vect" } } */