[Beignet] [PATCH] GBE: Fix logb implementation.
Zhigang Gong
zhigang.gong at linux.intel.com
Thu Dec 19 17:52:38 PST 2013
LGTM, pushed, thanks.
On Wed, Dec 18, 2013 at 06:43:59AM +0000, Song, Ruiling wrote:
> Ping for review. Thanks!
>
> -----Original Message-----
> From: Song, Ruiling
> Sent: Wednesday, December 11, 2013 2:38 PM
> To: beignet at lists.freedesktop.org
> Cc: Song, Ruiling
> Subject: [PATCH] GBE: Fix logb implementation.
>
> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
> ---
> backend/src/ocl_stdlib.tmpl.h | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h index e5f356e..673c849 100644
> --- a/backend/src/ocl_stdlib.tmpl.h
> +++ b/backend/src/ocl_stdlib.tmpl.h
> @@ -1586,7 +1586,20 @@ INLINE_OVERLOADABLE float log1p(float x) {
> return k*ln2_hi-((hfsq-(s*(hfsq+R)+(k*ln2_lo+c)))-f);
>
> }
> -INLINE_OVERLOADABLE float logb(float x) { return __gen_ocl_rndd(native_log2(x)); }
> +INLINE_OVERLOADABLE float logb(float x) { union {float f; unsigned i;}
> +u;
> + u.f = x;
> + int e = ((u.i & 0x7f800000) >> 23);
> + if(e == 0) {
> + /* sub normal or +/-0 */
> + return -INFINITY;
> + } else if(e == 0xff) {
> + /* inf & nan */
> + return x*x;
> + } else {
> + return (float)(e-127);
> + }
> +}
> #define FP_ILOGB0 (-0x7FFFFFFF-1)
> #define FP_ILOGBNAN FP_ILOGB0
> INLINE_OVERLOADABLE int ilogb(float x) {
> --
> 1.7.9.5
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list