xref: /llvm-project/libclc/generic/lib/math/fmax.cl (revision d2d1b5897e871f7b4873befbe2b85db58744e42b)
1#include <clc/clc.h>
2#include <clc/clcmacro.h>
3
4_CLC_DEFINE_BINARY_BUILTIN(float, fmax, __builtin_fmaxf, float, float);
5
6#ifdef cl_khr_fp64
7
8#pragma OPENCL EXTENSION cl_khr_fp64 : enable
9
10_CLC_DEFINE_BINARY_BUILTIN(double, fmax, __builtin_fmax, double, double);
11
12#endif
13
14#ifdef cl_khr_fp16
15
16#pragma OPENCL EXTENSION cl_khr_fp16 : enable
17
18_CLC_DEF _CLC_OVERLOAD half fmax(half x, half y)
19{
20   if (isnan(x))
21      return y;
22   if (isnan(y))
23      return x;
24   return (x < y) ? y : x;
25}
26_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, half, fmax, half, half)
27
28#endif
29
30#define __CLC_BODY <fmax.inc>
31#include <clc/math/gentype.inc>
32