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