Implement isinf builtin

llvm-svn: 217046
This commit is contained in:
Tom Stellard
2014-09-03 15:55:40 +00:00
parent d8a73abfc3
commit 7a9e2c6879
4 changed files with 41 additions and 0 deletions

View File

@@ -116,6 +116,7 @@
#include <clc/relational/isequal.h>
#include <clc/relational/isgreater.h>
#include <clc/relational/isgreaterequal.h>
#include <clc/relational/isinf.h>
#include <clc/relational/isless.h>
#include <clc/relational/islessequal.h>
#include <clc/relational/isnan.h>

View File

@@ -0,0 +1,21 @@
#define _CLC_ISINF_DECL(RET_TYPE, ARG_TYPE) \
_CLC_OVERLOAD _CLC_DECL RET_TYPE isinf(ARG_TYPE);
#define _CLC_VECTOR_ISINF_DECL(RET_TYPE, ARG_TYPE) \
_CLC_ISINF_DECL(RET_TYPE##2, ARG_TYPE##2) \
_CLC_ISINF_DECL(RET_TYPE##3, ARG_TYPE##3) \
_CLC_ISINF_DECL(RET_TYPE##4, ARG_TYPE##4) \
_CLC_ISINF_DECL(RET_TYPE##8, ARG_TYPE##8) \
_CLC_ISINF_DECL(RET_TYPE##16, ARG_TYPE##16)
_CLC_ISINF_DECL(int, float)
_CLC_VECTOR_ISINF_DECL(int, float)
#ifdef cl_khr_fp64
_CLC_ISINF_DECL(int, double)
_CLC_VECTOR_ISINF_DECL(long, double)
#endif
#undef _CLC_ISINF_DECL
#undef _CLC_VECTOR_ISINF_DECL

View File

@@ -51,6 +51,7 @@ relational/any.cl
relational/isequal.cl
relational/isgreater.cl
relational/isgreaterequal.cl
relational/isinf.cl
relational/isless.cl
relational/islessequal.cl
relational/isnan.cl

View File

@@ -0,0 +1,18 @@
#include <clc/clc.h>
#include "relational.h"
_CLC_DEFINE_RELATIONAL_UNARY(int, isinf, __builtin_isinf, float)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
// The scalar version of isinf(double) returns an int, but the vector versions
// return long.
_CLC_DEF _CLC_OVERLOAD int isinf(double x) {
return __builtin_isinf(x);
}
_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, isinf, double)
#endif