[Libclc-dev] [PATCH] relational: Fix signbit
Jeroen Ketema
j.ketema at imperial.ac.uk
Wed Jun 25 11:40:55 PDT 2014
Hi Aaron,
This change looks good to me. However, I’m still not totally convinced this patched version does the right thing. When I read this:
http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/signbit.html
it seems that in the scalar float case either 0 or 1 should be returned and in the vector case a vector filled with 0s and -1s (minus ones).
Jeroen
On 25 Jun 2014, at 19:17, Aaron Watry <awatry at gmail.com> wrote:
> The vector components were mistakenly using () instead of {}, which caused
> all but the last vector component to be dropped on the floor.
>
> CC: Jeroen Ketema <j.ketema at imperial.ac.uk>
> Signed-off-by: Aaron Watry <awatry at gmail.com>
> ---
> generic/lib/relational/signbit.cl | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/generic/lib/relational/signbit.cl b/generic/lib/relational/signbit.cl
> index 1f496d9..f429960 100644
> --- a/generic/lib/relational/signbit.cl
> +++ b/generic/lib/relational/signbit.cl
> @@ -17,35 +17,35 @@ _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \
>
> #define _CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE, FUNCTION, ARG_TYPE) \
> _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \
> - return (RET_TYPE)((FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)) != (RET_TYPE)0); \
> + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)} != (RET_TYPE)0); \
> } \
>
> #define _CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE, FUNCTION, ARG_TYPE) \
> _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \
> return (RET_TYPE)( \
> - ( \
> + (RET_TYPE){ \
> FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3) \
> - ) != (RET_TYPE)0); \
> + } != (RET_TYPE)0); \
> } \
>
> #define _CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE, FUNCTION, ARG_TYPE) \
> _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \
> return (RET_TYPE)( \
> - ( \
> + (RET_TYPE){ \
> FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \
> FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7) \
> - ) != (RET_TYPE)0); \
> + } != (RET_TYPE)0); \
> } \
>
> #define _CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE, FUNCTION, ARG_TYPE) \
> _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \
> return (RET_TYPE)( \
> - ( \
> + (RET_TYPE){ \
> FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \
> FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7), \
> FUNCTION(x.s8), FUNCTION(x.s9), FUNCTION(x.sa), FUNCTION(x.sb), \
> FUNCTION(x.sc), FUNCTION(x.sd), FUNCTION(x.se), FUNCTION(x.sf) \
> - ) != (RET_TYPE)0); \
> + } != (RET_TYPE)0); \
> } \
>
>
> --
> 1.9.1
>
More information about the Libclc-dev
mailing list