1  /* { dg-require-effective-target vect_int } */
       2  
       3  #include <stdarg.h>
       4  #include "tree-vect.h"
       5  
       6  #define K 32
       7  
       8  int in[2*K][K] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
       9  int coeff[K][K] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
      10  int out_max[K], out_min[K];
      11  int check_max[K] = {62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93};
      12  int check_min[K] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
      13  
      14  __attribute__ ((noinline)) void 
      15  foo (int x, int y)
      16  {
      17    int max, min, i, j, k;
      18  
      19    for (k = 0; k < K; k++)
      20      {
      21        max = x;
      22        min = y;
      23        for (j = 0; j < K; j++) 
      24          for (i = 0; i < K; i++)
      25            {
      26              max = max < in[i+k][j] ? in[i+k][j] : max; 
      27              min = min > in[i+k][j] ? in[i+k][j] : min; 
      28            }
      29        out_max[k] = max;
      30        out_min[k] = min;
      31      }
      32  }
      33  
      34  int main ()
      35  {
      36    int i, j, k;
      37  
      38    check_vect ();
      39  
      40    for  (j = 0; j < K; j++)
      41      {
      42        for (i = 0; i < 2*K; i++)
      43          in[i][j] = i+j;
      44  
      45        for (i = 0; i < K; i++)
      46          coeff[i][j] = i+2;
      47      }
      48  
      49    foo(0, 0);
      50  
      51    for (k = 0; k < K; k++)
      52      if (out_max[k] != check_max[k] || out_min[k] != 0)
      53        abort ();
      54  
      55    foo(100, 45);
      56  
      57    for (k = 0; k < K; k++)
      58      if (out_min[k] != check_min[k] || out_max[k] != 100)
      59        abort ();
      60  
      61    return 0;
      62  }
      63          
      64  /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_int_min_max } } } */
      65