This patch has already considered " +inf" and "-inf". It distinguishes +inf and -inf, following the spec.
-----Original Message----- From: Yang, Rong R Sent: Thursday, November 7, 2013 1:14 PM To: Xing, Homer; [email protected] Subject: RE: [Beignet] [PATCH] fix builtin function "fract" Hi, In openCL spec: fract ( +inf, iptr ) returns +0 and +inf in iptr. fract ( -inf, iptr ) returns -0 and -inf in iptr. So should distinguish +inf and -inf. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Homer Hsing Sent: Tuesday, November 05, 2013 4:27 PM To: [email protected] Subject: [Beignet] [PATCH] fix builtin function "fract" return nan for nan, zero for inf Signed-off-by: Homer Hsing <[email protected]> --- backend/src/ocl_stdlib.tmpl.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h index 01216ae..cd14535 100644 --- a/backend/src/ocl_stdlib.tmpl.h +++ b/backend/src/ocl_stdlib.tmpl.h @@ -1717,7 +1717,14 @@ INLINE_OVERLOADABLE float __gen_ocl_internal_fdim(float x, float y) { return __gen_ocl_internal_fmax(x, y) - y; } #define BODY \ + if (isnan(x)) { \ + *p = x; \ + return x; \ + } \ *p = __gen_ocl_internal_floor(x); \ + if (isinf(x)) { \ + return 0; \ + } \ return __gen_ocl_internal_fmin(x - *p, 0x1.FFFFFep-1F); INLINE_OVERLOADABLE float fract(float x, global float *p) { BODY; } INLINE_OVERLOADABLE float fract(float x, local float *p) { BODY; } -- 1.8.3.2 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
