diff options
Diffstat (limited to 'libclc')
| -rw-r--r-- | libclc/generic/include/clc/clc.h | 3 | ||||
| -rw-r--r-- | libclc/generic/include/clc/common/sign.h | 5 | ||||
| -rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
| -rw-r--r-- | libclc/generic/lib/common/sign.cl | 27 | 
4 files changed, 36 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 0e87ec78f09..7846ff71612 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -86,6 +86,9 @@  #include <clc/shared/vload.h>  #include <clc/shared/vstore.h> +/* 6.11.4 Common Functions */ +#include <clc/common/sign.h> +  /* 6.11.5 Geometric Functions */  #include <clc/geometric/cross.h>  #include <clc/geometric/dot.h> diff --git a/libclc/generic/include/clc/common/sign.h b/libclc/generic/include/clc/common/sign.h new file mode 100644 index 00000000000..fa9aa096541 --- /dev/null +++ b/libclc/generic/include/clc/common/sign.h @@ -0,0 +1,5 @@ +#define __CLC_FUNCTION sign +#define __CLC_BODY <clc/math/unary_decl.inc> +#include <clc/math/gentype.inc> +#undef __CLC_FUNCTION +#undef __CLC_BODY 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  | 

