[Beignet] [PATCH] change behavior of mul24/mad24 when out of range

Yang, Rong R rong.r.yang at intel.com
Thu Mar 17 08:00:38 UTC 2016


LGTM, pushed, thanks.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Tuesday, March 8, 2016 14:54
> To: Guo, Yejun <yejun.guo at intel.com>; beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] change behavior of mul24/mad24 when out
> of range
> 
> ping for review, thanks.
> 
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo Yejun
> Sent: Thursday, February 25, 2016 6:20 AM
> To: beignet at lists.freedesktop.org
> Cc: Guo, Yejun
> Subject: [Beignet] [PATCH] change behavior of mul24/mad24 when out of
> range
> 
> mul24 and mad24 are supposed to be fast integer functions, but the current
> implementation is slower. At least we should provide same performance if
> not faster, so change the behavior when the parameters are out of range
> since it is implementation-defined.
> 
> passed test: integer_ops of conformance test
> 
> Signed-off-by: Guo Yejun <yejun.guo at intel.com>
> ---
>  backend/src/libocl/tmpl/ocl_integer.tmpl.cl | 4 ++--
>  utests/compiler_mad24.cpp                   | 2 +-
>  utests/compiler_mul24.cpp                   | 2 +-
>  3 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/backend/src/libocl/tmpl/ocl_integer.tmpl.cl
> b/backend/src/libocl/tmpl/ocl_integer.tmpl.cl
> index 12408eb..7e7f4ae 100644
> --- a/backend/src/libocl/tmpl/ocl_integer.tmpl.cl
> +++ b/backend/src/libocl/tmpl/ocl_integer.tmpl.cl
> @@ -139,8 +139,8 @@ DEF(long)
>  DEF(ulong)
>  #undef DEF
> 
> -OVERLOADABLE int mul24(int a, int b) { return ((a << 8) >> 8) * ((b << 8) >>
> 8); } -OVERLOADABLE uint mul24(uint a, uint b) { return (a & 0xFFFFFF) * (b &
> 0xFFFFFF); }
> +OVERLOADABLE int mul24(int a, int b) { return a*b; } OVERLOADABLE uint
> +mul24(uint a, uint b) { return a*b; }
> 
>  OVERLOADABLE int mad24(int a, int b, int c) { return mul24(a, b) + c; }
> OVERLOADABLE uint mad24(uint a, uint b, uint c) { return mul24(a, b) + c; }
> diff --git a/utests/compiler_mad24.cpp b/utests/compiler_mad24.cpp index
> a3890a1..ba2dcf6 100644
> --- a/utests/compiler_mad24.cpp
> +++ b/utests/compiler_mad24.cpp
> @@ -34,7 +34,7 @@ void compiler_mad24(void)
> 
>    OCL_MAP_BUFFER(3);
>    for (int i = 0; i < n; ++i)
> -    OCL_ASSERT(((int*)buf_data[3])[i] == ((src1[i] << 8) >> 8) * ((src2[i] <<
> 8) >> 8) + src3[i]);
> +    OCL_ASSERT(((int*)buf_data[3])[i] == (src1[i]) * (src2[i]) +
> + src3[i]);
>    OCL_UNMAP_BUFFER(3);
>  }
> 
> diff --git a/utests/compiler_mul24.cpp b/utests/compiler_mul24.cpp index
> 8a36947..f1a9a40 100644
> --- a/utests/compiler_mul24.cpp
> +++ b/utests/compiler_mul24.cpp
> @@ -29,7 +29,7 @@ void compiler_mul24(void)
> 
>    OCL_MAP_BUFFER(2);
>    for (int i = 0; i < n; ++i)
> -    OCL_ASSERT(((int*)buf_data[2])[i] == ((src1[i] << 8) >> 8) * ((src2[i] <<
> 8) >> 8));
> +    OCL_ASSERT(((int*)buf_data[2])[i] == (src1[i]) * (src2[i]));
>    OCL_UNMAP_BUFFER(2);
>  }
> 
> --
> 1.9.1
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list