[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