(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512fp16-vcondmn-loop-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx512fp16 -mavx512vl -mprefer-vector-width=512" } */
       3  
       4  /* { dg-final { scan-assembler-times "vcmpph" 27 } } */
       5  /* { dg-final { scan-assembler-times "(?:vpcmpw|vpcmpeqw)" 12 } } */
       6  /* { dg-final { scan-assembler-times "vpcmpuw" 6 } } */
       7  
       8  typedef unsigned short u16;
       9  typedef short s16;
      10  
      11  #define CONDMOV_LOOP(size, type, ptype, op, name) \
      12  void \
      13  __attribute__ ((noinline, noclone, optimize("tree-vectorize"))) \
      14  loop_cond_##size##ptype##type##name ( \
      15    ptype * restrict a, ptype * restrict b,	\
      16    type * restrict c, type * restrict d) \
      17  { \
      18    int i;  \
      19    for (i = 0; i < size; i++)  \
      20      { \
      21        if (a[i] op b[i])	\
      22  	d[i] = c[i];  \
      23      } \
      24  }
      25  
      26  CONDMOV_LOOP (32, _Float16, _Float16, <, lt)
      27  CONDMOV_LOOP (32, _Float16, _Float16, >, gt)
      28  CONDMOV_LOOP (32, _Float16, _Float16, ==, eq)
      29  CONDMOV_LOOP (16, _Float16, _Float16, <, lt)
      30  CONDMOV_LOOP (16, _Float16, _Float16, >, gt)
      31  CONDMOV_LOOP (16, _Float16, _Float16, ==, eq)
      32  CONDMOV_LOOP (8, _Float16, _Float16, <, lt)
      33  CONDMOV_LOOP (8, _Float16, _Float16, >, gt)
      34  CONDMOV_LOOP (8, _Float16, _Float16, ==, eq)
      35  CONDMOV_LOOP (32, _Float16, s16, <, lt)
      36  CONDMOV_LOOP (32, _Float16, s16, >, gt)
      37  CONDMOV_LOOP (32, _Float16, s16, ==, eq)
      38  CONDMOV_LOOP (16, _Float16, s16, <, lt)
      39  CONDMOV_LOOP (16, _Float16, s16, >, gt)
      40  CONDMOV_LOOP (16, _Float16, s16, ==, eq)
      41  CONDMOV_LOOP (8, _Float16, s16, <, lt)
      42  CONDMOV_LOOP (8, _Float16, s16, >, gt)
      43  CONDMOV_LOOP (8, _Float16, s16, ==, eq)
      44  CONDMOV_LOOP (32, s16, _Float16, <, lt)
      45  CONDMOV_LOOP (32, s16, _Float16, >, gt)
      46  CONDMOV_LOOP (32, s16, _Float16, ==, eq)
      47  CONDMOV_LOOP (16, s16, _Float16, <, lt)
      48  CONDMOV_LOOP (16, s16, _Float16, >, gt)
      49  CONDMOV_LOOP (16, s16, _Float16, ==, eq)
      50  CONDMOV_LOOP (8, s16, _Float16, <, lt)
      51  CONDMOV_LOOP (8, s16, _Float16, >, gt)
      52  CONDMOV_LOOP (8, s16, _Float16, ==, eq)
      53  CONDMOV_LOOP (32, _Float16, u16, <, lt)
      54  CONDMOV_LOOP (32, _Float16, u16, >, gt)
      55  CONDMOV_LOOP (32, _Float16, u16, ==, eq)
      56  CONDMOV_LOOP (16, _Float16, u16, <, lt)
      57  CONDMOV_LOOP (16, _Float16, u16, >, gt)
      58  CONDMOV_LOOP (16, _Float16, u16, ==, eq)
      59  CONDMOV_LOOP (8, _Float16, u16, <, lt)
      60  CONDMOV_LOOP (8, _Float16, u16, >, gt)
      61  CONDMOV_LOOP (8, _Float16, u16, ==, eq)
      62  CONDMOV_LOOP (32, u16, _Float16, <, lt)
      63  CONDMOV_LOOP (32, u16, _Float16, >, gt)
      64  CONDMOV_LOOP (32, u16, _Float16, ==, eq)
      65  CONDMOV_LOOP (16, u16, _Float16, <, lt)
      66  CONDMOV_LOOP (16, u16, _Float16, >, gt)
      67  CONDMOV_LOOP (16, u16, _Float16, ==, eq)
      68  CONDMOV_LOOP (8, u16, _Float16, <, lt)
      69  CONDMOV_LOOP (8, u16, _Float16, >, gt)
      70  CONDMOV_LOOP (8, u16, _Float16, ==, eq)