OLD | NEW |
1 /* { dg-do compile } */ | 1 /* { dg-do compile } */ |
2 | 2 |
3 #define N 64 | 3 #define N 64 |
4 signed short image[N][N] __attribute__ ((__aligned__(16))); | 4 signed short image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); |
5 signed short block[N][N] __attribute__ ((__aligned__(16))); | 5 signed short block[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); |
6 | 6 |
7 /* Can't do outer-loop vectorization because of non-consecutive access. | 7 /* Can't do outer-loop vectorization because of non-consecutive access. */ |
8 Currently fails to vectorize because the reduction pattern is not | |
9 recognized. */ | |
10 | 8 |
11 int | 9 int |
12 foo (){ | 10 foo (){ |
13 int i,j; | 11 int i,j; |
14 int diff = 0; | 12 int diff = 0; |
15 | 13 |
16 for (i = 0; i < N; i++) { | 14 for (i = 0; i < N; i++) { |
17 for (j = 0; j < N; j+=8) { | 15 for (j = 0; j < N; j+=8) { |
18 diff += (image[i][j] - block[i][j]); | 16 diff += (image[i][j] - block[i][j]); |
19 } | 17 } |
20 } | 18 } |
21 return diff; | 19 return diff; |
22 } | 20 } |
23 | 21 |
24 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-
*-* } } } */ | 22 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-
*-* } } } */ |
25 /* FORNOW */ | 23 /* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } }
*/ |
26 /* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { x
fail *-*-* } } } */ | |
27 /* { dg-final { scan-tree-dump-times "unexpected pattern" 1 "vect" } } */ | |
28 /* { dg-final { cleanup-tree-dump "vect" } } */ | 24 /* { dg-final { cleanup-tree-dump "vect" } } */ |
OLD | NEW |