diff options
author | Jan Vesely <jan.vesely@rutgers.edu> | 2014-09-05 13:59:09 +0000 |
---|---|---|
committer | Jan Vesely <jan.vesely@rutgers.edu> | 2014-09-05 13:59:09 +0000 |
commit | 369e20353cc00e98dac1be978bb08833123f9a4b (patch) | |
tree | 5398836a852c4fdf26b55f371c593eb5a02ddccd /libclc | |
parent | a5a3b023b4efc180f3486fc708a7520932c37940 (diff) | |
download | bcm5719-llvm-369e20353cc00e98dac1be978bb08833123f9a4b.tar.gz bcm5719-llvm-369e20353cc00e98dac1be978bb08833123f9a4b.zip |
add isnormal builtin
v2: simplify and remove isnan leftovers
remove trailing newline
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 217244
Diffstat (limited to 'libclc')
-rw-r--r-- | libclc/generic/include/clc/clc.h | 1 | ||||
-rw-r--r-- | libclc/generic/include/clc/relational/isnormal.h | 9 | ||||
-rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
-rw-r--r-- | libclc/generic/lib/relational/isnormal.cl | 18 |
4 files changed, 29 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index f7085cea419..148a83b7be0 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -121,6 +121,7 @@ #include <clc/relational/isless.h> #include <clc/relational/islessequal.h> #include <clc/relational/isnan.h> +#include <clc/relational/isnormal.h> #include <clc/relational/isnotequal.h> #include <clc/relational/select.h> #include <clc/relational/signbit.h> diff --git a/libclc/generic/include/clc/relational/isnormal.h b/libclc/generic/include/clc/relational/isnormal.h new file mode 100644 index 00000000000..f568c56f8e6 --- /dev/null +++ b/libclc/generic/include/clc/relational/isnormal.h @@ -0,0 +1,9 @@ +#undef isnormal + +#define __CLC_FUNCTION isnormal +#define __CLC_BODY <clc/relational/unary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index 3c021183e9a..115cbee198e 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -56,6 +56,7 @@ relational/isinf.cl relational/isless.cl relational/islessequal.cl relational/isnan.cl +relational/isnormal.cl relational/isnotequal.cl relational/signbit.cl shared/clamp.cl diff --git a/libclc/generic/lib/relational/isnormal.cl b/libclc/generic/lib/relational/isnormal.cl new file mode 100644 index 00000000000..2e6b42d0017 --- /dev/null +++ b/libclc/generic/lib/relational/isnormal.cl @@ -0,0 +1,18 @@ +#include <clc/clc.h> +#include "relational.h" + +_CLC_DEFINE_RELATIONAL_UNARY(int, isnormal, __builtin_isnormal, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isnormal(double) returns an int, but the vector versions +// return long. +_CLC_DEF _CLC_OVERLOAD int isnormal(double x) { + return __builtin_isnormal(x); +} + +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, isnormal, double) + +#endif |