| /* Disabling epilogues until we find a better way to deal with scans. */ |
| /* { dg-additional-options "--param vect-epilogues-nomask=0" } */ |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target vect_int } */ |
| |
| #define OUTER 32 |
| #define INNER 40 |
| |
| static unsigned int |
| bar (const unsigned int x[INNER][2], unsigned int sum) |
| { |
| int i; |
| |
| for (i = 0; i < INNER; i++) |
| sum += x[i][0] * x[i][0] + x[i][1] * x[i][1]; |
| return sum; |
| } |
| |
| unsigned int foo (const unsigned int x[OUTER][INNER][2]) |
| { |
| int i; |
| unsigned int sum; |
| |
| sum = 0.0f; |
| for (i = 0; i < OUTER; i++) |
| sum = bar (x[i], sum); |
| return sum; |
| } |
| |
| /* { dg-final { scan-tree-dump-times "Detected interleaving load of size 2" 1 "vect" } } */ |