[Beignet] [PATCH v2] fix scalar type built-in function "select"

Zhigang Gong zhigang.gong at linux.intel.com
Tue Sep 3 00:41:31 PDT 2013


LGTM, will push it latter. Thanks.

On Mon, Sep 02, 2013 at 12:32:40PM +0800, Homer Hsing wrote:
> add some missing scalar type version
> 
> v2: third parameter of "select" cannot be "float"
> 
> Signed-off-by: Homer Hsing <homer.xing at intel.com>
> ---
>  backend/src/ocl_stdlib.tmpl.h | 41 +++++++++++++++++++++++------------------
>  1 file changed, 23 insertions(+), 18 deletions(-)
> 
> diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h
> index ec49987..7d8d480 100644
> --- a/backend/src/ocl_stdlib.tmpl.h
> +++ b/backend/src/ocl_stdlib.tmpl.h
> @@ -1415,24 +1415,29 @@ INLINE_OVERLOADABLE float mad(float a, float b, float c) {
>    return a*b+c;
>  }
>  
> -INLINE_OVERLOADABLE uint select(uint src0, uint src1, int cond) {
> -  return cond ? src1 : src0;
> -}
> -INLINE_OVERLOADABLE uint select(uint src0, uint src1, uint cond) {
> -  return cond ? src1 : src0;
> -}
> -INLINE_OVERLOADABLE int select(int src0, int src1, int cond) {
> -  return cond ? src1 : src0;
> -}
> -INLINE_OVERLOADABLE int select(int src0, int src1, uint cond) {
> -  return cond ? src1 : src0;
> -}
> -INLINE_OVERLOADABLE float select(float src0, float src1, int cond) {
> -  return cond ? src1 : src0;
> -}
> -INLINE_OVERLOADABLE float select(float src0, float src1, uint cond) {
> -  return cond ? src1 : src0;
> -}
> +#define DEF(TYPE1, TYPE2) \
> +  INLINE_OVERLOADABLE TYPE1 select(TYPE1 src0, TYPE1 src1, TYPE2 cond) { \
> +    return cond ? src1 : src0; \
> +  }
> +DEF(char, char)
> +DEF(char, uchar)
> +DEF(uchar, char)
> +DEF(uchar, uchar)
> +DEF(short, short)
> +DEF(short, ushort)
> +DEF(ushort, short)
> +DEF(ushort, ushort)
> +DEF(int, int)
> +DEF(int, uint)
> +DEF(uint, int)
> +DEF(uint, uint)
> +DEF(long, long)
> +DEF(long, ulong)
> +DEF(ulong, long)
> +DEF(ulong, ulong)
> +DEF(float, int)
> +DEF(float, uint)
> +#undef DEF
>  
>  // This will be optimized out by LLVM and will output LLVM select instructions
>  #define DECL_SELECT4(TYPE4, TYPE, COND_TYPE4, MASK) \
> -- 
> 1.8.1.2
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list