[Beignet] [PATCH] fix built-in function "fast_normalize"

Homer Hsing homer.xing at intel.com
Mon Oct 28 02:02:33 CET 2013


if the parameter is zero, then return zero
if the parameter is positive, then return 1.
for other cases, return -1.

Signed-off-by: Homer Hsing <homer.xing at intel.com>
---
 backend/src/ocl_stdlib.tmpl.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h
index a3bf0a0..38d1ab0 100644
--- a/backend/src/ocl_stdlib.tmpl.h
+++ b/backend/src/ocl_stdlib.tmpl.h
@@ -1779,7 +1779,7 @@ INLINE_OVERLOADABLE float fast_distance(float x, float y) { return length(x-y);
 INLINE_OVERLOADABLE float fast_distance(float2 x, float2 y) { return length(x-y); }
 INLINE_OVERLOADABLE float fast_distance(float3 x, float3 y) { return length(x-y); }
 INLINE_OVERLOADABLE float fast_distance(float4 x, float4 y) { return length(x-y); }
-INLINE_OVERLOADABLE float fast_normalize(float x) { return 1.f; }
+INLINE_OVERLOADABLE float fast_normalize(float x) { return x > 0 ? 1.f : (x < 0 ? -1.f : 0.f); }
 INLINE_OVERLOADABLE float2 fast_normalize(float2 x) { return x * rsqrt(dot(x, x)); }
 INLINE_OVERLOADABLE float3 fast_normalize(float3 x) { return x * rsqrt(dot(x, x)); }
 INLINE_OVERLOADABLE float4 fast_normalize(float4 x) { return x * rsqrt(dot(x, x)); }
-- 
1.8.3.2



More information about the Beignet mailing list