inf and denorm logic in internal_ldexp() is useless, as inf and denorm is already handled in __gen_ocl_scalbnf() and wrapper function.
It is better to flush denorm to zero in wrapper function, so we don't have to change the internal implementation. Signed-off-by: Ruiling Song <[email protected]> --- backend/src/libocl/tmpl/ocl_math.tmpl.cl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.cl b/backend/src/libocl/tmpl/ocl_math.tmpl.cl index 248ddd0..5d73c16 100644 --- a/backend/src/libocl/tmpl/ocl_math.tmpl.cl +++ b/backend/src/libocl/tmpl/ocl_math.tmpl.cl @@ -2672,7 +2672,6 @@ OVERLOADABLE float __gen_ocl_internal_remainder(float x, float p){ } OVERLOADABLE float __gen_ocl_internal_ldexp(float x, int n) { - if(!__ocl_finitef(x)||x==(float)0.0) return x; x = __gen_ocl_scalbnf(x,n); return x; } @@ -2878,6 +2877,7 @@ OVERLOADABLE float ldexp(float x, int n) { if (__ocl_math_fastpath_flag) return __gen_ocl_internal_fastpath_ldexp(x, n); + if (x == (float)0.0f) x = 0.0f; return __gen_ocl_internal_ldexp(x, n); } -- 1.7.10.4 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
