diff options
Diffstat (limited to 'libclc/generic/lib')
| -rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
| -rw-r--r-- | libclc/generic/lib/common/sign.cl | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index e1a29729776..35b073987e9 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -1,5 +1,6 @@ atomic/atomic_impl.ll convert.cl +common/sign.cl geometric/cross.cl geometric/dot.cl geometric/length.cl diff --git a/libclc/generic/lib/common/sign.cl b/libclc/generic/lib/common/sign.cl new file mode 100644 index 00000000000..070abd55db6 --- /dev/null +++ b/libclc/generic/lib/common/sign.cl @@ -0,0 +1,27 @@ +#include <clc/clc.h> + +#define SIGN(TYPE, F) \ +_CLC_DEF _CLC_OVERLOAD TYPE sign(TYPE x) { \ + if (isnan(x)) { \ + return 0.0F; \ + } \ + if (x > 0.0F) { \ + return 1.0F; \ + } \ + if (x < 0.0F) { \ + return -1.0F; \ + } \ + return x; /* -0.0 or +0.0 */ \ +} + +SIGN(float, f) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sign, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +SIGN(double, ) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sign, double) + +#endif |

