1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */
       3  
       4  /* { dg-final { scan-assembler-times "vcmpph" 15 } } */
       5  
       6  typedef _Float16 v8hf __attribute__ ((vector_size (16)));
       7  typedef _Float16 v16hf __attribute__ ((vector_size (32)));
       8  typedef _Float16 v32hf __attribute__ ((vector_size (64)));
       9  
      10  #define VCMPMN(type, op, name)	\
      11  type  \
      12  __attribute__ ((noinline, noclone)) \
      13  vec_cmp_##type##type##name (type a, type b) \
      14  { \
      15    return a op b;  \
      16  }
      17  
      18  VCMPMN (v8hf, <, lt)
      19  VCMPMN (v16hf, <, lt)
      20  VCMPMN (v32hf, <, lt)
      21  VCMPMN (v8hf, <=, le)
      22  VCMPMN (v16hf, <=, le)
      23  VCMPMN (v32hf, <=, le)
      24  VCMPMN (v8hf, >, gt)
      25  VCMPMN (v16hf, >, gt)
      26  VCMPMN (v32hf, >, gt)
      27  VCMPMN (v8hf, >=, ge)
      28  VCMPMN (v16hf, >=, ge)
      29  VCMPMN (v32hf, >=, ge)
      30  VCMPMN (v8hf, ==, eq)
      31  VCMPMN (v16hf, ==, eq)
      32  VCMPMN (v32hf, ==, eq)