diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2012-05-29 00:42:38 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2012-05-29 00:42:38 +0000 |
commit | b7fdecd2ec18db04489b958b23ab74f1fc8e5693 (patch) | |
tree | 46e3a93bf450a33c770e44f0f05b334d98911e66 /libclc | |
parent | d3c242ae642e3a88b5e6421b5637e48a051e8a5c (diff) | |
download | bcm5719-llvm-b7fdecd2ec18db04489b958b23ab74f1fc8e5693.tar.gz bcm5719-llvm-b7fdecd2ec18db04489b958b23ab74f1fc8e5693.zip |
Implement mad builtin.
llvm-svn: 157599
Diffstat (limited to 'libclc')
-rw-r--r-- | libclc/generic/include/clc/clc.h | 1 | ||||
-rw-r--r-- | libclc/generic/include/clc/math/gentype.inc | 51 | ||||
-rw-r--r-- | libclc/generic/include/clc/math/mad.h | 2 | ||||
-rw-r--r-- | libclc/generic/include/clc/math/mad.inc | 1 | ||||
-rw-r--r-- | libclc/generic/lib/SOURCES | 1 | ||||
-rw-r--r-- | libclc/generic/lib/math/mad.cl | 4 | ||||
-rw-r--r-- | libclc/generic/lib/math/mad.inc | 3 |
7 files changed, 63 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 0e640bada57..3b78d29f74e 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -38,6 +38,7 @@ #include <clc/math/fabs.h> #include <clc/math/log.h> #include <clc/math/log2.h> +#include <clc/math/mad.h> #include <clc/math/sin.h> #include <clc/math/sqrt.h> #include <clc/math/native_cos.h> diff --git a/libclc/generic/include/clc/math/gentype.inc b/libclc/generic/include/clc/math/gentype.inc new file mode 100644 index 00000000000..450692080fe --- /dev/null +++ b/libclc/generic/include/clc/math/gentype.inc @@ -0,0 +1,51 @@ +#define GENTYPE float +#include BODY +#undef GENTYPE + +#define GENTYPE float2 +#include BODY +#undef GENTYPE + +#define GENTYPE float3 +#include BODY +#undef GENTYPE + +#define GENTYPE float4 +#include BODY +#undef GENTYPE + +#define GENTYPE float8 +#include BODY +#undef GENTYPE + +#define GENTYPE float16 +#include BODY +#undef GENTYPE + +#ifdef cl_khr_fp64 +#define GENTYPE double +#include BODY +#undef GENTYPE + +#define GENTYPE double2 +#include BODY +#undef GENTYPE + +#define GENTYPE double3 +#include BODY +#undef GENTYPE + +#define GENTYPE double4 +#include BODY +#undef GENTYPE + +#define GENTYPE double8 +#include BODY +#undef GENTYPE + +#define GENTYPE double16 +#include BODY +#undef GENTYPE +#endif + +#undef BODY diff --git a/libclc/generic/include/clc/math/mad.h b/libclc/generic/include/clc/math/mad.h new file mode 100644 index 00000000000..58f7674d2fb --- /dev/null +++ b/libclc/generic/include/clc/math/mad.h @@ -0,0 +1,2 @@ +#define BODY <clc/math/mad.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/mad.inc b/libclc/generic/include/clc/math/mad.inc new file mode 100644 index 00000000000..5200d67b360 --- /dev/null +++ b/libclc/generic/include/clc/math/mad.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL GENTYPE mad(GENTYPE a, GENTYPE b, GENTYPE c); diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES index 022abcfce5c..1da1c91127e 100644 --- a/libclc/generic/lib/SOURCES +++ b/libclc/generic/lib/SOURCES @@ -7,3 +7,4 @@ integer/abs.cl integer/add_sat.cl integer/add_sat.ll integer/add_sat_impl.ll +math/mad.cl diff --git a/libclc/generic/lib/math/mad.cl b/libclc/generic/lib/math/mad.cl new file mode 100644 index 00000000000..ff0cdbbecf0 --- /dev/null +++ b/libclc/generic/lib/math/mad.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define BODY <mad.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/mad.inc b/libclc/generic/lib/math/mad.inc new file mode 100644 index 00000000000..aec9c06ddd8 --- /dev/null +++ b/libclc/generic/lib/math/mad.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF GENTYPE mad(GENTYPE a, GENTYPE b, GENTYPE c) { + return a * b + c; +} |