diff options
| author | Jan Vesely <jan.vesely@rutgers.edu> | 2018-03-12 19:46:52 +0000 |
|---|---|---|
| committer | Jan Vesely <jan.vesely@rutgers.edu> | 2018-03-12 19:46:52 +0000 |
| commit | b672f7a2519afc54b852ebb6b5b4e51d80deea57 (patch) | |
| tree | dfeb55596576f2f9613d12bda04b3be9e3121c0d | |
| parent | 08c96acb277de1916c19f217b09aa023910f68b9 (diff) | |
| download | bcm5719-llvm-b672f7a2519afc54b852ebb6b5b4e51d80deea57.tar.gz bcm5719-llvm-b672f7a2519afc54b852ebb6b5b4e51d80deea57.zip | |
nan: Implement
Passes CTS on carrizo and turks
Reviewer: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 327324
| -rw-r--r-- | libclc/generic/include/clc/clc.h | 1 | ||||
| -rw-r--r-- | libclc/generic/include/clc/math/nan.h | 8 | ||||
| -rw-r--r-- | libclc/generic/include/clc/math/nan.inc | 16 | ||||
| -rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
| -rw-r--r-- | libclc/generic/lib/math/nan.cl | 6 | ||||
| -rw-r--r-- | libclc/generic/lib/math/nan.inc | 20 |
6 files changed, 52 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index decc899d2d2..36ab134be9c 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -98,6 +98,7 @@ #include <clc/math/maxmag.h> #include <clc/math/minmag.h> #include <clc/math/modf.h> +#include <clc/math/nan.h> #include <clc/math/nextafter.h> #include <clc/math/pow.h> #include <clc/math/pown.h> diff --git a/libclc/generic/include/clc/math/nan.h b/libclc/generic/include/clc/math/nan.h new file mode 100644 index 00000000000..090749307f9 --- /dev/null +++ b/libclc/generic/include/clc/math/nan.h @@ -0,0 +1,8 @@ +#define __CLC_CONCAT(x, y) x ## y +#define __CLC_XCONCAT(x, y) __CLC_CONCAT(x, y) + +#define __CLC_BODY <clc/math/nan.inc> +#include <clc/math/gentype.inc> + +#undef __CLC_XCONCAT +#undef __CLC_CONCAT diff --git a/libclc/generic/include/clc/math/nan.inc b/libclc/generic/include/clc/math/nan.inc new file mode 100644 index 00000000000..bf36ed24620 --- /dev/null +++ b/libclc/generic/include/clc/math/nan.inc @@ -0,0 +1,16 @@ +#ifdef __CLC_SCALAR +#define __CLC_VECSIZE +#endif + +#if __CLC_FPSIZE == 64 +#define __CLC_NATN __CLC_XCONCAT(ulong, __CLC_VECSIZE) +#else +#define __CLC_NATN __CLC_XCONCAT(uint, __CLC_VECSIZE) +#endif + +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE nan(__CLC_NATN code); + +#undef __CLC_NATN +#ifdef __CLC_SCALAR +#undef __CLC_VECSIZE +#endif diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index 247708a6762..9c060ed4983 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -134,6 +134,7 @@ math/mad.cl math/maxmag.cl math/minmag.cl math/modf.cl +math/nan.cl math/native_cos.cl math/native_divide.cl math/native_exp.cl diff --git a/libclc/generic/lib/math/nan.cl b/libclc/generic/lib/math/nan.cl new file mode 100644 index 00000000000..03752ab2d23 --- /dev/null +++ b/libclc/generic/lib/math/nan.cl @@ -0,0 +1,6 @@ +#include <clc/clc.h> +#include "utils.h" + +#define __CLC_AS_GENTYPE __CLC_XCONCAT(as_, __CLC_GENTYPE) +#define __CLC_BODY <nan.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/nan.inc b/libclc/generic/lib/math/nan.inc new file mode 100644 index 00000000000..6e4afc888d5 --- /dev/null +++ b/libclc/generic/lib/math/nan.inc @@ -0,0 +1,20 @@ +#ifdef __CLC_SCALAR +#define __CLC_VECSIZE +#endif + +#if __CLC_FPSIZE == 64 +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE nan(__CLC_XCONCAT(ulong, __CLC_VECSIZE) code) +{ + return __CLC_AS_GENTYPE(code | 0x7ff0000000000000ul); +} +#else +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE nan(__CLC_XCONCAT(uint, __CLC_VECSIZE) code) +{ + return __CLC_AS_GENTYPE(code | 0x7fc00000); +} +#endif + + +#ifdef __CLC_SCALAR +#undef __CLC_VECSIZE +#endif |

