From d3c242ae642e3a88b5e6421b5637e48a051e8a5c Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 29 May 2012 00:42:29 +0000 Subject: [PATCH] Implement exp, exp2, log, log2, native_exp, native_exp2, native_log, native_log2. Patch by Joshua Cranmer! llvm-svn: 157598 --- libclc/generic/include/clc/clc.h | 8 ++++++++ libclc/generic/include/clc/math/exp.h | 4 ++++ libclc/generic/include/clc/math/exp2.h | 6 ++++++ libclc/generic/include/clc/math/log.h | 4 ++++ libclc/generic/include/clc/math/log2.h | 6 ++++++ libclc/generic/include/clc/math/native_exp.h | 1 + libclc/generic/include/clc/math/native_exp2.h | 1 + libclc/generic/include/clc/math/native_log.h | 1 + libclc/generic/include/clc/math/native_log2.h | 1 + 9 files changed, 32 insertions(+) create mode 100644 libclc/generic/include/clc/math/exp.h create mode 100644 libclc/generic/include/clc/math/exp2.h create mode 100644 libclc/generic/include/clc/math/log.h create mode 100644 libclc/generic/include/clc/math/log2.h create mode 100644 libclc/generic/include/clc/math/native_exp.h create mode 100644 libclc/generic/include/clc/math/native_exp2.h create mode 100644 libclc/generic/include/clc/math/native_log.h create mode 100644 libclc/generic/include/clc/math/native_log2.h diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 72e2f23..0e640ba 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -33,11 +33,19 @@ /* 6.11.2 Math Functions */ #include +#include +#include #include +#include +#include #include #include #include #include +#include +#include +#include +#include #include #include diff --git a/libclc/generic/include/clc/math/exp.h b/libclc/generic/include/clc/math/exp.h new file mode 100644 index 0000000..dbc4b84 --- /dev/null +++ b/libclc/generic/include/clc/math/exp.h @@ -0,0 +1,4 @@ +#undef exp + +// exp(x) = exp2(x * log2(e) +#define exp(val) (__clc_exp2((val) * 1.44269504f)) diff --git a/libclc/generic/include/clc/math/exp2.h b/libclc/generic/include/clc/math/exp2.h new file mode 100644 index 0000000..fe91633 --- /dev/null +++ b/libclc/generic/include/clc/math/exp2.h @@ -0,0 +1,6 @@ +#undef exp2 +#define exp2 __clc_exp2 + +#define FUNCTION __clc_exp2 +#define INTRINSIC "llvm.exp2" +#include diff --git a/libclc/generic/include/clc/math/log.h b/libclc/generic/include/clc/math/log.h new file mode 100644 index 0000000..644f857 --- /dev/null +++ b/libclc/generic/include/clc/math/log.h @@ -0,0 +1,4 @@ +#undef log + +// log(x) = log2(x) * (1/log2(e)) +#define log(val) (__clc_log2(val) * 0.693147181f) diff --git a/libclc/generic/include/clc/math/log2.h b/libclc/generic/include/clc/math/log2.h new file mode 100644 index 0000000..d8a8842 --- /dev/null +++ b/libclc/generic/include/clc/math/log2.h @@ -0,0 +1,6 @@ +#undef log2 +#define log2 __clc_log2 + +#define FUNCTION __clc_log2 +#define INTRINSIC "llvm.log2" +#include diff --git a/libclc/generic/include/clc/math/native_exp.h b/libclc/generic/include/clc/math/native_exp.h new file mode 100644 index 0000000..e206de6 --- /dev/null +++ b/libclc/generic/include/clc/math/native_exp.h @@ -0,0 +1 @@ +#define native_exp exp diff --git a/libclc/generic/include/clc/math/native_exp2.h b/libclc/generic/include/clc/math/native_exp2.h new file mode 100644 index 0000000..b675939 --- /dev/null +++ b/libclc/generic/include/clc/math/native_exp2.h @@ -0,0 +1 @@ +#define native_exp2 exp2 diff --git a/libclc/generic/include/clc/math/native_log.h b/libclc/generic/include/clc/math/native_log.h new file mode 100644 index 0000000..7805a39 --- /dev/null +++ b/libclc/generic/include/clc/math/native_log.h @@ -0,0 +1 @@ +#define native_log log diff --git a/libclc/generic/include/clc/math/native_log2.h b/libclc/generic/include/clc/math/native_log2.h new file mode 100644 index 0000000..0c692ee --- /dev/null +++ b/libclc/generic/include/clc/math/native_log2.h @@ -0,0 +1 @@ +#define native_log2 log2 -- 2.7.4