(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr102464-maxmin.c
       1  /* PR target/102464.  */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx512fp16 -mavx512vl -ffast-math -ftree-vectorize -mtune=generic -mfpmath=sse" } */
       4  /* { dg-final { scan-assembler-times "vmaxph" 3 } }  */
       5  /* { dg-final { scan-assembler-times "vminph" 3 } }  */
       6  /* { dg-final { scan-assembler-times "vmaxsh" 3 } }  */
       7  /* { dg-final { scan-assembler-times "vminsh" 3 } }  */
       8  /* { dg-final { scan-assembler-times "vmaxps" 2 } }  */
       9  /* { dg-final { scan-assembler-times "vminps" 2 } }  */
      10  /* { dg-final { scan-assembler-times "vmaxss" 2 } }  */
      11  /* { dg-final { scan-assembler-times "vminss" 2 } }  */
      12  /* { dg-final { scan-assembler-times "vmaxpd" 1 } }  */
      13  /* { dg-final { scan-assembler-times "vminpd" 1 } }  */
      14  /* { dg-final { scan-assembler-times "vmaxsd" 1 } }  */
      15  /* { dg-final { scan-assembler-times "vminsd" 1 } }  */
      16  
      17  #include<math.h>
      18  #define FOO(CODE,TYPE,SUFFIX)						\
      19    void									\
      20    foo_vect_##CODE##TYPE##SUFFIX (TYPE* __restrict a, TYPE* b, TYPE* c)	\
      21    {									\
      22      for (int i = 0; i != 8; i++)					\
      23        a[i] = CODE##SUFFIX (b[i], c[i]);					\
      24    }									\
      25    TYPE									\
      26    foo_##CODE##TYPE##SUFFIX (TYPE b, TYPE c)				\
      27    {									\
      28      return CODE##l (b, c);						\
      29    }
      30  
      31  FOO (fmax, _Float16, f);
      32  FOO (fmax, _Float16,);
      33  FOO (fmax, _Float16, l);
      34  FOO (fmin, _Float16, f);
      35  FOO (fmin, _Float16,);
      36  FOO (fmin, _Float16, l);
      37  
      38  FOO (fmax, float,);
      39  FOO (fmax, float, l);
      40  FOO (fmin, float,);
      41  FOO (fmin, float, l);
      42  
      43  FOO (fmax, double, l);
      44  FOO (fmin, double, l);