(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
cond_op_maxmin_d-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -march=skylake-avx512 -fdump-tree-optimized" } */
       3  /* { dg-final { scan-tree-dump ".COND_MAX" "optimized" } } */
       4  /* { dg-final { scan-tree-dump ".COND_MIN" "optimized" } } */
       5  /* { dg-final { scan-assembler-times "vpmaxsd"  1 } } */
       6  /* { dg-final { scan-assembler-times "vpminsd"  1 } } */
       7  
       8  typedef char int8;
       9  typedef unsigned char uint8;
      10  typedef short int16;
      11  typedef unsigned short uint16;
      12  typedef int int32;
      13  typedef unsigned int uint32;
      14  typedef long long int64;
      15  typedef unsigned long long uint64;
      16  
      17  #ifndef NUM
      18  #define NUM 800
      19  #endif
      20  #ifndef TYPE
      21  #define TYPE int
      22  #endif
      23  
      24  TYPE a[NUM], b[NUM], c[NUM], d[NUM], e[NUM], j[NUM];
      25  #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
      26  #define MAX(X,Y) ((X) < (Y) ? (Y) : (X))
      27  
      28  #define BIN(OPNAME, OP)				\
      29    void						\
      30    __attribute__ ((noipa,optimize ("O3")))	\
      31    foo_##OPNAME ()				\
      32    {						\
      33      for (int i = 0; i != NUM; i++)		\
      34        if (b[i] < c[i])				\
      35  	a[i] = OP(d[i], e[i]);			\
      36        else					\
      37  	a[i] = d[i] - e[i];			\
      38    }
      39  
      40  BIN (max, MAX);
      41  BIN (min, MIN);