1  /* { dg-do run } */
       2  /* { dg-options "-O2 -mavx512vl -mprefer-vector-width=256 -ffast-math" } */
       3  /* { dg-require-effective-target avx512vl } */
       4  
       5  #define AVX512VL
       6  #ifndef CHECK
       7  #define CHECK "avx512f-helper.h"
       8  #endif
       9  
      10  #include CHECK
      11  
      12  #include "cond_op_maxmin_double-1.c"
      13  #define BINO2(OPNAME, OP)			\
      14    void						\
      15    __attribute__ ((noipa))			\
      16    foo_o2_##OPNAME ()				\
      17    {						\
      18      for (int i = 0; i != NUM; i++)		\
      19        if (b[i] < c[i])				\
      20  	j[i] = OP(d[i], e[i]);			\
      21        else					\
      22  	j[i] = d[i] - e[i];			\
      23    }
      24  
      25  BINO2 (max, MAX);
      26  BINO2 (min, MIN);
      27  
      28  static void
      29  test_256 (void)
      30  {
      31    int sign = -1;
      32    for (int i = 0; i != NUM; i++)
      33      {
      34        a[i] = 0;
      35        d[i] = i * 2;
      36        e[i] = i * i * 3 - i * 9 + 153;
      37        b[i] = i * 83;
      38        c[i] = b[i] + sign;
      39        sign *= -1;
      40        j[i] = 1;
      41      }
      42    foo_max ();
      43    foo_o2_max ();
      44    for (int i = 0; i != NUM; i++)
      45      {
      46        if (a[i] != j[i])
      47  	abort ();
      48        a[i] = 0;
      49        b[i] = 1;
      50      }
      51  
      52    foo_min ();
      53    foo_o2_min ();
      54    for (int i = 0; i != NUM; i++)
      55      {
      56        if (a[i] != j[i])
      57    	abort ();
      58        a[i] = 0;
      59        j[i] = 1;
      60      }
      61  }
      62  
      63  static void
      64  test_128 ()
      65  {
      66    
      67  }