Add exp10
authorJeroen Ketema <j.ketema@imperial.ac.uk>
Wed, 25 Jun 2014 10:06:35 +0000 (10:06 +0000)
committerJeroen Ketema <j.ketema@imperial.ac.uk>
Wed, 25 Jun 2014 10:06:35 +0000 (10:06 +0000)
Reviewed-by: Tom Stellard <tom@stellard.net>
llvm-svn: 211680

libclc/generic/include/clc/clc.h
libclc/generic/include/clc/math/exp10.h [new file with mode: 0644]
libclc/generic/include/clc/math/native_exp10.h [new file with mode: 0644]
libclc/generic/lib/SOURCES
libclc/generic/lib/math/exp10.cl [new file with mode: 0644]
libclc/generic/lib/math/exp10.inc [new file with mode: 0644]

index e93a8c0..e4fbfba 100644 (file)
@@ -35,6 +35,7 @@
 #include <clc/math/cos.h>
 #include <clc/math/ceil.h>
 #include <clc/math/exp.h>
+#include <clc/math/exp10.h>
 #include <clc/math/exp2.h>
 #include <clc/math/fabs.h>
 #include <clc/math/floor.h>
@@ -58,6 +59,7 @@
 #include <clc/math/native_cos.h>
 #include <clc/math/native_divide.h>
 #include <clc/math/native_exp.h>
+#include <clc/math/native_exp10.h>
 #include <clc/math/native_exp2.h>
 #include <clc/math/native_log.h>
 #include <clc/math/native_log2.h>
diff --git a/libclc/generic/include/clc/math/exp10.h b/libclc/generic/include/clc/math/exp10.h
new file mode 100644 (file)
index 0000000..a1d426a
--- /dev/null
@@ -0,0 +1,9 @@
+#undef exp10
+
+#define __CLC_BODY <clc/math/unary_decl.inc>
+#define __CLC_FUNCTION exp10
+
+#include <clc/math/gentype.inc>
+
+#undef __CLC_BODY
+#undef __CLC_FUNCTION
diff --git a/libclc/generic/include/clc/math/native_exp10.h b/libclc/generic/include/clc/math/native_exp10.h
new file mode 100644 (file)
index 0000000..1156f58
--- /dev/null
@@ -0,0 +1 @@
+#define native_exp10 exp10
index 72f890b..c3d0757 100644 (file)
@@ -28,6 +28,7 @@ integer/sub_sat_if.ll
 integer/sub_sat_impl.ll
 integer/upsample.cl
 math/exp.cl
+math/exp10.cl
 math/fmax.cl
 math/fmin.cl
 math/hypot.cl
diff --git a/libclc/generic/lib/math/exp10.cl b/libclc/generic/lib/math/exp10.cl
new file mode 100644 (file)
index 0000000..c8039cb
--- /dev/null
@@ -0,0 +1,8 @@
+#include <clc/clc.h>
+
+#ifdef cl_khr_fp64
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#endif
+
+#define __CLC_BODY <exp10.inc>
+#include <clc/math/gentype.inc>
diff --git a/libclc/generic/lib/math/exp10.inc b/libclc/generic/lib/math/exp10.inc
new file mode 100644 (file)
index 0000000..a592c19
--- /dev/null
@@ -0,0 +1,10 @@
+_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));
+#elif __CLC_FPSIZE == 64
+  return exp2(val * log2(10.0));
+#else
+#error unknown _CLC_FPSIZE
+#endif
+}