(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
cond_op_addsubmul_d-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -march=skylake-avx512 -fdump-tree-optimized" } */
       3  /* { dg-final { scan-tree-dump ".COND_ADD" "optimized" } } */
       4  /* { dg-final { scan-tree-dump ".COND_SUB" "optimized" } } */
       5  /* { dg-final { scan-tree-dump ".COND_MUL" "optimized" } } */
       6  #ifndef NUM
       7  #define NUM 800
       8  #endif
       9  #ifndef TYPE
      10  #define TYPE int
      11  #endif
      12  
      13  TYPE a[NUM], b[NUM], c[NUM], d[NUM], e[NUM], j[NUM];
      14  #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
      15  #define MAX(X,Y) ((X) < (Y) ? (Y) : (X))
      16  
      17  #define BIN(OPNAME, OP)				\
      18    void						\
      19    __attribute__ ((noipa,optimize ("O3")))	\
      20    foo_##OPNAME ()				\
      21    {						\
      22      for (int i = 0; i != NUM; i++)		\
      23        if (b[i] < c[i])				\
      24  	a[i] = d[i] OP e[i];			\
      25        else					\
      26  	a[i] = MAX(d[i], e[i]);			\
      27    }
      28  
      29  
      30  BIN (add, +);
      31  BIN (sub, -);
      32  BIN (mul, *);