xref: /llvm-project/libclc/r600/lib/math/fmax.cl (revision 78b5bb702fe97fe85f66d72598d0dfa7c49fe001)
1#include <clc/clc.h>
2#include <clc/clcmacro.h>
3#include <clc/math/math.h>
4
5_CLC_DEF _CLC_OVERLOAD float fmax(float x, float y)
6{
7   /* Flush denormals if not enabled. Otherwise fmax instruction flushes
8    * the values for comparison, but outputs original denormal */
9   x = __clc_flush_denormal_if_not_supported(x);
10   y = __clc_flush_denormal_if_not_supported(y);
11   return __builtin_fmaxf(x, y);
12}
13_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, fmax, float, float)
14
15#ifdef cl_khr_fp64
16
17#pragma OPENCL EXTENSION cl_khr_fp64 : enable
18
19_CLC_DEF _CLC_OVERLOAD double fmax(double x, double y)
20{
21   return __builtin_fmax(x, y);
22}
23_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, fmax, double, double)
24
25#endif
26
27#define __CLC_BODY <../../../generic/lib/math/fmax.inc>
28#include <clc/math/gentype.inc>
29