From 4c968823667517141d76dc9510c5226426840abd Mon Sep 17 00:00:00 2001 From: Maneesh Gupta Date: Thu, 23 Nov 2017 09:57:24 +0530 Subject: [PATCH] Fix float2int rounding functions Change-Id: I67943859a6344c5eec0eaa23418c9b802ef72468 --- src/device_functions.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/device_functions.cpp b/src/device_functions.cpp index 615ae4d0b7..3c9bf334fa 100644 --- a/src/device_functions.cpp +++ b/src/device_functions.cpp @@ -23,6 +23,11 @@ THE SOFTWARE. #include #include "device_util.h" +extern "C" float __ocml_floor_f32(float); +extern "C" float __ocml_rint_f32(float); +extern "C" float __ocml_ceil_f32(float); +extern "C" float __ocml_trunc_f32(float); + struct holder64Bit{ union{ double d; @@ -151,19 +156,19 @@ __device__ long long int __double_as_longlong(double x) __device__ int __float2int_rd(float x) { - return (int)x; + return (int)__ocml_floor_f32(x); } __device__ int __float2int_rn(float x) { - return (int)x; + return (int)__ocml_rint_f32(x); } __device__ int __float2int_ru(float x) { - return (int)x; + return (int)__ocml_ceil_f32(x); } __device__ int __float2int_rz(float x) { - return (int)x; + return (int)__ocml_trunc_f32(x); } __device__ long long int __float2ll_rd(float x)