diff options
| author | Jeroen Ketema <j.ketema@imperial.ac.uk> | 2014-06-18 19:42:23 +0000 |
|---|---|---|
| committer | Jeroen Ketema <j.ketema@imperial.ac.uk> | 2014-06-18 19:42:23 +0000 |
| commit | 09516fa27d1b5e178ddcdc03d632d4aabcd03aaa (patch) | |
| tree | 34b38b33d7f9bb8f6ba05f4e7efa76872b4699af /libclc | |
| parent | fdee0d3efe808a61d33b65ea6d415e9e36fda259 (diff) | |
| download | bcm5719-llvm-09516fa27d1b5e178ddcdc03d632d4aabcd03aaa.tar.gz bcm5719-llvm-09516fa27d1b5e178ddcdc03d632d4aabcd03aaa.zip | |
Add pown
Reviewed-by: Tom Stellard <tom@stellard.net>
llvm-svn: 211211
Diffstat (limited to 'libclc')
| -rw-r--r-- | libclc/generic/include/clc/clc.h | 1 | ||||
| -rw-r--r-- | libclc/generic/include/clc/math/pown.h | 24 | ||||
| -rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
| -rw-r--r-- | libclc/generic/lib/math/pown.cl | 9 |
4 files changed, 35 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index e0cae98e70d..a975c0d33f2 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -48,6 +48,7 @@ #include <clc/math/mix.h> #include <clc/math/nextafter.h> #include <clc/math/pow.h> +#include <clc/math/pown.h> #include <clc/math/rint.h> #include <clc/math/round.h> #include <clc/math/sin.h> diff --git a/libclc/generic/include/clc/math/pown.h b/libclc/generic/include/clc/math/pown.h new file mode 100644 index 00000000000..bdbf50c1de6 --- /dev/null +++ b/libclc/generic/include/clc/math/pown.h @@ -0,0 +1,24 @@ +#define _CLC_POWN_INTRINSIC "llvm.powi" + +#define _CLC_POWN_DECL(GENTYPE, INTTYPE) \ + _CLC_OVERLOAD _CLC_DECL GENTYPE pown(GENTYPE x, INTTYPE y); + +#define _CLC_VECTOR_POWN_DECL(GENTYPE, INTTYPE) \ + _CLC_POWN_DECL(GENTYPE##2, INTTYPE##2) \ + _CLC_POWN_DECL(GENTYPE##3, INTTYPE##3) \ + _CLC_POWN_DECL(GENTYPE##4, INTTYPE##4) \ + _CLC_POWN_DECL(GENTYPE##8, INTTYPE##8) \ + _CLC_POWN_DECL(GENTYPE##16, INTTYPE##16) + +_CLC_OVERLOAD float pown(float x, int y) __asm(_CLC_POWN_INTRINSIC ".f32"); + +_CLC_VECTOR_POWN_DECL(float, int) + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double pown(double x, int y) __asm(_CLC_POWN_INTRINSIC ".f64"); +_CLC_VECTOR_POWN_DECL(double, int) +#endif + +#undef _CLC_POWN_INTRINSIC +#undef _CLC_POWN_DECL +#undef _CLC_VECTOR_POWN_DECL diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index 02894d968a0..72f890b1c17 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -35,6 +35,7 @@ math/mad.cl math/mix.cl math/clc_nextafter.cl math/nextafter.cl +math/pown.cl math/sincos.cl relational/all.cl relational/any.cl diff --git a/libclc/generic/lib/math/pown.cl b/libclc/generic/lib/math/pown.cl new file mode 100644 index 00000000000..46b354b5eaa --- /dev/null +++ b/libclc/generic/lib/math/pown.cl @@ -0,0 +1,9 @@ +#include <clc/clc.h> + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, pown, float, int) + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, pown, double, int) +#endif |

