1/* { dg-require-effective-target vect_float } */ 2 3#include <stdarg.h> 4#include "tree-vect.h" 5 6#define N 320 7#define M 1024 8float in[N+M]; 9float out[N]; 10 11/* Outer-loop vectorization. */ 12 13__attribute__ ((noinline)) void 14foo (){ 15 int i,j; 16 float diff; 17 18 for (i = 0; i < N; i++) { 19 diff = 0; 20 for (j = 0; j < M; j+=4) { 21 diff += in[j+i]; 22 } 23 out[i]=diff; 24 } 25} 26 27int main (void) 28{ 29 check_vect (); 30 int i, j; 31 float diff; 32 33 for (i = 0; i < N; i++) 34 in[i] = i; 35 36 foo (); 37 38 for (i = 0; i < N; i++) { 39 diff = 0; 40 for (j = 0; j < M; j+=4) { 41 diff += in[j+i]; 42 } 43 if (out[i] != diff) 44 abort (); 45 } 46 47 return 0; 48} 49 50/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */ 51/* { dg-final { cleanup-tree-dump "vect" } } */ 52