summaryrefslogtreecommitdiffstats
path: root/libclc/generic/lib/math/log.cl
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2015-07-24 18:07:14 +0000
committerTom Stellard <thomas.stellard@amd.com>2015-07-24 18:07:14 +0000
commit7a09e88b6eac8c6b02ba02ef6b9c9d260247b7df (patch)
treeb6c37707096398927703333b18d87c2ce7bd93ba /libclc/generic/lib/math/log.cl
parent44b6117dfde30d6cc292fabca8ecb0cef4657f7a (diff)
downloadbcm5719-llvm-7a09e88b6eac8c6b02ba02ef6b9c9d260247b7df.tar.gz
bcm5719-llvm-7a09e88b6eac8c6b02ba02ef6b9c9d260247b7df.zip
Fix double implementation of log
We need to use M_LOG2E instead of M_LOG2E_F. llvm-svn: 243132
Diffstat (limited to 'libclc/generic/lib/math/log.cl')
-rw-r--r--libclc/generic/lib/math/log.cl26
1 files changed, 26 insertions, 0 deletions
diff --git a/libclc/generic/lib/math/log.cl b/libclc/generic/lib/math/log.cl
new file mode 100644
index 00000000000..ec1faa12606
--- /dev/null
+++ b/libclc/generic/lib/math/log.cl
@@ -0,0 +1,26 @@
+#include <clc/clc.h>
+#include "../clcmacro.h"
+
+/*
+ *log(x) = log2(x) * (1/log2(e))
+ */
+
+_CLC_OVERLOAD _CLC_DEF float log(float x)
+{
+ return log2(x) * (1.0f / M_LOG2E_F);
+}
+
+_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, log, float);
+
+#ifdef cl_khr_fp64
+
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+
+_CLC_OVERLOAD _CLC_DEF double log(double x)
+{
+ return log2(x) * (1.0 / M_LOG2E);
+}
+
+_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, log, double);
+
+#endif // cl_khr_fp64
OpenPOWER on IntegriCloud