(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.target/
i386/
avx512fp16-vcondmn-minmax.C
/* { dg-do compile } */
/* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */

/* { dg-final { scan-assembler-times "vminph" 3 } } */
/* { dg-final { scan-assembler-times "vmaxph" 3 } } */

typedef _Float16 v8hf __attribute__ ((vector_size (16)));
typedef _Float16 v16hf __attribute__ ((vector_size (32)));
typedef _Float16 v32hf __attribute__ ((vector_size (64)));

#define VCONDMINMAX(size, op, name)  \
v##size##hf \
__attribute__ ((noinline, noclone)) \
vminmax_##v##size##hf##v##size##hf##name (v##size##hf a, v##size##hf b)  \
{ \
  return (a op b) ? a : b;  \
}

VCONDMINMAX (8, <, min)
VCONDMINMAX (8, >, max)
VCONDMINMAX (16, <, min)
VCONDMINMAX (16, >, max)
VCONDMINMAX (32, <, min)
VCONDMINMAX (32, >, max)