(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-outer-3.c
       1  /* { dg-require-effective-target vect_float } */
       2  #include <stdarg.h>
       3  #include "tree-vect.h"
       4  
       5  #define N 40
       6  float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
       7  float out[N];
       8  
       9  /* Outer-loop vectoriation.  */
      10  
      11  __attribute__ ((noinline)) void
      12  foo (){
      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  
      25  int 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" } } */