From 79b7566210fde40f70bdf4b2e8f914ca0680657c Mon Sep 17 00:00:00 2001 From: Jan Vesely Date: Mon, 13 Nov 2017 18:28:45 +0000 Subject: [PATCH] math: Use precomputed constant for log2(10.0) exp10 CTS fails with or without this change Reviewer: Jeroen Ketema Signed-off-by: Jan Vesely llvm-svn: 318063 --- libclc/generic/include/clc/float/definitions.h | 8 ++++++++ libclc/generic/lib/math/exp10.inc | 4 ++-- libclc/generic/lib/math/native_exp10.inc | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/libclc/generic/include/clc/float/definitions.h b/libclc/generic/include/clc/float/definitions.h index 6010ed2c015a..84a102e58e7a 100644 --- a/libclc/generic/include/clc/float/definitions.h +++ b/libclc/generic/include/clc/float/definitions.h @@ -31,6 +31,10 @@ #define M_SQRT2_F 0x1.6a09e6p+0f #define M_SQRT1_2_F 0x1.6a09e6p-1f +#ifdef __CLC_INTERNAL +#define M_LOG210_F 0x1.a934f0p+1f +#endif + #ifdef cl_khr_fp64 #define HUGE_VAL __builtin_huge_val() @@ -59,6 +63,10 @@ #define M_SQRT2 0x1.6a09e667f3bcdp+0 #define M_SQRT1_2 0x1.6a09e667f3bcdp-1 +#ifdef __CLC_INTERNAL +#define M_LOG210 0x1.a934f0979a371p+1 +#endif + #endif #ifdef cl_khr_fp16 diff --git a/libclc/generic/lib/math/exp10.inc b/libclc/generic/lib/math/exp10.inc index a592c1948799..f5482e4e56e9 100644 --- a/libclc/generic/lib/math/exp10.inc +++ b/libclc/generic/lib/math/exp10.inc @@ -1,9 +1,9 @@ _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE exp10(__CLC_GENTYPE val) { // exp10(x) = exp2(x * log2(10)) #if __CLC_FPSIZE == 32 - return exp2(val * log2(10.0f)); + return exp2(val * M_LOG210_F); #elif __CLC_FPSIZE == 64 - return exp2(val * log2(10.0)); + return exp2(val * M_LOG210); #else #error unknown _CLC_FPSIZE #endif diff --git a/libclc/generic/lib/math/native_exp10.inc b/libclc/generic/lib/math/native_exp10.inc index b82a650070ee..9826b4e2d309 100644 --- a/libclc/generic/lib/math/native_exp10.inc +++ b/libclc/generic/lib/math/native_exp10.inc @@ -1,3 +1,3 @@ _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE native_exp10(__CLC_GENTYPE val) { - return native_exp2(val * native_log2(10)); + return native_exp2(val * M_LOG210_F); }