diff options
author | Jan Vesely <jan.vesely@rutgers.edu> | 2017-11-14 21:55:41 +0000 |
---|---|---|
committer | Jan Vesely <jan.vesely@rutgers.edu> | 2017-11-14 21:55:41 +0000 |
commit | 383fbd050cff65bd7568f5b94a18ee2c86273600 (patch) | |
tree | d6b718636e3d3b40476aa6607b8c3bbe4ad8ed2e /libclc | |
parent | 29a5c03cc24dc7315adbf881e9082ccab4c62904 (diff) | |
download | bcm5719-llvm-383fbd050cff65bd7568f5b94a18ee2c86273600.tar.gz bcm5719-llvm-383fbd050cff65bd7568f5b94a18ee2c86273600.zip |
native_powr: Switch implementation to native_exp2 and native_log2
v2: don't use assume
check only for x<0, the other conditions are handled transparently
v3: don't check inputs at all, nan propagation works as expected
Reviewer: Jeroen Ketema
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 318204
Diffstat (limited to 'libclc')
-rw-r--r-- | libclc/generic/include/clc/math/native_powr.h | 8 | ||||
-rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
-rw-r--r-- | libclc/generic/lib/math/native_powr.cl | 5 | ||||
-rw-r--r-- | libclc/generic/lib/math/native_powr.inc | 5 |
4 files changed, 18 insertions, 1 deletions
diff --git a/libclc/generic/include/clc/math/native_powr.h b/libclc/generic/include/clc/math/native_powr.h index e8a37d9cb06..c31161a18c0 100644 --- a/libclc/generic/include/clc/math/native_powr.h +++ b/libclc/generic/include/clc/math/native_powr.h @@ -1 +1,7 @@ -#define native_powr pow +#define __CLC_BODY <clc/math/binary_decl_tt.inc> +#define __CLC_FUNCTION native_powr + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index 355741c8756..ad5a7437021 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -127,6 +127,7 @@ math/native_exp2.cl math/native_log.cl math/native_log10.cl math/native_log2.cl +math/native_powr.cl math/native_recip.cl math/native_rsqrt.cl math/native_sin.cl diff --git a/libclc/generic/lib/math/native_powr.cl b/libclc/generic/lib/math/native_powr.cl new file mode 100644 index 00000000000..452bc6fdfea --- /dev/null +++ b/libclc/generic/lib/math/native_powr.cl @@ -0,0 +1,5 @@ +#include <clc/clc.h> + +#define __CLC_BODY <native_powr.inc> +#define __FLOAT_ONLY +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/native_powr.inc b/libclc/generic/lib/math/native_powr.inc new file mode 100644 index 00000000000..f2c30a9cb5e --- /dev/null +++ b/libclc/generic/lib/math/native_powr.inc @@ -0,0 +1,5 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE native_powr(__CLC_GENTYPE x, __CLC_GENTYPE y) { + // x^y == 2^{log2 x^y} == 2^{y * log2 x} + // for x < 0 propagate nan created by log2 + return native_exp2(y * native_log2(x)); +} |