summaryrefslogtreecommitdiffstats
path: root/libclc
diff options
context:
space:
mode:
authorJan Vesely <jan.vesely@rutgers.edu>2017-11-13 18:28:45 +0000
committerJan Vesely <jan.vesely@rutgers.edu>2017-11-13 18:28:45 +0000
commit79b7566210fde40f70bdf4b2e8f914ca0680657c (patch)
tree81f88ce569d0aed213c29dba90642fafa6b8443b /libclc
parent0a7d0230fcf7d0fa0f90dd9800b9106fd216c93a (diff)
downloadbcm5719-llvm-79b7566210fde40f70bdf4b2e8f914ca0680657c.tar.gz
bcm5719-llvm-79b7566210fde40f70bdf4b2e8f914ca0680657c.zip
math: Use precomputed constant for log2(10.0)
exp10 CTS fails with or without this change Reviewer: Jeroen Ketema Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 318063
Diffstat (limited to 'libclc')
-rw-r--r--libclc/generic/include/clc/float/definitions.h8
-rw-r--r--libclc/generic/lib/math/exp10.inc4
-rw-r--r--libclc/generic/lib/math/native_exp10.inc2
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 6010ed2c015..84a102e58e7 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 a592c194879..f5482e4e56e 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 b82a650070e..9826b4e2d30 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);
}
OpenPOWER on IntegriCloud