the same as convert_double_rtz for ulong

Signed-off-by: rander <rander.w...@intel.com>
---
 backend/src/libocl/script/ocl_convert.sh | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/backend/src/libocl/script/ocl_convert.sh 
b/backend/src/libocl/script/ocl_convert.sh
index aa3ac6c..4a1c8c7 100755
--- a/backend/src/libocl/script/ocl_convert.sh
+++ b/backend/src/libocl/script/ocl_convert.sh
@@ -1287,7 +1287,19 @@ OVERLOADABLE double convert_double_rtz(ulong x)
 
 OVERLOADABLE double convert_double_rtn(ulong x)
 {
-       return 0;
+       long exp;
+       long ret, ma, tmp;
+       int msbOne = 64 -clz(x);
+       exp = msbOne + DF_EXP_BIAS - 1;
+       ret = (exp << 52);
+
+       int shift = abs(53 - msbOne);
+       tmp = ret | ((x << shift) &DF_MAN_MASK);
+       ret |= (x >> shift) &DF_MAN_MASK;
+       ret = (msbOne < 54) ? tmp:ret;
+       ret = (!msbOne) ? 0:ret;
+
+       return as_double(ret);
 }
 
 OVERLOADABLE double convert_double_rte(ulong x)
-- 
2.7.4

_______________________________________________
Beignet mailing list
Beignet@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to