diff options
-rw-r--r-- | generic/include/clc/clc.h | 1 | ||||
-rw-r--r-- | generic/include/clc/math/binary_intrin.inc | 18 | ||||
-rw-r--r-- | generic/include/clc/math/pow.h | 6 |
3 files changed, 25 insertions, 0 deletions
diff --git a/generic/include/clc/clc.h b/generic/include/clc/clc.h index 2833871..b0cbd4a 100644 --- a/generic/include/clc/clc.h +++ b/generic/include/clc/clc.h @@ -41,6 +41,7 @@ #include <clc/math/log.h> #include <clc/math/log2.h> #include <clc/math/mad.h> +#include <clc/math/pow.h> #include <clc/math/sin.h> #include <clc/math/sqrt.h> #include <clc/math/native_cos.h> diff --git a/generic/include/clc/math/binary_intrin.inc b/generic/include/clc/math/binary_intrin.inc new file mode 100644 index 0000000..30dec7b --- /dev/null +++ b/generic/include/clc/math/binary_intrin.inc @@ -0,0 +1,18 @@ +_CLC_OVERLOAD float FUNCTION(float, float) __asm(INTRINSIC ".f32"); +_CLC_OVERLOAD float2 FUNCTION(float2, float2) __asm(INTRINSIC ".v2f32"); +_CLC_OVERLOAD float3 FUNCTION(float3, float3) __asm(INTRINSIC ".v3f32"); +_CLC_OVERLOAD float4 FUNCTION(float4, float4) __asm(INTRINSIC ".v4f32"); +_CLC_OVERLOAD float8 FUNCTION(float8, float8) __asm(INTRINSIC ".v8f32"); +_CLC_OVERLOAD float16 FUNCTION(float16, float16) __asm(INTRINSIC ".v16f32"); + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double FUNCTION(double, double) __asm(INTRINSIC ".f64"); +_CLC_OVERLOAD double2 FUNCTION(double2, double2) __asm(INTRINSIC ".v2f64"); +_CLC_OVERLOAD double3 FUNCTION(double3, double3) __asm(INTRINSIC ".v3f64"); +_CLC_OVERLOAD double4 FUNCTION(double4, double4) __asm(INTRINSIC ".v4f64"); +_CLC_OVERLOAD double8 FUNCTION(double8, double8) __asm(INTRINSIC ".v8f64"); +_CLC_OVERLOAD double16 FUNCTION(double16, double16) __asm(INTRINSIC ".v16f64"); +#endif + +#undef FUNCTION +#undef INTRINSIC diff --git a/generic/include/clc/math/pow.h b/generic/include/clc/math/pow.h new file mode 100644 index 0000000..208d06d --- /dev/null +++ b/generic/include/clc/math/pow.h @@ -0,0 +1,6 @@ +#undef pow +#define pow __clc_pow + +#define FUNCTION __clc_pow +#define INTRINSIC "llvm.pow" +#include <clc/math/binary_intrin.inc> |