[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