1/* { dg-do compile } */ 2/* { dg-require-effective-target vect_float } */ 3/* { dg-additional-options "-Ofast -funroll-loops" } */ 4 5#define NXX 516 6#define NYY 516 7#define IND(x,y) ((x) + (y)*NXX) 8float **In, **Out, **V; 9 10void foo(int I, int J, int K1, int K2, int L1, int L2 ) 11{ 12 for(int i=0; i < I; i++) 13 { 14 float *v = V[i]; 15 16 for(int j=0; j < J; j++) 17 { 18 float *in = In[j]; 19 float *out = Out[j]; 20 for(int l=L1; l<L2; l++) 21 { 22 for(int k=K1; k<K2; k++) 23 { 24 float sum = 0; 25 int offset = 0; 26 for(int m=-2; m<=2; m++) 27 { 28 for(int n=-2; n<=2; n++, offset++) 29 sum += in[IND((k+n), (l+m))] * v[offset]; 30 } 31 out[IND(k,l)] = sum; 32 } 33 } 34 35 } 36 } 37} 38 39/* { dg-final { scan-tree-dump "improved number of alias checks from \[0-9\]* to 2" "vect" } } */ 40