[Pkg-opencl-devel] [beignet] 28/47: Imported Debian patch 0.2+git20130730+da26376-1

Andreas Beckmann anbe at moszumanska.debian.org
Fri Oct 31 21:45:49 UTC 2014


This is an automated email from the git hooks/post-receive script.

anbe pushed a commit to branch master
in repository beignet.

commit 57507a085d0d1b684a3d77e8224e3871345976c0
Author: Simon Richter <sjr at debian.org>
Date:   Tue Jul 30 13:43:36 2013 +0200

    Imported Debian patch 0.2+git20130730+da26376-1
---
 debian/beignet.install                             |    7 +-
 debian/changelog                                   |    6 +
 debian/control                                     |    4 +-
 ...-OpenCL-1.2-definitions-required-for-ICD.patch} |    6 +-
 ...0001-support-built-in-function-smoothstep.patch |   39 -
 debian/patches/0002-test-function-smoothstep.patch |  105 -
 .../0003-support-built-in-function-bitselect.patch |   51 -
 .../0004-test-built-in-function-bitselect.patch    |   97 -
 .../0005-add-built-in-function-mad_sat.patch       |   78 -
 debian/patches/0006-test-function-mad_sat.patch    |   91 -
 debian/patches/0007-built-in-function-sign.patch   |   44 -
 .../patches/0008-test-built-in-function-sign.patch |   92 -
 ...ectorial-built-in-functions-min-max-clamp.patch |   68 -
 .../0010-improve-clCreateContext-conformance.patch |   87 -
 ...-clEnqueueMapBuffer-and-clCreateBuffer-AP.patch |  293 -
 debian/patches/0012-support-clGetImageInfo.patch   |  115 -
 .../0013-Add-vector-argument-test-case.patch       |   75 -
 debian/patches/flags                               |   20 +-
 debian/patches/private                             |   21 +-
 debian/patches/series                              |   13 -
 debian/patches/vector                              | 6342 ++++++++++++++++++++
 debian/source/options                              |    1 +
 22 files changed, 6383 insertions(+), 1272 deletions(-)

diff --git a/debian/beignet.install b/debian/beignet.install
index 52a6e7f..a76ddbf 100644
--- a/debian/beignet.install
+++ b/debian/beignet.install
@@ -1,3 +1,4 @@
-debian/intel.icd		/etc/OpenCL/vendors
-usr/lib/beignet/libcl.so	/usr/lib/beignet
-usr/lib/beignet/libgbe.so	/usr/lib/beignet
+debian/intel.icd			/etc/OpenCL/vendors
+usr/lib/beignet/ocl_stdlib.h.pch	/usr/lib/beignet
+usr/lib/beignet/libcl.so		/usr/lib/beignet
+usr/lib/beignet/libgbe.so		/usr/lib/beignet
diff --git a/debian/changelog b/debian/changelog
index 6e17b80..1c777af 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+beignet (0.2+git20130730+da26376-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Simon Richter <sjr at debian.org>  Tue, 30 Jul 2013 13:43:36 +0200
+
 beignet (0.2+git20130710+613e829-1) experimental; urgency=low
 
   * New upstream release
diff --git a/debian/control b/debian/control
index 86ecdd7..175228c 100644
--- a/debian/control
+++ b/debian/control
@@ -1,10 +1,12 @@
 Source: beignet
 Priority: extra
 Maintainer: Simon Richter <sjr at debian.org>
-Build-Depends: debhelper (>= 9), cmake, pkg-config,
+Build-Depends: debhelper (>= 9), cmake, pkg-config, python-minimal,
  ocl-icd-dev, ocl-icd-opencl-dev,
  libdrm-dev, libxfixes-dev, libxext-dev,
  llvm-dev (>= 1:3.2),
+ clang (>= 1:3.2) | clang (>= 3.2),
+ clang (>= 1:3.2) | clang (<< 1:0),
  libclang-dev (>= 1:3.2) | libclang-dev (>= 3.2),
  libclang-dev (>= 1:3.2) | libclang-dev (<< 1:0),
  libgl1-mesa-dev (>= 9) [!kfreebsd-any],
diff --git a/debian/patches/0014-Readd-OpenCL-1.2-definitions-required-for-ICD.patch b/debian/patches/0001-Readd-OpenCL-1.2-definitions-required-for-ICD.patch
similarity index 95%
rename from debian/patches/0014-Readd-OpenCL-1.2-definitions-required-for-ICD.patch
rename to debian/patches/0001-Readd-OpenCL-1.2-definitions-required-for-ICD.patch
index bdd657c..eb569f1 100644
--- a/debian/patches/0014-Readd-OpenCL-1.2-definitions-required-for-ICD.patch
+++ b/debian/patches/0001-Readd-OpenCL-1.2-definitions-required-for-ICD.patch
@@ -1,7 +1,7 @@
-From 9ce43445e101f8a48adb4a641d7f601f226d0362 Mon Sep 17 00:00:00 2001
+From 074355de8299078b334cc8d76ec1964da64bd68e Mon Sep 17 00:00:00 2001
 From: Simon Richter <Simon.Richter at hogyros.de>
 Date: Wed, 19 Jun 2013 11:30:36 +0200
-Subject: [PATCH 14/14] Readd OpenCL 1.2 definitions required for ICD
+Subject: [PATCH 1/2] Readd OpenCL 1.2 definitions required for ICD
 To: beignet at lists.freedesktop.org
 
 The definition for the ICD dispatch table requires a few additional
@@ -70,7 +70,7 @@ index 043b048..9a2f17a 100644
  #endif
  
 diff --git a/src/cl_mem.h b/src/cl_mem.h
-index 66518a6..d00743f 100644
+index 1b1709a..08515d0 100644
 --- a/src/cl_mem.h
 +++ b/src/cl_mem.h
 @@ -29,18 +29,6 @@
diff --git a/debian/patches/0001-support-built-in-function-smoothstep.patch b/debian/patches/0001-support-built-in-function-smoothstep.patch
deleted file mode 100644
index 86886a1..0000000
--- a/debian/patches/0001-support-built-in-function-smoothstep.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0b85fd00b45b03468f950beacb9c6658f7187c5f Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Tue, 9 Jul 2013 09:41:58 +0800
-Subject: [PATCH 01/14] support built-in function "smoothstep"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- backend/src/ocl_stdlib.h |    6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/backend/src/ocl_stdlib.h b/backend/src/ocl_stdlib.h
-index 0c78c8e..ce03ed8 100644
---- a/backend/src/ocl_stdlib.h
-+++ b/backend/src/ocl_stdlib.h
-@@ -5072,6 +5072,11 @@ INLINE_OVERLOADABLE float4 radians(float4 r) { return (float4)(radians(r.s0), ra
- INLINE_OVERLOADABLE float8 radians(float8 r) { return (float8)(radians(r.s0), radians(r.s1), radians(r.s2), radians(r.s3), radians(r.s4), radians(r.s5), radians(r.s6), radians(r.s7)); }
- INLINE_OVERLOADABLE float16 radians(float16 r) { return (float16)(radians(r.s0), radians(r.s1), radians(r.s2), radians(r.s3), radians(r.s4), radians(r.s5), radians(r.s6), radians(r.s7), radians(r.s8), radians(r.s9), radians(r.sa), radians(r.sb), radians(r.sc), radians(r.sd), radians(r.se), radians(r.sf)); }
- 
-+INLINE_OVERLOADABLE float smoothstep(float e0, float e1, float x) {
-+  x = clamp((x - e0) / (e1 - e0), 0.f, 1.f);
-+  return x * x * (3 - 2 * x);
-+}
-+
- INLINE_OVERLOADABLE float __gen_ocl_internal_fmax(float a, float b) { return max(a,b); }
- INLINE_OVERLOADABLE float __gen_ocl_internal_fmin(float a, float b) { return min(a,b); }
- INLINE_OVERLOADABLE float __gen_ocl_internal_maxmag(float x, float y) {
-@@ -5423,6 +5428,7 @@ DECL_VECTOR_2OP(rootn, float, int);
-   }
- DECL_VECTOR_3OP(mad, float);
- DECL_VECTOR_3OP(mix, float);
-+DECL_VECTOR_3OP(smoothstep, float);
- #undef DECL_VECTOR_3OP
- 
- // mix requires more variants
--- 
-1.7.10.4
-
diff --git a/debian/patches/0002-test-function-smoothstep.patch b/debian/patches/0002-test-function-smoothstep.patch
deleted file mode 100644
index 9b68aaf..0000000
--- a/debian/patches/0002-test-function-smoothstep.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 95927c71477fc34063a33d4511b9bba5bebd6971 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Tue, 9 Jul 2013 09:41:59 +0800
-Subject: [PATCH 02/14] test function "smoothstep"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- kernels/compiler_smoothstep.cl |    4 +++
- utests/CMakeLists.txt          |    1 +
- utests/compiler_smoothstep.cpp |   58 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 63 insertions(+)
- create mode 100644 kernels/compiler_smoothstep.cl
- create mode 100644 utests/compiler_smoothstep.cpp
-
-diff --git a/kernels/compiler_smoothstep.cl b/kernels/compiler_smoothstep.cl
-new file mode 100644
-index 0000000..d3b7da4
---- /dev/null
-+++ b/kernels/compiler_smoothstep.cl
-@@ -0,0 +1,4 @@
-+kernel void compiler_smoothstep(global float *src1, global float *src2, global float *src3, global float *dst) {
-+  int i = get_global_id(0);
-+  dst[i] = smoothstep(src1[i], src2[i], src3[i]);
-+}
-diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
-index 621acad..26c0540 100644
---- a/utests/CMakeLists.txt
-+++ b/utests/CMakeLists.txt
-@@ -67,6 +67,7 @@ set (utests_sources
-   compiler_saturate_sub.cpp
-   compiler_shift_right.cpp
-   compiler_short_scatter.cpp
-+  compiler_smoothstep.cpp
-   compiler_uint2_copy.cpp
-   compiler_uint3_copy.cpp
-   compiler_uint8_copy.cpp
-diff --git a/utests/compiler_smoothstep.cpp b/utests/compiler_smoothstep.cpp
-new file mode 100644
-index 0000000..760063b
---- /dev/null
-+++ b/utests/compiler_smoothstep.cpp
-@@ -0,0 +1,58 @@
-+#include <cmath>
-+#include "utest_helper.hpp"
-+
-+float cpu(float e0, float e1, float x)
-+{
-+  x = (x - e0) / (e1 - e0);
-+  if (x >= 1)
-+    x = 1.f;
-+  if (x <= 0)
-+    x = 0.f;
-+  return x * x * (3 - 2 * x);
-+}
-+
-+void compiler_smoothstep(void)
-+{
-+  const int n = 32;
-+  float src1[n], src2[n], src3[n];
-+
-+  // Setup kernel and buffers
-+  OCL_CREATE_KERNEL("compiler_smoothstep");
-+  OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[2], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[3], 0, n * sizeof(float), NULL);
-+  OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
-+  OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]);
-+  OCL_SET_ARG(2, sizeof(cl_mem), &buf[2]);
-+  OCL_SET_ARG(3, sizeof(cl_mem), &buf[3]);
-+  globals[0] = n;
-+  locals[0] = 16;
-+
-+  OCL_MAP_BUFFER(0);
-+  OCL_MAP_BUFFER(1);
-+  OCL_MAP_BUFFER(2);
-+  for (int i = 0; i < n; ++i) {
-+    float a = 0.1f * (rand() & 15) - 0.75f;
-+    float b = a + 0.1f * (rand() & 15);
-+    float c = 0.1f * (rand() & 15) - 0.75f;
-+    src1[i] = ((float*)buf_data[0])[i] = a;
-+    src2[i] = ((float*)buf_data[1])[i] = b;
-+    src3[i] = ((float*)buf_data[2])[i] = c;
-+  }
-+  OCL_UNMAP_BUFFER(0);
-+  OCL_UNMAP_BUFFER(1);
-+  OCL_UNMAP_BUFFER(2);
-+
-+  OCL_NDRANGE(1);
-+
-+  OCL_MAP_BUFFER(3);
-+  for (int i = 0; i < n; ++i) {
-+    float a = ((float*)buf_data[3])[i];
-+    float b = cpu(src1[i], src2[i], src3[i]);
-+    OCL_ASSERT(fabsf(a - b) < 1e-4f);
-+  }
-+  OCL_UNMAP_BUFFER(3);
-+}
-+
-+MAKE_UTEST_FROM_FUNCTION(compiler_smoothstep);
--- 
-1.7.10.4
-
diff --git a/debian/patches/0003-support-built-in-function-bitselect.patch b/debian/patches/0003-support-built-in-function-bitselect.patch
deleted file mode 100644
index 1005039..0000000
--- a/debian/patches/0003-support-built-in-function-bitselect.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 66d4d36b06eaaa7c49131f93617b433e2583b701 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 09:29:41 +0800
-Subject: [PATCH 03/14] support built-in function "bitselect"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- backend/src/ocl_stdlib.h |   25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/backend/src/ocl_stdlib.h b/backend/src/ocl_stdlib.h
-index ce03ed8..ed96e5e 100644
---- a/backend/src/ocl_stdlib.h
-+++ b/backend/src/ocl_stdlib.h
-@@ -4290,6 +4290,31 @@ DEC(16);
- #undef DEC4
- #undef DEC8
- #undef DEC16
-+
-+#define DEF(type) INLINE_OVERLOADABLE type bitselect(type a, type b, type c) { return (a & ~c) | (b & c); }
-+DEF(char); DEF(uchar); DEF(short); DEF(ushort); DEF(int); DEF(uint)
-+#undef DEF
-+INLINE_OVERLOADABLE float bitselect(float a, float b, float c) {
-+  return as_float(bitselect(as_int(a), as_int(b), as_int(c)));
-+}
-+#define DEC2(type) INLINE_OVERLOADABLE type##2 bitselect(type##2 a, type##2 b, type##2 c) { return (type##2)(bitselect(a.s0, b.s0, c.s0), bitselect(a.s1, b.s1, c.s1)); }
-+#define DEC3(type) INLINE_OVERLOADABLE type##3 bitselect(type##3 a, type##3 b, type##3 c) { return (type##3)(bitselect(a.s0, b.s0, c.s0), bitselect(a.s1, b.s1, c.s1), bitselect(a.s2, b.s2, c.s2)); }
-+#define DEC4(type) INLINE_OVERLOADABLE type##4 bitselect(type##4 a, type##4 b, type##4 c) { return (type##4)(bitselect(a.s0, b.s0, c.s0), bitselect(a.s1, b.s1, c.s1), bitselect(a.s2, b.s2, c.s2), bitselect(a.s3, b.s3, c.s3)); }
-+#define DEC8(type) INLINE_OVERLOADABLE type##8 bitselect(type##8 a, type##8 b, type##8 c) { return (type##8)(bitselect(a.s0, b.s0, c.s0), bitselect(a.s1, b.s1, c.s1), bitselect(a.s2, b.s2, c.s2), bitselect(a.s3, b.s3, c.s3), bitselect(a.s4, b.s4, c.s4), bitselect(a.s5, b.s5, c.s5), bitselect(a.s6, b.s6, c.s6), bitselect(a.s7, b.s7, c.s7)); }
-+#define DEC16(type) INLINE_OVERLOADABLE type##16 bitselect(type##16 a, type##16 b, type##16 c) { return (type##16)(bitselect(a.s0, b.s0, c.s0), bitselect(a.s1, b.s1, c.s1), bitselect(a.s2, b.s2, c.s2), bitselect(a.s3, b.s3, c.s3), bitselect(a.s4, b.s4, c.s4), bitselect(a.s5, b.s5, c.s5), bitselect(a.s6, b.s6, c.s6), bitselect(a.s7, b.s7, c.s7), bitselect(a.s8, b.s8, c.s8), bitselect(a.s9, b.s9, c.s9), bitselect(a.sa, b.sa, c.sa), bitselect(a.sb, b.sb, c.sb), bitselect(a.sc, b.sc, c.sc), [...]
-+#define DEF(n) DEC##n(char); DEC##n(uchar); DEC##n(short); DEC##n(ushort); DEC##n(int); DEC##n(uint); DEC##n(float)
-+DEF(2)
-+DEF(3)
-+DEF(4)
-+DEF(8)
-+DEF(16)
-+#undef DEF
-+#undef DEC2
-+#undef DEC3
-+#undef DEC4
-+#undef DEC8
-+#undef DEC16
-+
- /////////////////////////////////////////////////////////////////////////////
- // Integer built-in functions
- /////////////////////////////////////////////////////////////////////////////
--- 
-1.7.10.4
-
diff --git a/debian/patches/0004-test-built-in-function-bitselect.patch b/debian/patches/0004-test-built-in-function-bitselect.patch
deleted file mode 100644
index 3744bb3..0000000
--- a/debian/patches/0004-test-built-in-function-bitselect.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From bf5863c0f76601451637f5a029166a8af56a2d6a Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 09:29:42 +0800
-Subject: [PATCH 04/14] test built-in function "bitselect"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- kernels/builtin_bitselect.cl |    4 ++++
- utests/CMakeLists.txt        |    1 +
- utests/builtin_bitselect.cpp |   50 ++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 55 insertions(+)
- create mode 100644 kernels/builtin_bitselect.cl
- create mode 100644 utests/builtin_bitselect.cpp
-
-diff --git a/kernels/builtin_bitselect.cl b/kernels/builtin_bitselect.cl
-new file mode 100644
-index 0000000..9b60cbe
---- /dev/null
-+++ b/kernels/builtin_bitselect.cl
-@@ -0,0 +1,4 @@
-+kernel void builtin_bitselect(global float *src1, global float *src2, global float *src3, global float *dst) {
-+  int i = get_global_id(0);
-+  dst[i] = bitselect(src1[i], src2[i], src3[i]);
-+}
-diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
-index 26c0540..2e18b2c 100644
---- a/utests/CMakeLists.txt
-+++ b/utests/CMakeLists.txt
-@@ -100,6 +100,7 @@ set (utests_sources
-   compiler_vector_load_store.cpp
-   compiler_cl_finish.cpp
-   get_cl_info.cpp
-+  builtin_bitselect.cpp
-   buildin_work_dim.cpp
-   builtin_global_size.cpp
-   runtime_createcontext.cpp
-diff --git a/utests/builtin_bitselect.cpp b/utests/builtin_bitselect.cpp
-new file mode 100644
-index 0000000..37fb8df
---- /dev/null
-+++ b/utests/builtin_bitselect.cpp
-@@ -0,0 +1,50 @@
-+#include "utest_helper.hpp"
-+
-+int as_int(float f) {
-+  void *p = &f;
-+  return *(int *)p;
-+}
-+
-+int cpu(int a, int b, int c) {
-+  return (a & ~c) | (b & c);
-+}
-+
-+void builtin_bitselect(void)
-+{
-+  const int n = 32;
-+  float src1[n], src2[n], src3[n];
-+
-+  // Setup kernel and buffers
-+  OCL_CREATE_KERNEL("builtin_bitselect");
-+  OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[2], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[3], 0, n * sizeof(float), NULL);
-+  OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
-+  OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]);
-+  OCL_SET_ARG(2, sizeof(cl_mem), &buf[2]);
-+  OCL_SET_ARG(3, sizeof(cl_mem), &buf[3]);
-+  globals[0] = n;
-+  locals[0] = 16;
-+
-+  OCL_MAP_BUFFER(0);
-+  OCL_MAP_BUFFER(1);
-+  OCL_MAP_BUFFER(2);
-+  for (int i = 0; i < n; ++i) {
-+    src1[i] = ((float*)buf_data[0])[i] = rand() * 0.1f;
-+    src2[i] = ((float*)buf_data[1])[i] = rand() * 0.1f;
-+    src3[i] = ((float*)buf_data[2])[i] = rand() * 0.1f;
-+  }
-+  OCL_UNMAP_BUFFER(0);
-+  OCL_UNMAP_BUFFER(1);
-+  OCL_UNMAP_BUFFER(2);
-+
-+  OCL_NDRANGE(1);
-+
-+  OCL_MAP_BUFFER(3);
-+  for (int i = 0; i < n; ++i)
-+    OCL_ASSERT(((int*)buf_data[3])[i] == cpu(as_int(src1[i]), as_int(src2[i]), as_int(src3[i])));
-+  OCL_UNMAP_BUFFER(3);
-+}
-+
-+MAKE_UTEST_FROM_FUNCTION(builtin_bitselect);
--- 
-1.7.10.4
-
diff --git a/debian/patches/0005-add-built-in-function-mad_sat.patch b/debian/patches/0005-add-built-in-function-mad_sat.patch
deleted file mode 100644
index 19e111e..0000000
--- a/debian/patches/0005-add-built-in-function-mad_sat.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 5c3d525d759789fbc130e408a03ff7d9d1b6b213 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 10:09:39 +0800
-Subject: [PATCH 05/14] add built-in function "mad_sat"
-To: beignet at lists.freedesktop.org
-
-currently only "char, uchar, short, ushort" types of arguments are supported
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- backend/src/ocl_stdlib.h |   50 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 50 insertions(+)
-
-diff --git a/backend/src/ocl_stdlib.h b/backend/src/ocl_stdlib.h
-index ed96e5e..d1f963a 100644
---- a/backend/src/ocl_stdlib.h
-+++ b/backend/src/ocl_stdlib.h
-@@ -4473,6 +4473,56 @@ DEF(16)
- #undef DEC8
- #undef DEC16
- 
-+INLINE_OVERLOADABLE char mad_sat(char a, char b, char c) {
-+  int x = (int)a * (int)b + (int)c;
-+  if (x > 127)
-+    x = 127;
-+  if (x < -128)
-+    x = -128;
-+  return x;
-+}
-+
-+INLINE_OVERLOADABLE uchar mad_sat(uchar a, uchar b, uchar c) {
-+  uint x = (uint)a * (uint)b + (uint)c;
-+  if (x > 255)
-+    x = 255;
-+  return x;
-+}
-+
-+INLINE_OVERLOADABLE short mad_sat(short a, short b, short c) {
-+  int x = (int)a * (int)b + (int)c;
-+  if (x > 32767)
-+    x = 32767;
-+  if (x < -32768)
-+    x = -32768;
-+  return x;
-+}
-+
-+INLINE_OVERLOADABLE ushort mad_sat(ushort a, ushort b, ushort c) {
-+  uint x = (uint)a * (uint)b + (uint)c;
-+  if (x > 65535)
-+    x = 65535;
-+  return x;
-+}
-+
-+#define DEC2(type) INLINE_OVERLOADABLE type##2 mad_sat(type##2 a, type##2 b, type##2 c) { return (type##2)(mad_sat(a.s0, b.s0, c.s0), mad_sat(a.s1, b.s1, c.s1)); }
-+#define DEC3(type) INLINE_OVERLOADABLE type##3 mad_sat(type##3 a, type##3 b, type##3 c) { return (type##3)(mad_sat(a.s0, b.s0, c.s0), mad_sat(a.s1, b.s1, c.s1), mad_sat(a.s2, b.s2, c.s2)); }
-+#define DEC4(type) INLINE_OVERLOADABLE type##4 mad_sat(type##4 a, type##4 b, type##4 c) { return (type##4)(mad_sat(a.s0, b.s0, c.s0), mad_sat(a.s1, b.s1, c.s1), mad_sat(a.s2, b.s2, c.s2), mad_sat(a.s3, b.s3, c.s3)); }
-+#define DEC8(type) INLINE_OVERLOADABLE type##8 mad_sat(type##8 a, type##8 b, type##8 c) { return (type##8)(mad_sat(a.s0, b.s0, c.s0), mad_sat(a.s1, b.s1, c.s1), mad_sat(a.s2, b.s2, c.s2), mad_sat(a.s3, b.s3, c.s3), mad_sat(a.s4, b.s4, c.s4), mad_sat(a.s5, b.s5, c.s5), mad_sat(a.s6, b.s6, c.s6), mad_sat(a.s7, b.s7, c.s7)); }
-+#define DEC16(type) INLINE_OVERLOADABLE type##16 mad_sat(type##16 a, type##16 b, type##16 c) { return (type##16)(mad_sat(a.s0, b.s0, c.s0), mad_sat(a.s1, b.s1, c.s1), mad_sat(a.s2, b.s2, c.s2), mad_sat(a.s3, b.s3, c.s3), mad_sat(a.s4, b.s4, c.s4), mad_sat(a.s5, b.s5, c.s5), mad_sat(a.s6, b.s6, c.s6), mad_sat(a.s7, b.s7, c.s7), mad_sat(a.s8, b.s8, c.s8), mad_sat(a.s9, b.s9, c.s9), mad_sat(a.sa, b.sa, c.sa), mad_sat(a.sb, b.sb, c.sb), mad_sat(a.sc, b.sc, c.sc), mad_sat(a.sd, b.sd, c.sd),  [...]
-+#define DEF(n) DEC##n(char); DEC##n(uchar); DEC##n(short); DEC##n(ushort)
-+DEF(2)
-+DEF(3)
-+DEF(4)
-+DEF(8)
-+DEF(16)
-+#undef DEF
-+#undef DEC2
-+#undef DEC3
-+#undef DEC4
-+#undef DEC8
-+#undef DEC16
-+
- INLINE_OVERLOADABLE uchar __rotate_left(uchar x, uchar y) { return (x << y) | (x >> (8 - y)); }
- INLINE_OVERLOADABLE char __rotate_left(char x, char y) { return __rotate_left((uchar)x, (uchar)y); }
- INLINE_OVERLOADABLE ushort __rotate_left(ushort x, ushort y) { return (x << y) | (x >> (16 - y)); }
--- 
-1.7.10.4
-
diff --git a/debian/patches/0006-test-function-mad_sat.patch b/debian/patches/0006-test-function-mad_sat.patch
deleted file mode 100644
index 80e967e..0000000
--- a/debian/patches/0006-test-function-mad_sat.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 8d57036849621ac975141b9b67bcb7c1900c7ed1 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 10:09:40 +0800
-Subject: [PATCH 06/14] test function "mad_sat"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- kernels/builtin_mad_sat.cl |    4 ++++
- utests/CMakeLists.txt      |    1 +
- utests/builtin_mad_sat.cpp |   44 ++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 49 insertions(+)
- create mode 100644 kernels/builtin_mad_sat.cl
- create mode 100644 utests/builtin_mad_sat.cpp
-
-diff --git a/kernels/builtin_mad_sat.cl b/kernels/builtin_mad_sat.cl
-new file mode 100644
-index 0000000..1739a4d
---- /dev/null
-+++ b/kernels/builtin_mad_sat.cl
-@@ -0,0 +1,4 @@
-+kernel void builtin_mad_sat(global short *src1, global short *src2, global short *src3, global short *dst) {
-+  short i = get_global_id(0);
-+  dst[i] = mad_sat(src1[i], src2[i], src3[i]);
-+}
-diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
-index 2e18b2c..1cdbd24 100644
---- a/utests/CMakeLists.txt
-+++ b/utests/CMakeLists.txt
-@@ -101,6 +101,7 @@ set (utests_sources
-   compiler_cl_finish.cpp
-   get_cl_info.cpp
-   builtin_bitselect.cpp
-+  builtin_mad_sat.cpp
-   buildin_work_dim.cpp
-   builtin_global_size.cpp
-   runtime_createcontext.cpp
-diff --git a/utests/builtin_mad_sat.cpp b/utests/builtin_mad_sat.cpp
-new file mode 100644
-index 0000000..ed9a558
---- /dev/null
-+++ b/utests/builtin_mad_sat.cpp
-@@ -0,0 +1,44 @@
-+#include "utest_helper.hpp"
-+
-+void builtin_mad_sat(void)
-+{
-+  const int n = 32;
-+  short src1[n], src2[n], src3[n];
-+srand(0);
-+  // Setup kernel and buffers
-+  OCL_CREATE_KERNEL("builtin_mad_sat");
-+  OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(short), NULL);
-+  OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(short), NULL);
-+  OCL_CREATE_BUFFER(buf[2], 0, n * sizeof(short), NULL);
-+  OCL_CREATE_BUFFER(buf[3], 0, n * sizeof(short), NULL);
-+  OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
-+  OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]);
-+  OCL_SET_ARG(2, sizeof(cl_mem), &buf[2]);
-+  OCL_SET_ARG(3, sizeof(cl_mem), &buf[3]);
-+  globals[0] = n;
-+  locals[0] = 16;
-+
-+  OCL_MAP_BUFFER(0);
-+  OCL_MAP_BUFFER(1);
-+  OCL_MAP_BUFFER(2);
-+  for (int i = 0; i < n; ++i) {
-+    src1[i] = ((short*)buf_data[0])[i] = rand();
-+    src2[i] = ((short*)buf_data[1])[i] = rand();
-+    src3[i] = ((short*)buf_data[2])[i] = rand();
-+  }
-+  OCL_UNMAP_BUFFER(0);
-+  OCL_UNMAP_BUFFER(1);
-+  OCL_UNMAP_BUFFER(2);
-+
-+  OCL_NDRANGE(1);
-+
-+  OCL_MAP_BUFFER(3);
-+  for (int i = 0; i < n; ++i) {
-+    int a = (int)src1[i] * (int)src2[i] + (int)src3[i];
-+    a = a > 0x7FFF ? 0x7FFF : (a < -0x8000 ? -0x8000 : a);
-+    OCL_ASSERT(((short*)buf_data[3])[i] == (short)a);
-+  }
-+  OCL_UNMAP_BUFFER(3);
-+}
-+
-+MAKE_UTEST_FROM_FUNCTION(builtin_mad_sat);
--- 
-1.7.10.4
-
diff --git a/debian/patches/0007-built-in-function-sign.patch b/debian/patches/0007-built-in-function-sign.patch
deleted file mode 100644
index 598d06d..0000000
--- a/debian/patches/0007-built-in-function-sign.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From c093b0644719ba8be67cf009a4e0adeb5daba8aa Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 12:42:02 +0800
-Subject: [PATCH 07/14] built-in function "sign"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- backend/src/ocl_stdlib.h |   11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/backend/src/ocl_stdlib.h b/backend/src/ocl_stdlib.h
-index d1f963a..c806b08 100644
---- a/backend/src/ocl_stdlib.h
-+++ b/backend/src/ocl_stdlib.h
-@@ -5152,6 +5152,16 @@ INLINE_OVERLOADABLE float smoothstep(float e0, float e1, float x) {
-   return x * x * (3 - 2 * x);
- }
- 
-+INLINE_OVERLOADABLE float sign(float x) {
-+  if(x > 0)
-+    return 1;
-+  if(x < 0)
-+    return -1;
-+  if(x == -0.f)
-+    return -0.f;
-+  return 0.f;
-+}
-+
- INLINE_OVERLOADABLE float __gen_ocl_internal_fmax(float a, float b) { return max(a,b); }
- INLINE_OVERLOADABLE float __gen_ocl_internal_fmin(float a, float b) { return min(a,b); }
- INLINE_OVERLOADABLE float __gen_ocl_internal_maxmag(float x, float y) {
-@@ -5357,6 +5367,7 @@ DECL_UNTYPED_RW_ALL(float)
-     dst.s89abcdef = NAME(v.s89abcdef);\
-     return dst;\
-   }
-+DECL_VECTOR_1OP(sign, float);
- DECL_VECTOR_1OP(native_cos, float);
- DECL_VECTOR_1OP(__gen_ocl_internal_cospi, float);
- DECL_VECTOR_1OP(__gen_ocl_internal_cosh, float);
--- 
-1.7.10.4
-
diff --git a/debian/patches/0008-test-built-in-function-sign.patch b/debian/patches/0008-test-built-in-function-sign.patch
deleted file mode 100644
index e9cd7d1..0000000
--- a/debian/patches/0008-test-built-in-function-sign.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 93484fc1236af3323535914f6794fbc77844f8fe Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 12:42:03 +0800
-Subject: [PATCH 08/14] test built-in function "sign"
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- kernels/builtin_sign.cl |    4 ++++
- utests/CMakeLists.txt   |    1 +
- utests/builtin_sign.cpp |   45 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 50 insertions(+)
- create mode 100644 kernels/builtin_sign.cl
- create mode 100644 utests/builtin_sign.cpp
-
-diff --git a/kernels/builtin_sign.cl b/kernels/builtin_sign.cl
-new file mode 100644
-index 0000000..ff9a66b
---- /dev/null
-+++ b/kernels/builtin_sign.cl
-@@ -0,0 +1,4 @@
-+kernel void builtin_sign(global float *src, global float *dst) {
-+  int i = get_global_id(0);
-+  dst[i] = sign(src[i]);
-+}
-diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
-index 1cdbd24..14ff6b1 100644
---- a/utests/CMakeLists.txt
-+++ b/utests/CMakeLists.txt
-@@ -102,6 +102,7 @@ set (utests_sources
-   get_cl_info.cpp
-   builtin_bitselect.cpp
-   builtin_mad_sat.cpp
-+  builtin_sign.cpp
-   buildin_work_dim.cpp
-   builtin_global_size.cpp
-   runtime_createcontext.cpp
-diff --git a/utests/builtin_sign.cpp b/utests/builtin_sign.cpp
-new file mode 100644
-index 0000000..7014790
---- /dev/null
-+++ b/utests/builtin_sign.cpp
-@@ -0,0 +1,45 @@
-+#include <cmath>
-+#include "utest_helper.hpp"
-+
-+void builtin_sign(void)
-+{
-+  const int n = 32;
-+  float src[n];
-+
-+  // Setup kernel and buffers
-+  OCL_CREATE_KERNEL("builtin_sign");
-+  OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(float), NULL);
-+  OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(float), NULL);
-+  OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
-+  OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]);
-+  globals[0] = n;
-+  locals[0] = 16;
-+
-+  OCL_MAP_BUFFER(0);
-+  src[0] = nanf("");
-+  src[1] = 0.f;
-+  src[2] = -0.f;
-+  for (int i = 3; i < n; ++i) {
-+    src[i] = ((float*)buf_data[0])[i] = (rand() & 15) * 0.1 - 0.75;
-+  }
-+  OCL_UNMAP_BUFFER(0);
-+
-+  OCL_NDRANGE(1);
-+
-+  OCL_MAP_BUFFER(1);
-+  float *dst = (float*)buf_data[1];
-+  OCL_ASSERT(dst[0] == 0);
-+  OCL_ASSERT(dst[1] == 0.f);
-+  OCL_ASSERT(dst[2] == -0.f);
-+  for (int i = 3; i < n; ++i) {
-+    if (src[i] == 0.f)
-+      OCL_ASSERT(dst[i] == 0.f);
-+    else if (src[i] == -0.f)
-+      OCL_ASSERT(dst[i] == -0.f);
-+    else
-+      OCL_ASSERT(dst[i] == (src[i] > 0 ? 1 : -1));
-+  }
-+  OCL_UNMAP_BUFFER(1);
-+}
-+
-+MAKE_UTEST_FROM_FUNCTION(builtin_sign);
--- 
-1.7.10.4
-
diff --git a/debian/patches/0009-fix-vectorial-built-in-functions-min-max-clamp.patch b/debian/patches/0009-fix-vectorial-built-in-functions-min-max-clamp.patch
deleted file mode 100644
index 24199f0..0000000
--- a/debian/patches/0009-fix-vectorial-built-in-functions-min-max-clamp.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From f3d775a8716307f32fb9c12cfa7a3e6404537f22 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 12:38:58 +0800
-Subject: [PATCH 09/14] fix vectorial built-in functions "min, max, clamp"
-To: beignet at lists.freedesktop.org
-
-vectorial versions of "min,max,clamp" was missing.
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- backend/src/ocl_stdlib.h |   40 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
-
-diff --git a/backend/src/ocl_stdlib.h b/backend/src/ocl_stdlib.h
-index c806b08..fbdc703 100644
---- a/backend/src/ocl_stdlib.h
-+++ b/backend/src/ocl_stdlib.h
-@@ -5133,6 +5133,46 @@ DECL_MIN_MAX_CLAMP(uint)
- DECL_MIN_MAX_CLAMP(unsigned short)
- DECL_MIN_MAX_CLAMP(unsigned char)
- #undef DECL_MIN_MAX_CLAMP
-+#define DEC2(func, type) INLINE_OVERLOADABLE type##2 func(type##2 a, type##2 b) { return (type##2)(func(a.s0, b.s0), func(a.s1, b.s1)); }
-+#define DEC3(func, type) INLINE_OVERLOADABLE type##3 func(type##3 a, type##3 b) { return (type##3)(func(a.s0, b.s0), func(a.s1, b.s1), func(a.s2, b.s2)); }
-+#define DEC4(func, type) INLINE_OVERLOADABLE type##4 func(type##4 a, type##4 b) { return (type##4)(func(a.s0, b.s0), func(a.s1, b.s1), func(a.s2, b.s2), func(a.s3, b.s3)); }
-+#define DEC8(func, type) INLINE_OVERLOADABLE type##8 func(type##8 a, type##8 b) { return (type##8)(func(a.s0, b.s0), func(a.s1, b.s1), func(a.s2, b.s2), func(a.s3, b.s3), func(a.s4, b.s4), func(a.s5, b.s5), func(a.s6, b.s6), func(a.s7, b.s7)); }
-+#define DEC16(func, type) INLINE_OVERLOADABLE type##16 func(type##16 a, type##16 b) { return (type##16)(func(a.s0, b.s0), func(a.s1, b.s1), func(a.s2, b.s2), func(a.s3, b.s3), func(a.s4, b.s4), func(a.s5, b.s5), func(a.s6, b.s6), func(a.s7, b.s7), func(a.s8, b.s8), func(a.s9, b.s9), func(a.sa, b.sa), func(a.sb, b.sb), func(a.sc, b.sc), func(a.sd, b.sd), func(a.se, b.se), func(a.sf, b.sf)); }
-+#define DEF(func, n) DEC##n(func, char); DEC##n(func, uchar); DEC##n(func, short); DEC##n(func, ushort); DEC##n(func, int); DEC##n(func, uint)
-+DEF(max, 2)
-+DEF(max, 3)
-+DEF(max, 4)
-+DEF(max, 8)
-+DEF(max, 16)
-+DEF(min, 2)
-+DEF(min, 3)
-+DEF(min, 4)
-+DEF(min, 8)
-+DEF(min, 16)
-+#undef DEF
-+#undef DEC2
-+#undef DEC3
-+#undef DEC4
-+#undef DEC8
-+#undef DEC16
-+
-+#define DEC2(type) INLINE_OVERLOADABLE type##2 clamp(type##2 a, type##2 b, type##2 c) { return (type##2)(clamp(a.s0, b.s0, c.s0), clamp(a.s1, b.s1, c.s1)); }
-+#define DEC3(type) INLINE_OVERLOADABLE type##3 clamp(type##3 a, type##3 b, type##3 c) { return (type##3)(clamp(a.s0, b.s0, c.s0), clamp(a.s1, b.s1, c.s1), clamp(a.s2, b.s2, c.s2)); }
-+#define DEC4(type) INLINE_OVERLOADABLE type##4 clamp(type##4 a, type##4 b, type##4 c) { return (type##4)(clamp(a.s0, b.s0, c.s0), clamp(a.s1, b.s1, c.s1), clamp(a.s2, b.s2, c.s2), clamp(a.s3, b.s3, c.s3)); }
-+#define DEC8(type) INLINE_OVERLOADABLE type##8 clamp(type##8 a, type##8 b, type##8 c) { return (type##8)(clamp(a.s0, b.s0, c.s0), clamp(a.s1, b.s1, c.s1), clamp(a.s2, b.s2, c.s2), clamp(a.s3, b.s3, c.s3), clamp(a.s4, b.s4, c.s4), clamp(a.s5, b.s5, c.s5), clamp(a.s6, b.s6, c.s6), clamp(a.s7, b.s7, c.s7)); }
-+#define DEC16(type) INLINE_OVERLOADABLE type##16 clamp(type##16 a, type##16 b, type##16 c) { return (type##16)(clamp(a.s0, b.s0, c.s0), clamp(a.s1, b.s1, c.s1), clamp(a.s2, b.s2, c.s2), clamp(a.s3, b.s3, c.s3), clamp(a.s4, b.s4, c.s4), clamp(a.s5, b.s5, c.s5), clamp(a.s6, b.s6, c.s6), clamp(a.s7, b.s7, c.s7), clamp(a.s8, b.s8, c.s8), clamp(a.s9, b.s9, c.s9), clamp(a.sa, b.sa, c.sa), clamp(a.sb, b.sb, c.sb), clamp(a.sc, b.sc, c.sc), clamp(a.sd, b.sd, c.sd), clamp(a.se, b.se, c.se), clamp [...]
-+#define DEF(n) DEC##n(char); DEC##n(uchar); DEC##n(short); DEC##n(ushort); DEC##n(int); DEC##n(uint); DEC##n(float)
-+DEF(2)
-+DEF(3)
-+DEF(4)
-+DEF(8)
-+DEF(16)
-+#undef DEF
-+#undef DEC2
-+#undef DEC3
-+#undef DEC4
-+#undef DEC8
-+#undef DEC16
- 
- INLINE_OVERLOADABLE float degrees(float radians) { return (180 / M_PI_F) * radians; }
- INLINE_OVERLOADABLE float2 degrees(float2 r) { return (float2)(degrees(r.s0), degrees(r.s1)); }
--- 
-1.7.10.4
-
diff --git a/debian/patches/0010-improve-clCreateContext-conformance.patch b/debian/patches/0010-improve-clCreateContext-conformance.patch
deleted file mode 100644
index 5f7469a..0000000
--- a/debian/patches/0010-improve-clCreateContext-conformance.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From f65dba3126bdf735c74820e04f75d91b4000264f Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 13:22:01 +0800
-Subject: [PATCH 10/14] improve clCreateContext conformance
-To: beignet at lists.freedesktop.org
-
-OpenCL specification says "clCreateContext" function returns
-CL_INVALID_PROPERTY if the same property name appears more than once.
-
-But "clCreateContext" did not follow that.
-
-This patch uses a local temp integer to track whether a property name has
-appeared. If so, returns CL_INVALID_PROPERTY.
-
-This patch makes Piglit test case "clCreateContext" pass.
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- src/cl_context.c |   18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/src/cl_context.c b/src/cl_context.c
-index 338706b..a48436c 100644
---- a/src/cl_context.c
-+++ b/src/cl_context.c
-@@ -36,10 +36,22 @@
- #include <assert.h>
- #include <string.h>
- 
-+#define CHECK(var) \
-+  if (var) \
-+    return CL_INVALID_PROPERTY; \
-+  else \
-+    var = 1;
-+
- static cl_int
- cl_context_properties_process(const cl_context_properties *prop,
-                               struct _cl_context_prop *cl_props, cl_uint * prop_len)
- {
-+  int set_cl_context_platform = 0,
-+      set_cl_gl_context_khr = 0,
-+      set_cl_egl_display_khr = 0,
-+      set_cl_glx_display_khr = 0,
-+      set_cl_wgl_hdc_khr = 0,
-+      set_cl_cgl_sharegroup_khr = 0;
-   cl_int err = CL_SUCCESS;
- 
-   cl_props->gl_type = CL_GL_NOSHARE;
-@@ -52,6 +64,7 @@ cl_context_properties_process(const cl_context_properties *prop,
-   while(*prop) {
-     switch (*prop) {
-     case CL_CONTEXT_PLATFORM:
-+      CHECK (set_cl_context_platform);
-       cl_props->platform_id = *(prop + 1);
-       if (UNLIKELY((cl_platform_id) cl_props->platform_id != intel_platform)) {
-         err = CL_INVALID_PLATFORM;
-@@ -59,21 +72,26 @@ cl_context_properties_process(const cl_context_properties *prop,
-       }
-       break;
-     case CL_GL_CONTEXT_KHR:
-+      CHECK (set_cl_gl_context_khr);
-       cl_props->gl_context = *(prop + 1);
-       break;
-     case CL_EGL_DISPLAY_KHR:
-+      CHECK (set_cl_egl_display_khr);
-       cl_props->gl_type = CL_GL_EGL_DISPLAY;
-       cl_props->egl_display = *(prop + 1);
-       break;
-     case CL_GLX_DISPLAY_KHR:
-+      CHECK (set_cl_glx_display_khr);
-       cl_props->gl_type = CL_GL_GLX_DISPLAY;
-       cl_props->glx_display = *(prop + 1);
-       break;
-     case CL_WGL_HDC_KHR:
-+      CHECK (set_cl_wgl_hdc_khr);
-       cl_props->gl_type = CL_GL_WGL_HDC;
-       cl_props->wgl_hdc = *(prop + 1);
-       break;
-     case CL_CGL_SHAREGROUP_KHR:
-+      CHECK (set_cl_cgl_sharegroup_khr);
-       cl_props->gl_type = CL_GL_CGL_SHAREGROUP;
-       cl_props->cgl_sharegroup = *(prop + 1);
-       break;
--- 
-1.7.10.4
-
diff --git a/debian/patches/0011-Improve-the-clEnqueueMapBuffer-and-clCreateBuffer-AP.patch b/debian/patches/0011-Improve-the-clEnqueueMapBuffer-and-clCreateBuffer-AP.patch
deleted file mode 100644
index f198ebd..0000000
--- a/debian/patches/0011-Improve-the-clEnqueueMapBuffer-and-clCreateBuffer-AP.patch
+++ /dev/null
@@ -1,293 +0,0 @@
-From 291dcddec786533226185f9fcd10fada1dc10fa0 Mon Sep 17 00:00:00 2001
-From: Junyan He <junyan.he at linux.intel.com>
-Date: Wed, 10 Jul 2013 15:50:44 +0800
-Subject: [PATCH 11/14] Improve the clEnqueueMapBuffer and clCreateBuffer API
-To: beignet at lists.freedesktop.org
-
-In clCreateBuffer API, add the CL_MEM_ALLOC_HOST_PTR and
-CL_MEM_USE_HOST_PTR flag support.
-CL_MEM_ALLOC_HOST_PTR flag seem nothings special to do.
-CL_MEM_USE_HOST_PTR flag will request clEnqueueMapBuffer API:
-1> The host_ptr specified in clCreateBuffer is guaranteed to
-contain the latest bits in the region being mapped when the
-clEnqueueMapBuffer command has completed.
-2> The pointer value returned by clEnqueueMapBuffer will be
-derived from the host_ptr specified when the buffer object is created.
-
-We improve the clEnqueueMapBuffer to setup a map for the mapped
-address and do the data sync problem based on the address when
-mapped and unmapped.
-
-Signed-off-by: Junyan He <junyan.he at linux.intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- src/cl_api.c |  125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- src/cl_mem.c |   43 ++++++++++++++++----
- src/cl_mem.h |   10 +++++
- 3 files changed, 169 insertions(+), 9 deletions(-)
-
-diff --git a/src/cl_api.c b/src/cl_api.c
-index dc52f0a..115c07a 100644
---- a/src/cl_api.c
-+++ b/src/cl_api.c
-@@ -1467,7 +1467,9 @@ clEnqueueMapBuffer(cl_command_queue  command_queue,
-                    cl_int *          errcode_ret)
- {
-   void *ptr = NULL;
-+  void *mem_ptr = NULL;
-   cl_int err = CL_SUCCESS;
-+  int slot = -1;
- 
-   CHECK_QUEUE(command_queue);
-   CHECK_MEM(buffer);
-@@ -1500,10 +1502,66 @@ clEnqueueMapBuffer(cl_command_queue  command_queue,
- 
-   ptr = (char*)ptr + offset;
- 
-+  if(buffer->flags & CL_MEM_USE_HOST_PTR) {
-+    assert(buffer->host_ptr);
-+    memcpy(buffer->host_ptr + offset, ptr, size);
-+    mem_ptr = buffer->host_ptr + offset;
-+  } else {
-+    mem_ptr = ptr;
-+  }
-+
-+  /* Record the mapped address. */
-+  if (!buffer->mapped_ptr_sz) {
-+    buffer->mapped_ptr_sz = 16;
-+    buffer->mapped_ptr = (cl_mapped_ptr *)malloc(
-+          sizeof(cl_mapped_ptr) * buffer->mapped_ptr_sz);
-+    if (!buffer->mapped_ptr) {
-+      cl_mem_unmap_auto (buffer);
-+      err = CL_OUT_OF_HOST_MEMORY;
-+      ptr = NULL;
-+      goto error;
-+    }
-+
-+    memset(buffer->mapped_ptr, 0, buffer->mapped_ptr_sz * sizeof(cl_mapped_ptr));
-+    slot = 0;
-+  } else {
-+    int i = 0;
-+    for (; i < buffer->mapped_ptr_sz; i++) {
-+      if (buffer->mapped_ptr[i].ptr == NULL) {
-+        slot = i;
-+        break;
-+      }
-+    }
-+
-+    if (i == buffer->mapped_ptr_sz) {
-+      cl_mapped_ptr *new_ptr = (cl_mapped_ptr *)malloc(
-+          sizeof(cl_mapped_ptr) * buffer->mapped_ptr_sz * 2);
-+      if (!new_ptr) {
-+        cl_mem_unmap_auto (buffer);
-+        err = CL_OUT_OF_HOST_MEMORY;
-+        ptr = NULL;
-+        goto error;
-+      }
-+      memset(new_ptr, 0, 2 * buffer->mapped_ptr_sz * sizeof(cl_mapped_ptr));
-+      memcpy(new_ptr, buffer->mapped_ptr,
-+             buffer->mapped_ptr_sz * sizeof(cl_mapped_ptr));
-+      slot = buffer->mapped_ptr_sz;
-+      buffer->mapped_ptr_sz *= 2;
-+      free(buffer->mapped_ptr);
-+      buffer->mapped_ptr = new_ptr;
-+    }
-+  }
-+
-+  assert(slot != -1);
-+  buffer->mapped_ptr[slot].ptr = mem_ptr;
-+  buffer->mapped_ptr[slot].v_ptr = ptr;
-+  buffer->mapped_ptr[slot].size = size;
-+  buffer->map_ref++;
-+
- error:
-   if (errcode_ret)
-     *errcode_ret = err;
--  return ptr;
-+  return mem_ptr;
- }
- 
- void *
-@@ -1578,7 +1636,70 @@ clEnqueueUnmapMemObject(cl_command_queue  command_queue,
-                         const cl_event *  event_wait_list,
-                         cl_event *        event)
- {
--  return cl_mem_unmap_auto(memobj);
-+  cl_int err = CL_SUCCESS;
-+  int i;
-+  size_t mapped_size = 0;
-+  void * v_ptr = NULL;
-+
-+  CHECK_QUEUE(command_queue);
-+  CHECK_MEM(memobj);
-+  if (command_queue->ctx != memobj->ctx) {
-+    err = CL_INVALID_CONTEXT;
-+    goto error;
-+  }
-+
-+  assert(memobj->mapped_ptr_sz >= memobj->map_ref);
-+  INVALID_VALUE_IF(!mapped_ptr);
-+  for (i = 0; i < memobj->mapped_ptr_sz; i++) {
-+    if (memobj->mapped_ptr[i].ptr == mapped_ptr) {
-+      memobj->mapped_ptr[i].ptr = NULL;
-+      mapped_size = memobj->mapped_ptr[i].size;
-+      v_ptr = memobj->mapped_ptr[i].v_ptr;
-+      memobj->mapped_ptr[i].size = 0;
-+      memobj->mapped_ptr[i].v_ptr = NULL;
-+      memobj->map_ref--;
-+      break;
-+    }
-+  }
-+  /* can not find a mapped address? */
-+  INVALID_VALUE_IF(i == memobj->mapped_ptr_sz);
-+
-+  if (memobj->flags & CL_MEM_USE_HOST_PTR) {
-+    assert(mapped_ptr >= memobj->host_ptr &&
-+      mapped_ptr + mapped_size <= memobj->host_ptr + memobj->size);
-+    /* Sync the data. */
-+    memcpy(v_ptr, mapped_ptr, mapped_size);
-+  } else {
-+    assert(v_ptr == mapped_ptr);
-+  }
-+
-+  cl_mem_unmap_auto(memobj);
-+
-+  /* shrink the mapped slot. */
-+  if (memobj->mapped_ptr_sz/2 > memobj->map_ref) {
-+    int j = 0;
-+    cl_mapped_ptr *new_ptr = (cl_mapped_ptr *)malloc(
-+	sizeof(cl_mapped_ptr) * (memobj->mapped_ptr_sz/2));
-+    if (!new_ptr) {
-+      /* Just do nothing. */
-+      goto error;
-+    }
-+    memset(new_ptr, 0, (memobj->mapped_ptr_sz/2) * sizeof(cl_mapped_ptr));
-+
-+    for (i = 0; i < memobj->mapped_ptr_sz; i++) {
-+      if (memobj->mapped_ptr[i].ptr) {
-+        new_ptr[j] = memobj->mapped_ptr[i];
-+        j++;
-+        assert(j < memobj->mapped_ptr_sz/2);
-+      }
-+    }
-+    memobj->mapped_ptr_sz = memobj->mapped_ptr_sz/2;
-+    free(memobj->mapped_ptr);
-+    memobj->mapped_ptr = new_ptr;
-+  }
-+
-+error:
-+  return err;
- }
- 
- cl_int
-diff --git a/src/cl_mem.c b/src/cl_mem.c
-index 5465aa9..ce70305 100644
---- a/src/cl_mem.c
-+++ b/src/cl_mem.c
-@@ -106,10 +106,6 @@ cl_mem_allocate(cl_context ctx,
-   cl_ulong max_mem_size;
- 
-   assert(ctx);
--  FATAL_IF (flags & CL_MEM_ALLOC_HOST_PTR,
--            "CL_MEM_ALLOC_HOST_PTR unsupported"); /* XXX */
--  FATAL_IF (flags & CL_MEM_USE_HOST_PTR,
--            "CL_MEM_USE_HOST_PTR unsupported");   /* XXX */
- 
-   if ((err = cl_get_device_info(ctx->device,
-                                 CL_DEVICE_MAX_MEM_ALLOC_SIZE,
-@@ -172,11 +168,35 @@ cl_mem_new(cl_context ctx,
-            void *data,
-            cl_int *errcode_ret)
- {
-+  /* Possible mem type combination:
-+       CL_MEM_ALLOC_HOST_PTR
-+       CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR
-+       CL_MEM_USE_HOST_PTR
-+       CL_MEM_COPY_HOST_PTR   */
-+
-   cl_int err = CL_SUCCESS;
-   cl_mem mem = NULL;
- 
--  /* Check flags consistency */
--  if (UNLIKELY(flags & CL_MEM_COPY_HOST_PTR && data == NULL)) {
-+  /* This flag is valid only if host_ptr is not NULL */
-+  if (UNLIKELY((flags & CL_MEM_COPY_HOST_PTR ||
-+                flags & CL_MEM_USE_HOST_PTR) &&
-+                data == NULL)) {
-+    err = CL_INVALID_HOST_PTR;
-+    goto error;
-+  }
-+
-+  /* CL_MEM_ALLOC_HOST_PTR and CL_MEM_USE_HOST_PTR
-+     are mutually exclusive. */
-+  if (UNLIKELY(flags & CL_MEM_ALLOC_HOST_PTR &&
-+               flags & CL_MEM_USE_HOST_PTR)) {
-+    err = CL_INVALID_HOST_PTR;
-+    goto error;
-+  }
-+
-+  /* CL_MEM_COPY_HOST_PTR and CL_MEM_USE_HOST_PTR
-+     are mutually exclusive. */
-+  if (UNLIKELY(flags & CL_MEM_COPY_HOST_PTR &&
-+               flags & CL_MEM_USE_HOST_PTR)) {
-     err = CL_INVALID_HOST_PTR;
-     goto error;
-   }
-@@ -187,9 +207,12 @@ cl_mem_new(cl_context ctx,
-     goto error;
- 
-   /* Copy the data if required */
--  if (flags & CL_MEM_COPY_HOST_PTR) /* TODO check other flags too */
-+  if (flags & CL_MEM_COPY_HOST_PTR || flags & CL_MEM_USE_HOST_PTR)
-     cl_buffer_subdata(mem->bo, 0, sz, data);
- 
-+  if (flags & CL_MEM_USE_HOST_PTR)
-+    mem->host_ptr = data;
-+
- exit:
-   if (errcode_ret)
-     *errcode_ret = err;
-@@ -418,6 +441,12 @@ cl_mem_delete(cl_mem mem)
-   pthread_mutex_unlock(&mem->ctx->buffer_lock);
-   cl_context_delete(mem->ctx);
- 
-+  /* Someone still mapped? */
-+  assert(mem->map_ref);
-+
-+  if (mem->mapped_ptr)
-+    free(mem->mapped_ptr);
-+
-   cl_free(mem);
- }
- 
-diff --git a/src/cl_mem.h b/src/cl_mem.h
-index c204992..6d98698 100644
---- a/src/cl_mem.h
-+++ b/src/cl_mem.h
-@@ -49,6 +49,12 @@ typedef enum cl_image_tiling {
-   CL_TILE_Y  = 2
- } cl_image_tiling_t;
- 
-+typedef struct _cl_mapped_ptr {
-+  void * ptr;
-+  void * v_ptr;
-+  size_t size;
-+}cl_mapped_ptr;
-+
- /* Used for buffers and images */
- struct _cl_mem {
-   DEFINE_ICD(dispatch)
-@@ -68,6 +74,10 @@ struct _cl_mem {
-   uint32_t intel_fmt;       /* format to provide in the surface state */
-   uint32_t bpp;             /* number of bytes per pixel */
-   cl_image_tiling_t tiling; /* only IVB+ supports TILE_[X,Y] (image only) */
-+  void * host_ptr;          /* Pointer of the host mem specified by CL_MEM_ALLOC_HOST_PTR */
-+  cl_mapped_ptr* mapped_ptr;/* Store the mapped addresses and size by caller. */
-+  int mapped_ptr_sz;        /* The array size of mapped_ptr. */
-+  int map_ref;              /* The mapped count. */
- };
- 
- /* Query information about a memory object */
--- 
-1.7.10.4
-
diff --git a/debian/patches/0012-support-clGetImageInfo.patch b/debian/patches/0012-support-clGetImageInfo.patch
deleted file mode 100644
index d20c7a0..0000000
--- a/debian/patches/0012-support-clGetImageInfo.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 7ad035f67bfc65e53cd1d67cfec0ca958f44f497 Mon Sep 17 00:00:00 2001
-From: Homer Hsing <homer.xing at intel.com>
-Date: Wed, 10 Jul 2013 14:20:57 +0800
-Subject: [PATCH 12/14] support clGetImageInfo
-To: beignet at lists.freedesktop.org
-
-clGetImageInfo() is an OpenCL API. It returns information of an image.
-
-This patch makes Piglit test case "clGetImageInfo" pass.
-
-Signed-off-by: Homer Hsing <homer.xing at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- src/cl_api.c |    7 +++++--
- src/cl_mem.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
- src/cl_mem.h |    3 +++
- 3 files changed, 59 insertions(+), 2 deletions(-)
-
-diff --git a/src/cl_api.c b/src/cl_api.c
-index 115c07a..20cbc1e 100644
---- a/src/cl_api.c
-+++ b/src/cl_api.c
-@@ -573,8 +573,11 @@ clGetImageInfo(cl_mem         image,
-                void *         param_value,
-                size_t *       param_value_size_ret)
- {
--  NOT_IMPLEMENTED;
--  return 0;
-+  return cl_get_image_info(image,
-+                           param_name,
-+                           param_value_size,
-+                           param_value,
-+                           param_value_size_ret);
- }
- 
- cl_int
-diff --git a/src/cl_mem.c b/src/cl_mem.c
-index ce70305..6167dd6 100644
---- a/src/cl_mem.c
-+++ b/src/cl_mem.c
-@@ -90,6 +90,57 @@ cl_get_mem_object_info(cl_mem mem,
-   return CL_SUCCESS;
- }
- 
-+LOCAL cl_int
-+cl_get_image_info(cl_mem mem,
-+                  cl_image_info param_name,
-+                  size_t param_value_size,
-+                  void *param_value,
-+                  size_t *param_value_size_ret)
-+{
-+  if(!mem || !mem->is_image)
-+    return CL_INVALID_MEM_OBJECT;
-+
-+  switch(param_name)
-+  {
-+    FIELD_SIZE(IMAGE_FORMAT, cl_image_format);
-+    FIELD_SIZE(IMAGE_ELEMENT_SIZE, size_t);
-+    FIELD_SIZE(IMAGE_ROW_PITCH, size_t);
-+    FIELD_SIZE(IMAGE_SLICE_PITCH, size_t);
-+    FIELD_SIZE(IMAGE_WIDTH, size_t);
-+    FIELD_SIZE(IMAGE_HEIGHT, size_t);
-+    FIELD_SIZE(IMAGE_DEPTH, size_t);
-+  default:
-+    return CL_INVALID_VALUE;
-+  }
-+
-+  switch(param_name)
-+  {
-+  case CL_IMAGE_FORMAT:
-+    *(cl_image_format *)param_value = mem->fmt;
-+    break;
-+  case CL_IMAGE_ELEMENT_SIZE:
-+    *(size_t *)param_value = mem->bpp;
-+    break;
-+  case CL_IMAGE_ROW_PITCH:
-+    *(size_t *)param_value = mem->row_pitch;
-+    break;
-+  case CL_IMAGE_SLICE_PITCH:
-+    *(size_t *)param_value = mem->slice_pitch;
-+    break;
-+  case CL_IMAGE_WIDTH:
-+    *(size_t *)param_value = mem->w;
-+    break;
-+  case CL_IMAGE_HEIGHT:
-+    *(size_t *)param_value = mem->h;
-+    break;
-+  case CL_IMAGE_DEPTH:
-+    *(size_t *)param_value = mem->depth;
-+    break;
-+  }
-+
-+  return CL_SUCCESS;
-+}
-+
- #undef FIELD_SIZE
- 
- static cl_mem
-diff --git a/src/cl_mem.h b/src/cl_mem.h
-index 6d98698..66518a6 100644
---- a/src/cl_mem.h
-+++ b/src/cl_mem.h
-@@ -83,6 +83,9 @@ struct _cl_mem {
- /* Query information about a memory object */
- extern cl_int cl_get_mem_object_info(cl_mem, cl_mem_info, size_t, void *, size_t *);
- 
-+/* Query information about an image */
-+extern cl_int cl_get_image_info(cl_mem, cl_image_info, size_t, void *, size_t *);
-+
- /* Create a new memory object and initialize it with possible user data */
- extern cl_mem cl_mem_new(cl_context, cl_mem_flags, size_t, void*, cl_int*);
- 
--- 
-1.7.10.4
-
diff --git a/debian/patches/0013-Add-vector-argument-test-case.patch b/debian/patches/0013-Add-vector-argument-test-case.patch
deleted file mode 100644
index faa365a..0000000
--- a/debian/patches/0013-Add-vector-argument-test-case.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 4a6741f9031cb6d105023a01401504dbac95695a Mon Sep 17 00:00:00 2001
-From: Yang Rong <rong.r.yang at intel.com>
-Date: Thu, 16 May 2013 12:36:35 +0800
-Subject: [PATCH 13/14] Add vector argument test case.
-To: beignet at lists.freedesktop.org
-
-Signed-off-by: Yang Rong <rong.r.yang at intel.com>
-Signed-off-by: Simon Richter <Simon.Richter at hogyros.de>
----
- kernels/compiler_function_argument2.cl |    6 ++++++
- utests/CMakeLists.txt                  |    1 +
- utests/compiler_function_argument2.cpp |   26 ++++++++++++++++++++++++++
- 3 files changed, 33 insertions(+)
- create mode 100644 kernels/compiler_function_argument2.cl
- create mode 100644 utests/compiler_function_argument2.cpp
-
-diff --git a/kernels/compiler_function_argument2.cl b/kernels/compiler_function_argument2.cl
-new file mode 100644
-index 0000000..0985dbd
---- /dev/null
-+++ b/kernels/compiler_function_argument2.cl
-@@ -0,0 +1,6 @@
-+__kernel void
-+compiler_function_argument2(__global int *dst, int4 value)
-+{
-+  int id = (int)get_global_id(0);
-+  dst[id] = value.w;
-+}
-diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
-index 14ff6b1..ea034cc 100644
---- a/utests/CMakeLists.txt
-+++ b/utests/CMakeLists.txt
-@@ -41,6 +41,7 @@ set (utests_sources
-   compiler_fill_image_3d_2.cpp
-   compiler_function_argument0.cpp
-   compiler_function_argument1.cpp
-+  compiler_function_argument2.cpp
-   compiler_function_argument.cpp
-   compiler_function_constant0.cpp
-   compiler_function_constant1.cpp
-diff --git a/utests/compiler_function_argument2.cpp b/utests/compiler_function_argument2.cpp
-new file mode 100644
-index 0000000..1e398a9
---- /dev/null
-+++ b/utests/compiler_function_argument2.cpp
-@@ -0,0 +1,26 @@
-+#include "utest_helper.hpp"
-+
-+struct int4 {int x,y,z,w;};
-+void compiler_function_argument2(void)
-+{
-+  const size_t n = 2048;
-+  const int4 value = {31, 32, 33, 34};
-+
-+  // Setup kernel and buffers
-+  OCL_CREATE_KERNEL("compiler_function_argument2");
-+  OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(uint32_t), NULL);
-+  OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
-+  OCL_SET_ARG(1, sizeof(int4), &value);
-+
-+  // Run the kernel
-+  globals[0] = n;
-+  locals[0] = 16;
-+  OCL_NDRANGE(1);
-+  OCL_MAP_BUFFER(0);
-+
-+  // Check results
-+  for (uint32_t i = 0; i < n; ++i)
-+    OCL_ASSERT(((int*)buf_data[0])[i] == value.w);
-+}
-+
-+MAKE_UTEST_FROM_FUNCTION(compiler_function_argument2);
--- 
-1.7.10.4
-
diff --git a/debian/patches/flags b/debian/patches/flags
index ac207f3..7928bd5 100644
--- a/debian/patches/flags
+++ b/debian/patches/flags
@@ -2,11 +2,11 @@ Description: Debian compliant compiler flags handling
 Author: Simon Richter <sjr at debian.org>
 Last-Update: 2013-05-21
 
-Index: beignet-0.1+git20130619+42967d2/CMakeLists.txt
+Index: beignet-0.2+git20130730+da26376/CMakeLists.txt
 ===================================================================
---- beignet-0.1+git20130619+42967d2.orig/CMakeLists.txt	2013-06-19 21:04:24.770667341 +0200
-+++ beignet-0.1+git20130619+42967d2/CMakeLists.txt	2013-06-19 21:04:31.958667020 +0200
-@@ -18,7 +18,6 @@
+--- beignet-0.2+git20130730+da26376.orig/CMakeLists.txt	2013-07-30 11:12:48.000000000 +0200
++++ beignet-0.2+git20130730+da26376/CMakeLists.txt	2013-07-30 13:44:41.583596970 +0200
+@@ -20,7 +20,6 @@
  
  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
  
@@ -14,11 +14,11 @@ Index: beignet-0.1+git20130619+42967d2/CMakeLists.txt
  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/")
  SET(EMULATE_IVB false CACHE BOOL "To emulate IVB")
  SET(EMULATE_SNB false CACHE BOOL "To emulate SNB")
-Index: beignet-0.1+git20130619+42967d2/backend/CMakeLists.txt
+Index: beignet-0.2+git20130730+da26376/backend/CMakeLists.txt
 ===================================================================
---- beignet-0.1+git20130619+42967d2.orig/backend/CMakeLists.txt	2013-06-19 21:04:24.770667341 +0200
-+++ beignet-0.1+git20130619+42967d2/backend/CMakeLists.txt	2013-06-19 21:04:31.958667020 +0200
-@@ -45,39 +45,39 @@
+--- beignet-0.2+git20130730+da26376.orig/backend/CMakeLists.txt	2013-07-30 11:12:48.000000000 +0200
++++ beignet-0.2+git20130730+da26376/backend/CMakeLists.txt	2013-07-30 13:44:41.583596970 +0200
+@@ -39,39 +39,39 @@
  if (COMPILER STREQUAL "GCC")
    set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -funroll-loops -Wstrict-aliasing=2 -fstrict-aliasing -msse2 -msse3 -mssse3 -msse4.1 -fPIC -Wall")
    set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS}  ${LLVM_CFLAGS}")
@@ -77,7 +77,7 @@ Index: beignet-0.1+git20130619+42967d2/backend/CMakeLists.txt
    set (CMAKE_AR      "/usr/bin/llvm-ar")
    set (CMAKE_LINKER  "/usr/bin/llvm-ld")
    set (CMAKE_NM      "/usr/bin/llvm-nm")
-@@ -91,10 +91,10 @@
+@@ -85,10 +85,10 @@
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_COMPILE_UTESTS_FLAG}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VISIBILITY_FLAG} -Wl,-E")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_DEBUG_MODE_FLAG}")
@@ -91,4 +91,4 @@ Index: beignet-0.1+git20130619+42967d2/backend/CMakeLists.txt
 +  set (CCMAKE_CXX_FLAGS_MINSIZEREL "-DGBE_DEBUG=0")
    set (CMAKE_EXE_LINKER_FLAGS "")
  endif ()
- 
+ include_directories (${CMAKE_CURRENT_BINARY_DIR})
diff --git a/debian/patches/private b/debian/patches/private
index 99da0da..759566d 100644
--- a/debian/patches/private
+++ b/debian/patches/private
@@ -2,22 +2,29 @@ Description: Install as private library
 Author: Simon Richter <sjr at debian.org>
 Last-Update: 2013-05-21
 
-Index: beignet-0.1+git20130619+42967d2/backend/src/CMakeLists.txt
+Index: beignet-0.2+git20130730+da26376/backend/src/CMakeLists.txt
 ===================================================================
---- beignet-0.1+git20130619+42967d2.orig/backend/src/CMakeLists.txt	2013-06-19 21:04:23.346667404 +0200
-+++ beignet-0.1+git20130619+42967d2/backend/src/CMakeLists.txt	2013-06-19 21:04:36.470666819 +0200
-@@ -121,6 +121,6 @@
+--- beignet-0.2+git20130730+da26376.orig/backend/src/CMakeLists.txt	2013-07-30 11:12:48.000000000 +0200
++++ beignet-0.2+git20130730+da26376/backend/src/CMakeLists.txt	2013-07-30 13:45:45.987594708 +0200
+@@ -154,11 +154,11 @@
                        ${CMAKE_THREAD_LIBS_INIT}
                        ${CMAKE_DL_LIBS})
  
 -install (TARGETS gbe LIBRARY DESTINATION lib)
+-install (FILES ${pch_object} DESTINATION lib)
 +install (TARGETS gbe LIBRARY DESTINATION lib/beignet)
++install (FILES ${pch_object} DESTINATION lib/beignet)
  install (FILES backend/program.h DESTINATION include/gen)
  
-Index: beignet-0.1+git20130619+42967d2/src/CMakeLists.txt
+-set (PCH_OBJECT_DIR "${pch_object};${CMAKE_INSTALL_PREFIX}/lib/ocl_stdlib.h.pch")
++set (PCH_OBJECT_DIR "${pch_object};${CMAKE_INSTALL_PREFIX}/lib/beignet/ocl_stdlib.h.pch")
+ configure_file (
+   "GBEConfig.h.in"
+   "GBEConfig.h"
+Index: beignet-0.2+git20130730+da26376/src/CMakeLists.txt
 ===================================================================
---- beignet-0.1+git20130619+42967d2.orig/src/CMakeLists.txt	2013-06-19 21:04:23.346667404 +0200
-+++ beignet-0.1+git20130619+42967d2/src/CMakeLists.txt	2013-06-19 21:04:36.470666819 +0200
+--- beignet-0.2+git20130730+da26376.orig/src/CMakeLists.txt	2013-07-30 11:12:48.000000000 +0200
++++ beignet-0.2+git20130730+da26376/src/CMakeLists.txt	2013-07-30 13:44:56.743596438 +0200
 @@ -47,6 +47,8 @@
  
  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic")
diff --git a/debian/patches/series b/debian/patches/series
index 5674dd4..dfd681e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,16 +3,3 @@ flags
 khronos
 deprecated-in-utest
 private
-0001-support-built-in-function-smoothstep.patch
-0002-test-function-smoothstep.patch
-0003-support-built-in-function-bitselect.patch
-0004-test-built-in-function-bitselect.patch
-0005-add-built-in-function-mad_sat.patch
-0006-test-function-mad_sat.patch
-0007-built-in-function-sign.patch
-0008-test-built-in-function-sign.patch
-0009-fix-vectorial-built-in-functions-min-max-clamp.patch
-0010-improve-clCreateContext-conformance.patch
-0011-Improve-the-clEnqueueMapBuffer-and-clCreateBuffer-AP.patch
-0012-support-clGetImageInfo.patch
-0013-Add-vector-argument-test-case.patch
diff --git a/debian/patches/vector b/debian/patches/vector
new file mode 100644
index 0000000..8cdff08
--- /dev/null
+++ b/debian/patches/vector
@@ -0,0 +1,6342 @@
+Description: <short summary of the patch>
+ TODO: Put a short summary on the line above and replace this paragraph
+ with a longer explanation of this change. Complete the meta-information
+ with other relevant fields (see below for details). To make it easier, the
+ information below has been extracted from the changelog. Adjust it or drop
+ it.
+ .
+ beignet (0.2+git20130730+da26376-1) UNRELEASED; urgency=low
+ .
+   * New upstream release
+Author: Simon Richter <sjr at debian.org>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- /dev/null
++++ beignet-0.2+git20130730+da26376/backend/src/ocl_vector.h
+@@ -0,0 +1,6314 @@
++//This file is autogenerated by ../../../backend/src/gen_builtin_vector.py.
++//Don't modify it manually.
++//math builtin functions
++//gentype acos (gentype)
++
++INLINE_OVERLOADABLE float2 acos (float2 param0)
++{return (float2)(acos(param0.s0), acos(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 acos (float3 param0)
++{return (float3)(acos(param0.s0), acos(param0.s1),
++                 acos(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 acos (float4 param0)
++{return (float4)(acos(param0.s0), acos(param0.s1),
++                 acos(param0.s2), acos(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 acos (float8 param0)
++{return (float8)(acos(param0.s0), acos(param0.s1),
++                 acos(param0.s2), acos(param0.s3),
++                 acos(param0.s4), acos(param0.s5),
++                 acos(param0.s6), acos(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 acos (float16 param0)
++{return (float16)(acos(param0.s0), acos(param0.s1),
++                  acos(param0.s2), acos(param0.s3),
++                  acos(param0.s4), acos(param0.s5),
++                  acos(param0.s6), acos(param0.s7),
++                  acos(param0.s8), acos(param0.s9),
++                  acos(param0.sa), acos(param0.sb),
++                  acos(param0.sc), acos(param0.sd),
++                  acos(param0.se), acos(param0.sf)); }
++
++
++//gentype acosh (gentype)
++
++INLINE_OVERLOADABLE float2 acosh (float2 param0)
++{return (float2)(acosh(param0.s0), acosh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 acosh (float3 param0)
++{return (float3)(acosh(param0.s0), acosh(param0.s1),
++                 acosh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 acosh (float4 param0)
++{return (float4)(acosh(param0.s0), acosh(param0.s1),
++                 acosh(param0.s2), acosh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 acosh (float8 param0)
++{return (float8)(acosh(param0.s0), acosh(param0.s1),
++                 acosh(param0.s2), acosh(param0.s3),
++                 acosh(param0.s4), acosh(param0.s5),
++                 acosh(param0.s6), acosh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 acosh (float16 param0)
++{return (float16)(acosh(param0.s0), acosh(param0.s1),
++                  acosh(param0.s2), acosh(param0.s3),
++                  acosh(param0.s4), acosh(param0.s5),
++                  acosh(param0.s6), acosh(param0.s7),
++                  acosh(param0.s8), acosh(param0.s9),
++                  acosh(param0.sa), acosh(param0.sb),
++                  acosh(param0.sc), acosh(param0.sd),
++                  acosh(param0.se), acosh(param0.sf)); }
++
++
++//gentype acospi (gentype x)
++
++INLINE_OVERLOADABLE float2 acospi (float2 param0)
++{return (float2)(acospi(param0.s0), acospi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 acospi (float3 param0)
++{return (float3)(acospi(param0.s0), acospi(param0.s1),
++                 acospi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 acospi (float4 param0)
++{return (float4)(acospi(param0.s0), acospi(param0.s1),
++                 acospi(param0.s2), acospi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 acospi (float8 param0)
++{return (float8)(acospi(param0.s0), acospi(param0.s1),
++                 acospi(param0.s2), acospi(param0.s3),
++                 acospi(param0.s4), acospi(param0.s5),
++                 acospi(param0.s6), acospi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 acospi (float16 param0)
++{return (float16)(acospi(param0.s0), acospi(param0.s1),
++                  acospi(param0.s2), acospi(param0.s3),
++                  acospi(param0.s4), acospi(param0.s5),
++                  acospi(param0.s6), acospi(param0.s7),
++                  acospi(param0.s8), acospi(param0.s9),
++                  acospi(param0.sa), acospi(param0.sb),
++                  acospi(param0.sc), acospi(param0.sd),
++                  acospi(param0.se), acospi(param0.sf)); }
++
++
++//gentype asin (gentype)
++
++INLINE_OVERLOADABLE float2 asin (float2 param0)
++{return (float2)(asin(param0.s0), asin(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 asin (float3 param0)
++{return (float3)(asin(param0.s0), asin(param0.s1),
++                 asin(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 asin (float4 param0)
++{return (float4)(asin(param0.s0), asin(param0.s1),
++                 asin(param0.s2), asin(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 asin (float8 param0)
++{return (float8)(asin(param0.s0), asin(param0.s1),
++                 asin(param0.s2), asin(param0.s3),
++                 asin(param0.s4), asin(param0.s5),
++                 asin(param0.s6), asin(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 asin (float16 param0)
++{return (float16)(asin(param0.s0), asin(param0.s1),
++                  asin(param0.s2), asin(param0.s3),
++                  asin(param0.s4), asin(param0.s5),
++                  asin(param0.s6), asin(param0.s7),
++                  asin(param0.s8), asin(param0.s9),
++                  asin(param0.sa), asin(param0.sb),
++                  asin(param0.sc), asin(param0.sd),
++                  asin(param0.se), asin(param0.sf)); }
++
++
++//gentype asinh (gentype)
++
++INLINE_OVERLOADABLE float2 asinh (float2 param0)
++{return (float2)(asinh(param0.s0), asinh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 asinh (float3 param0)
++{return (float3)(asinh(param0.s0), asinh(param0.s1),
++                 asinh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 asinh (float4 param0)
++{return (float4)(asinh(param0.s0), asinh(param0.s1),
++                 asinh(param0.s2), asinh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 asinh (float8 param0)
++{return (float8)(asinh(param0.s0), asinh(param0.s1),
++                 asinh(param0.s2), asinh(param0.s3),
++                 asinh(param0.s4), asinh(param0.s5),
++                 asinh(param0.s6), asinh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 asinh (float16 param0)
++{return (float16)(asinh(param0.s0), asinh(param0.s1),
++                  asinh(param0.s2), asinh(param0.s3),
++                  asinh(param0.s4), asinh(param0.s5),
++                  asinh(param0.s6), asinh(param0.s7),
++                  asinh(param0.s8), asinh(param0.s9),
++                  asinh(param0.sa), asinh(param0.sb),
++                  asinh(param0.sc), asinh(param0.sd),
++                  asinh(param0.se), asinh(param0.sf)); }
++
++
++//gentype asinpi (gentype x)
++
++INLINE_OVERLOADABLE float2 asinpi (float2 param0)
++{return (float2)(asinpi(param0.s0), asinpi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 asinpi (float3 param0)
++{return (float3)(asinpi(param0.s0), asinpi(param0.s1),
++                 asinpi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 asinpi (float4 param0)
++{return (float4)(asinpi(param0.s0), asinpi(param0.s1),
++                 asinpi(param0.s2), asinpi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 asinpi (float8 param0)
++{return (float8)(asinpi(param0.s0), asinpi(param0.s1),
++                 asinpi(param0.s2), asinpi(param0.s3),
++                 asinpi(param0.s4), asinpi(param0.s5),
++                 asinpi(param0.s6), asinpi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 asinpi (float16 param0)
++{return (float16)(asinpi(param0.s0), asinpi(param0.s1),
++                  asinpi(param0.s2), asinpi(param0.s3),
++                  asinpi(param0.s4), asinpi(param0.s5),
++                  asinpi(param0.s6), asinpi(param0.s7),
++                  asinpi(param0.s8), asinpi(param0.s9),
++                  asinpi(param0.sa), asinpi(param0.sb),
++                  asinpi(param0.sc), asinpi(param0.sd),
++                  asinpi(param0.se), asinpi(param0.sf)); }
++
++
++//gentype atan (gentype y_over_x)
++
++INLINE_OVERLOADABLE float2 atan (float2 param0)
++{return (float2)(atan(param0.s0), atan(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 atan (float3 param0)
++{return (float3)(atan(param0.s0), atan(param0.s1),
++                 atan(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 atan (float4 param0)
++{return (float4)(atan(param0.s0), atan(param0.s1),
++                 atan(param0.s2), atan(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 atan (float8 param0)
++{return (float8)(atan(param0.s0), atan(param0.s1),
++                 atan(param0.s2), atan(param0.s3),
++                 atan(param0.s4), atan(param0.s5),
++                 atan(param0.s6), atan(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 atan (float16 param0)
++{return (float16)(atan(param0.s0), atan(param0.s1),
++                  atan(param0.s2), atan(param0.s3),
++                  atan(param0.s4), atan(param0.s5),
++                  atan(param0.s6), atan(param0.s7),
++                  atan(param0.s8), atan(param0.s9),
++                  atan(param0.sa), atan(param0.sb),
++                  atan(param0.sc), atan(param0.sd),
++                  atan(param0.se), atan(param0.sf)); }
++
++
++//gentype atanh (gentype)
++
++INLINE_OVERLOADABLE float2 atanh (float2 param0)
++{return (float2)(atanh(param0.s0), atanh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 atanh (float3 param0)
++{return (float3)(atanh(param0.s0), atanh(param0.s1),
++                 atanh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 atanh (float4 param0)
++{return (float4)(atanh(param0.s0), atanh(param0.s1),
++                 atanh(param0.s2), atanh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 atanh (float8 param0)
++{return (float8)(atanh(param0.s0), atanh(param0.s1),
++                 atanh(param0.s2), atanh(param0.s3),
++                 atanh(param0.s4), atanh(param0.s5),
++                 atanh(param0.s6), atanh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 atanh (float16 param0)
++{return (float16)(atanh(param0.s0), atanh(param0.s1),
++                  atanh(param0.s2), atanh(param0.s3),
++                  atanh(param0.s4), atanh(param0.s5),
++                  atanh(param0.s6), atanh(param0.s7),
++                  atanh(param0.s8), atanh(param0.s9),
++                  atanh(param0.sa), atanh(param0.sb),
++                  atanh(param0.sc), atanh(param0.sd),
++                  atanh(param0.se), atanh(param0.sf)); }
++
++
++//gentype atanpi (gentype x)
++
++INLINE_OVERLOADABLE float2 atanpi (float2 param0)
++{return (float2)(atanpi(param0.s0), atanpi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 atanpi (float3 param0)
++{return (float3)(atanpi(param0.s0), atanpi(param0.s1),
++                 atanpi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 atanpi (float4 param0)
++{return (float4)(atanpi(param0.s0), atanpi(param0.s1),
++                 atanpi(param0.s2), atanpi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 atanpi (float8 param0)
++{return (float8)(atanpi(param0.s0), atanpi(param0.s1),
++                 atanpi(param0.s2), atanpi(param0.s3),
++                 atanpi(param0.s4), atanpi(param0.s5),
++                 atanpi(param0.s6), atanpi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 atanpi (float16 param0)
++{return (float16)(atanpi(param0.s0), atanpi(param0.s1),
++                  atanpi(param0.s2), atanpi(param0.s3),
++                  atanpi(param0.s4), atanpi(param0.s5),
++                  atanpi(param0.s6), atanpi(param0.s7),
++                  atanpi(param0.s8), atanpi(param0.s9),
++                  atanpi(param0.sa), atanpi(param0.sb),
++                  atanpi(param0.sc), atanpi(param0.sd),
++                  atanpi(param0.se), atanpi(param0.sf)); }
++
++
++//gentype cbrt (gentype)
++
++INLINE_OVERLOADABLE float2 cbrt (float2 param0)
++{return (float2)(cbrt(param0.s0), cbrt(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 cbrt (float3 param0)
++{return (float3)(cbrt(param0.s0), cbrt(param0.s1),
++                 cbrt(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 cbrt (float4 param0)
++{return (float4)(cbrt(param0.s0), cbrt(param0.s1),
++                 cbrt(param0.s2), cbrt(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 cbrt (float8 param0)
++{return (float8)(cbrt(param0.s0), cbrt(param0.s1),
++                 cbrt(param0.s2), cbrt(param0.s3),
++                 cbrt(param0.s4), cbrt(param0.s5),
++                 cbrt(param0.s6), cbrt(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 cbrt (float16 param0)
++{return (float16)(cbrt(param0.s0), cbrt(param0.s1),
++                  cbrt(param0.s2), cbrt(param0.s3),
++                  cbrt(param0.s4), cbrt(param0.s5),
++                  cbrt(param0.s6), cbrt(param0.s7),
++                  cbrt(param0.s8), cbrt(param0.s9),
++                  cbrt(param0.sa), cbrt(param0.sb),
++                  cbrt(param0.sc), cbrt(param0.sd),
++                  cbrt(param0.se), cbrt(param0.sf)); }
++
++
++//gentype ceil (gentype)
++
++INLINE_OVERLOADABLE float2 ceil (float2 param0)
++{return (float2)(ceil(param0.s0), ceil(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 ceil (float3 param0)
++{return (float3)(ceil(param0.s0), ceil(param0.s1),
++                 ceil(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 ceil (float4 param0)
++{return (float4)(ceil(param0.s0), ceil(param0.s1),
++                 ceil(param0.s2), ceil(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 ceil (float8 param0)
++{return (float8)(ceil(param0.s0), ceil(param0.s1),
++                 ceil(param0.s2), ceil(param0.s3),
++                 ceil(param0.s4), ceil(param0.s5),
++                 ceil(param0.s6), ceil(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 ceil (float16 param0)
++{return (float16)(ceil(param0.s0), ceil(param0.s1),
++                  ceil(param0.s2), ceil(param0.s3),
++                  ceil(param0.s4), ceil(param0.s5),
++                  ceil(param0.s6), ceil(param0.s7),
++                  ceil(param0.s8), ceil(param0.s9),
++                  ceil(param0.sa), ceil(param0.sb),
++                  ceil(param0.sc), ceil(param0.sd),
++                  ceil(param0.se), ceil(param0.sf)); }
++
++
++//gentype copysign (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 copysign (float2 param0, float2 param1)
++{return (float2)(copysign(param0.s0, param1.s0), copysign(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 copysign (float3 param0, float3 param1)
++{return (float3)(copysign(param0.s0, param1.s0), copysign(param0.s1, param1.s1),
++                 copysign(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 copysign (float4 param0, float4 param1)
++{return (float4)(copysign(param0.s0, param1.s0), copysign(param0.s1, param1.s1),
++                 copysign(param0.s2, param1.s2), copysign(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 copysign (float8 param0, float8 param1)
++{return (float8)(copysign(param0.s0, param1.s0), copysign(param0.s1, param1.s1),
++                 copysign(param0.s2, param1.s2), copysign(param0.s3, param1.s3),
++                 copysign(param0.s4, param1.s4), copysign(param0.s5, param1.s5),
++                 copysign(param0.s6, param1.s6), copysign(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 copysign (float16 param0, float16 param1)
++{return (float16)(copysign(param0.s0, param1.s0), copysign(param0.s1, param1.s1),
++                  copysign(param0.s2, param1.s2), copysign(param0.s3, param1.s3),
++                  copysign(param0.s4, param1.s4), copysign(param0.s5, param1.s5),
++                  copysign(param0.s6, param1.s6), copysign(param0.s7, param1.s7),
++                  copysign(param0.s8, param1.s8), copysign(param0.s9, param1.s9),
++                  copysign(param0.sa, param1.sa), copysign(param0.sb, param1.sb),
++                  copysign(param0.sc, param1.sc), copysign(param0.sd, param1.sd),
++                  copysign(param0.se, param1.se), copysign(param0.sf, param1.sf)); }
++
++
++//gentype cos (gentype)
++
++INLINE_OVERLOADABLE float2 cos (float2 param0)
++{return (float2)(cos(param0.s0), cos(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 cos (float3 param0)
++{return (float3)(cos(param0.s0), cos(param0.s1),
++                 cos(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 cos (float4 param0)
++{return (float4)(cos(param0.s0), cos(param0.s1),
++                 cos(param0.s2), cos(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 cos (float8 param0)
++{return (float8)(cos(param0.s0), cos(param0.s1),
++                 cos(param0.s2), cos(param0.s3),
++                 cos(param0.s4), cos(param0.s5),
++                 cos(param0.s6), cos(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 cos (float16 param0)
++{return (float16)(cos(param0.s0), cos(param0.s1),
++                  cos(param0.s2), cos(param0.s3),
++                  cos(param0.s4), cos(param0.s5),
++                  cos(param0.s6), cos(param0.s7),
++                  cos(param0.s8), cos(param0.s9),
++                  cos(param0.sa), cos(param0.sb),
++                  cos(param0.sc), cos(param0.sd),
++                  cos(param0.se), cos(param0.sf)); }
++
++
++//gentype cosh (gentype)
++
++INLINE_OVERLOADABLE float2 cosh (float2 param0)
++{return (float2)(cosh(param0.s0), cosh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 cosh (float3 param0)
++{return (float3)(cosh(param0.s0), cosh(param0.s1),
++                 cosh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 cosh (float4 param0)
++{return (float4)(cosh(param0.s0), cosh(param0.s1),
++                 cosh(param0.s2), cosh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 cosh (float8 param0)
++{return (float8)(cosh(param0.s0), cosh(param0.s1),
++                 cosh(param0.s2), cosh(param0.s3),
++                 cosh(param0.s4), cosh(param0.s5),
++                 cosh(param0.s6), cosh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 cosh (float16 param0)
++{return (float16)(cosh(param0.s0), cosh(param0.s1),
++                  cosh(param0.s2), cosh(param0.s3),
++                  cosh(param0.s4), cosh(param0.s5),
++                  cosh(param0.s6), cosh(param0.s7),
++                  cosh(param0.s8), cosh(param0.s9),
++                  cosh(param0.sa), cosh(param0.sb),
++                  cosh(param0.sc), cosh(param0.sd),
++                  cosh(param0.se), cosh(param0.sf)); }
++
++
++//gentype cospi (gentype x)
++
++INLINE_OVERLOADABLE float2 cospi (float2 param0)
++{return (float2)(cospi(param0.s0), cospi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 cospi (float3 param0)
++{return (float3)(cospi(param0.s0), cospi(param0.s1),
++                 cospi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 cospi (float4 param0)
++{return (float4)(cospi(param0.s0), cospi(param0.s1),
++                 cospi(param0.s2), cospi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 cospi (float8 param0)
++{return (float8)(cospi(param0.s0), cospi(param0.s1),
++                 cospi(param0.s2), cospi(param0.s3),
++                 cospi(param0.s4), cospi(param0.s5),
++                 cospi(param0.s6), cospi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 cospi (float16 param0)
++{return (float16)(cospi(param0.s0), cospi(param0.s1),
++                  cospi(param0.s2), cospi(param0.s3),
++                  cospi(param0.s4), cospi(param0.s5),
++                  cospi(param0.s6), cospi(param0.s7),
++                  cospi(param0.s8), cospi(param0.s9),
++                  cospi(param0.sa), cospi(param0.sb),
++                  cospi(param0.sc), cospi(param0.sd),
++                  cospi(param0.se), cospi(param0.sf)); }
++
++
++//gentype erfc (gentype)
++
++INLINE_OVERLOADABLE float2 erfc (float2 param0)
++{return (float2)(erfc(param0.s0), erfc(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 erfc (float3 param0)
++{return (float3)(erfc(param0.s0), erfc(param0.s1),
++                 erfc(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 erfc (float4 param0)
++{return (float4)(erfc(param0.s0), erfc(param0.s1),
++                 erfc(param0.s2), erfc(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 erfc (float8 param0)
++{return (float8)(erfc(param0.s0), erfc(param0.s1),
++                 erfc(param0.s2), erfc(param0.s3),
++                 erfc(param0.s4), erfc(param0.s5),
++                 erfc(param0.s6), erfc(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 erfc (float16 param0)
++{return (float16)(erfc(param0.s0), erfc(param0.s1),
++                  erfc(param0.s2), erfc(param0.s3),
++                  erfc(param0.s4), erfc(param0.s5),
++                  erfc(param0.s6), erfc(param0.s7),
++                  erfc(param0.s8), erfc(param0.s9),
++                  erfc(param0.sa), erfc(param0.sb),
++                  erfc(param0.sc), erfc(param0.sd),
++                  erfc(param0.se), erfc(param0.sf)); }
++
++
++//gentype erf (gentype)
++
++INLINE_OVERLOADABLE float2 erf (float2 param0)
++{return (float2)(erf(param0.s0), erf(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 erf (float3 param0)
++{return (float3)(erf(param0.s0), erf(param0.s1),
++                 erf(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 erf (float4 param0)
++{return (float4)(erf(param0.s0), erf(param0.s1),
++                 erf(param0.s2), erf(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 erf (float8 param0)
++{return (float8)(erf(param0.s0), erf(param0.s1),
++                 erf(param0.s2), erf(param0.s3),
++                 erf(param0.s4), erf(param0.s5),
++                 erf(param0.s6), erf(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 erf (float16 param0)
++{return (float16)(erf(param0.s0), erf(param0.s1),
++                  erf(param0.s2), erf(param0.s3),
++                  erf(param0.s4), erf(param0.s5),
++                  erf(param0.s6), erf(param0.s7),
++                  erf(param0.s8), erf(param0.s9),
++                  erf(param0.sa), erf(param0.sb),
++                  erf(param0.sc), erf(param0.sd),
++                  erf(param0.se), erf(param0.sf)); }
++
++
++//gentype exp (gentype x)
++
++INLINE_OVERLOADABLE float2 exp (float2 param0)
++{return (float2)(exp(param0.s0), exp(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 exp (float3 param0)
++{return (float3)(exp(param0.s0), exp(param0.s1),
++                 exp(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 exp (float4 param0)
++{return (float4)(exp(param0.s0), exp(param0.s1),
++                 exp(param0.s2), exp(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 exp (float8 param0)
++{return (float8)(exp(param0.s0), exp(param0.s1),
++                 exp(param0.s2), exp(param0.s3),
++                 exp(param0.s4), exp(param0.s5),
++                 exp(param0.s6), exp(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 exp (float16 param0)
++{return (float16)(exp(param0.s0), exp(param0.s1),
++                  exp(param0.s2), exp(param0.s3),
++                  exp(param0.s4), exp(param0.s5),
++                  exp(param0.s6), exp(param0.s7),
++                  exp(param0.s8), exp(param0.s9),
++                  exp(param0.sa), exp(param0.sb),
++                  exp(param0.sc), exp(param0.sd),
++                  exp(param0.se), exp(param0.sf)); }
++
++
++//gentype exp2 (gentype)
++
++INLINE_OVERLOADABLE float2 exp2 (float2 param0)
++{return (float2)(exp2(param0.s0), exp2(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 exp2 (float3 param0)
++{return (float3)(exp2(param0.s0), exp2(param0.s1),
++                 exp2(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 exp2 (float4 param0)
++{return (float4)(exp2(param0.s0), exp2(param0.s1),
++                 exp2(param0.s2), exp2(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 exp2 (float8 param0)
++{return (float8)(exp2(param0.s0), exp2(param0.s1),
++                 exp2(param0.s2), exp2(param0.s3),
++                 exp2(param0.s4), exp2(param0.s5),
++                 exp2(param0.s6), exp2(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 exp2 (float16 param0)
++{return (float16)(exp2(param0.s0), exp2(param0.s1),
++                  exp2(param0.s2), exp2(param0.s3),
++                  exp2(param0.s4), exp2(param0.s5),
++                  exp2(param0.s6), exp2(param0.s7),
++                  exp2(param0.s8), exp2(param0.s9),
++                  exp2(param0.sa), exp2(param0.sb),
++                  exp2(param0.sc), exp2(param0.sd),
++                  exp2(param0.se), exp2(param0.sf)); }
++
++
++//gentype exp10 (gentype)
++
++INLINE_OVERLOADABLE float2 exp10 (float2 param0)
++{return (float2)(exp10(param0.s0), exp10(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 exp10 (float3 param0)
++{return (float3)(exp10(param0.s0), exp10(param0.s1),
++                 exp10(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 exp10 (float4 param0)
++{return (float4)(exp10(param0.s0), exp10(param0.s1),
++                 exp10(param0.s2), exp10(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 exp10 (float8 param0)
++{return (float8)(exp10(param0.s0), exp10(param0.s1),
++                 exp10(param0.s2), exp10(param0.s3),
++                 exp10(param0.s4), exp10(param0.s5),
++                 exp10(param0.s6), exp10(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 exp10 (float16 param0)
++{return (float16)(exp10(param0.s0), exp10(param0.s1),
++                  exp10(param0.s2), exp10(param0.s3),
++                  exp10(param0.s4), exp10(param0.s5),
++                  exp10(param0.s6), exp10(param0.s7),
++                  exp10(param0.s8), exp10(param0.s9),
++                  exp10(param0.sa), exp10(param0.sb),
++                  exp10(param0.sc), exp10(param0.sd),
++                  exp10(param0.se), exp10(param0.sf)); }
++
++
++//gentype expm1 (gentype x)
++
++INLINE_OVERLOADABLE float2 expm1 (float2 param0)
++{return (float2)(expm1(param0.s0), expm1(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 expm1 (float3 param0)
++{return (float3)(expm1(param0.s0), expm1(param0.s1),
++                 expm1(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 expm1 (float4 param0)
++{return (float4)(expm1(param0.s0), expm1(param0.s1),
++                 expm1(param0.s2), expm1(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 expm1 (float8 param0)
++{return (float8)(expm1(param0.s0), expm1(param0.s1),
++                 expm1(param0.s2), expm1(param0.s3),
++                 expm1(param0.s4), expm1(param0.s5),
++                 expm1(param0.s6), expm1(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 expm1 (float16 param0)
++{return (float16)(expm1(param0.s0), expm1(param0.s1),
++                  expm1(param0.s2), expm1(param0.s3),
++                  expm1(param0.s4), expm1(param0.s5),
++                  expm1(param0.s6), expm1(param0.s7),
++                  expm1(param0.s8), expm1(param0.s9),
++                  expm1(param0.sa), expm1(param0.sb),
++                  expm1(param0.sc), expm1(param0.sd),
++                  expm1(param0.se), expm1(param0.sf)); }
++
++
++//gentype fabs (gentype)
++
++INLINE_OVERLOADABLE float2 fabs (float2 param0)
++{return (float2)(fabs(param0.s0), fabs(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 fabs (float3 param0)
++{return (float3)(fabs(param0.s0), fabs(param0.s1),
++                 fabs(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 fabs (float4 param0)
++{return (float4)(fabs(param0.s0), fabs(param0.s1),
++                 fabs(param0.s2), fabs(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 fabs (float8 param0)
++{return (float8)(fabs(param0.s0), fabs(param0.s1),
++                 fabs(param0.s2), fabs(param0.s3),
++                 fabs(param0.s4), fabs(param0.s5),
++                 fabs(param0.s6), fabs(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 fabs (float16 param0)
++{return (float16)(fabs(param0.s0), fabs(param0.s1),
++                  fabs(param0.s2), fabs(param0.s3),
++                  fabs(param0.s4), fabs(param0.s5),
++                  fabs(param0.s6), fabs(param0.s7),
++                  fabs(param0.s8), fabs(param0.s9),
++                  fabs(param0.sa), fabs(param0.sb),
++                  fabs(param0.sc), fabs(param0.sd),
++                  fabs(param0.se), fabs(param0.sf)); }
++
++
++//gentype fdim (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 fdim (float2 param0, float2 param1)
++{return (float2)(fdim(param0.s0, param1.s0), fdim(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 fdim (float3 param0, float3 param1)
++{return (float3)(fdim(param0.s0, param1.s0), fdim(param0.s1, param1.s1),
++                 fdim(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 fdim (float4 param0, float4 param1)
++{return (float4)(fdim(param0.s0, param1.s0), fdim(param0.s1, param1.s1),
++                 fdim(param0.s2, param1.s2), fdim(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 fdim (float8 param0, float8 param1)
++{return (float8)(fdim(param0.s0, param1.s0), fdim(param0.s1, param1.s1),
++                 fdim(param0.s2, param1.s2), fdim(param0.s3, param1.s3),
++                 fdim(param0.s4, param1.s4), fdim(param0.s5, param1.s5),
++                 fdim(param0.s6, param1.s6), fdim(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 fdim (float16 param0, float16 param1)
++{return (float16)(fdim(param0.s0, param1.s0), fdim(param0.s1, param1.s1),
++                  fdim(param0.s2, param1.s2), fdim(param0.s3, param1.s3),
++                  fdim(param0.s4, param1.s4), fdim(param0.s5, param1.s5),
++                  fdim(param0.s6, param1.s6), fdim(param0.s7, param1.s7),
++                  fdim(param0.s8, param1.s8), fdim(param0.s9, param1.s9),
++                  fdim(param0.sa, param1.sa), fdim(param0.sb, param1.sb),
++                  fdim(param0.sc, param1.sc), fdim(param0.sd, param1.sd),
++                  fdim(param0.se, param1.se), fdim(param0.sf, param1.sf)); }
++
++
++//gentype floor (gentype)
++
++INLINE_OVERLOADABLE float2 floor (float2 param0)
++{return (float2)(floor(param0.s0), floor(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 floor (float3 param0)
++{return (float3)(floor(param0.s0), floor(param0.s1),
++                 floor(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 floor (float4 param0)
++{return (float4)(floor(param0.s0), floor(param0.s1),
++                 floor(param0.s2), floor(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 floor (float8 param0)
++{return (float8)(floor(param0.s0), floor(param0.s1),
++                 floor(param0.s2), floor(param0.s3),
++                 floor(param0.s4), floor(param0.s5),
++                 floor(param0.s6), floor(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 floor (float16 param0)
++{return (float16)(floor(param0.s0), floor(param0.s1),
++                  floor(param0.s2), floor(param0.s3),
++                  floor(param0.s4), floor(param0.s5),
++                  floor(param0.s6), floor(param0.s7),
++                  floor(param0.s8), floor(param0.s9),
++                  floor(param0.sa), floor(param0.sb),
++                  floor(param0.sc), floor(param0.sd),
++                  floor(param0.se), floor(param0.sf)); }
++
++
++//gentype fmax (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 fmax (float2 param0, float2 param1)
++{return (float2)(fmax(param0.s0, param1.s0), fmax(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 fmax (float3 param0, float3 param1)
++{return (float3)(fmax(param0.s0, param1.s0), fmax(param0.s1, param1.s1),
++                 fmax(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 fmax (float4 param0, float4 param1)
++{return (float4)(fmax(param0.s0, param1.s0), fmax(param0.s1, param1.s1),
++                 fmax(param0.s2, param1.s2), fmax(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 fmax (float8 param0, float8 param1)
++{return (float8)(fmax(param0.s0, param1.s0), fmax(param0.s1, param1.s1),
++                 fmax(param0.s2, param1.s2), fmax(param0.s3, param1.s3),
++                 fmax(param0.s4, param1.s4), fmax(param0.s5, param1.s5),
++                 fmax(param0.s6, param1.s6), fmax(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 fmax (float16 param0, float16 param1)
++{return (float16)(fmax(param0.s0, param1.s0), fmax(param0.s1, param1.s1),
++                  fmax(param0.s2, param1.s2), fmax(param0.s3, param1.s3),
++                  fmax(param0.s4, param1.s4), fmax(param0.s5, param1.s5),
++                  fmax(param0.s6, param1.s6), fmax(param0.s7, param1.s7),
++                  fmax(param0.s8, param1.s8), fmax(param0.s9, param1.s9),
++                  fmax(param0.sa, param1.sa), fmax(param0.sb, param1.sb),
++                  fmax(param0.sc, param1.sc), fmax(param0.sd, param1.sd),
++                  fmax(param0.se, param1.se), fmax(param0.sf, param1.sf)); }
++
++
++//gentypef fmax (gentypef x, float y)
++
++INLINE_OVERLOADABLE float2 fmax (float2 param0, float param1)
++{return (float2)(fmax(param0.s0, param1), fmax(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE float3 fmax (float3 param0, float param1)
++{return (float3)(fmax(param0.s0, param1), fmax(param0.s1, param1),
++                 fmax(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE float4 fmax (float4 param0, float param1)
++{return (float4)(fmax(param0.s0, param1), fmax(param0.s1, param1),
++                 fmax(param0.s2, param1), fmax(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE float8 fmax (float8 param0, float param1)
++{return (float8)(fmax(param0.s0, param1), fmax(param0.s1, param1),
++                 fmax(param0.s2, param1), fmax(param0.s3, param1),
++                 fmax(param0.s4, param1), fmax(param0.s5, param1),
++                 fmax(param0.s6, param1), fmax(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE float16 fmax (float16 param0, float param1)
++{return (float16)(fmax(param0.s0, param1), fmax(param0.s1, param1),
++                  fmax(param0.s2, param1), fmax(param0.s3, param1),
++                  fmax(param0.s4, param1), fmax(param0.s5, param1),
++                  fmax(param0.s6, param1), fmax(param0.s7, param1),
++                  fmax(param0.s8, param1), fmax(param0.s9, param1),
++                  fmax(param0.sa, param1), fmax(param0.sb, param1),
++                  fmax(param0.sc, param1), fmax(param0.sd, param1),
++                  fmax(param0.se, param1), fmax(param0.sf, param1)); }
++
++
++//gentyped fmax (gentyped x, double y)
++
++
++//gentype fmin (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 fmin (float2 param0, float2 param1)
++{return (float2)(fmin(param0.s0, param1.s0), fmin(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 fmin (float3 param0, float3 param1)
++{return (float3)(fmin(param0.s0, param1.s0), fmin(param0.s1, param1.s1),
++                 fmin(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 fmin (float4 param0, float4 param1)
++{return (float4)(fmin(param0.s0, param1.s0), fmin(param0.s1, param1.s1),
++                 fmin(param0.s2, param1.s2), fmin(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 fmin (float8 param0, float8 param1)
++{return (float8)(fmin(param0.s0, param1.s0), fmin(param0.s1, param1.s1),
++                 fmin(param0.s2, param1.s2), fmin(param0.s3, param1.s3),
++                 fmin(param0.s4, param1.s4), fmin(param0.s5, param1.s5),
++                 fmin(param0.s6, param1.s6), fmin(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 fmin (float16 param0, float16 param1)
++{return (float16)(fmin(param0.s0, param1.s0), fmin(param0.s1, param1.s1),
++                  fmin(param0.s2, param1.s2), fmin(param0.s3, param1.s3),
++                  fmin(param0.s4, param1.s4), fmin(param0.s5, param1.s5),
++                  fmin(param0.s6, param1.s6), fmin(param0.s7, param1.s7),
++                  fmin(param0.s8, param1.s8), fmin(param0.s9, param1.s9),
++                  fmin(param0.sa, param1.sa), fmin(param0.sb, param1.sb),
++                  fmin(param0.sc, param1.sc), fmin(param0.sd, param1.sd),
++                  fmin(param0.se, param1.se), fmin(param0.sf, param1.sf)); }
++
++
++//gentypef fmin (gentypef x, float y)
++
++INLINE_OVERLOADABLE float2 fmin (float2 param0, float param1)
++{return (float2)(fmin(param0.s0, param1), fmin(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE float3 fmin (float3 param0, float param1)
++{return (float3)(fmin(param0.s0, param1), fmin(param0.s1, param1),
++                 fmin(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE float4 fmin (float4 param0, float param1)
++{return (float4)(fmin(param0.s0, param1), fmin(param0.s1, param1),
++                 fmin(param0.s2, param1), fmin(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE float8 fmin (float8 param0, float param1)
++{return (float8)(fmin(param0.s0, param1), fmin(param0.s1, param1),
++                 fmin(param0.s2, param1), fmin(param0.s3, param1),
++                 fmin(param0.s4, param1), fmin(param0.s5, param1),
++                 fmin(param0.s6, param1), fmin(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE float16 fmin (float16 param0, float param1)
++{return (float16)(fmin(param0.s0, param1), fmin(param0.s1, param1),
++                  fmin(param0.s2, param1), fmin(param0.s3, param1),
++                  fmin(param0.s4, param1), fmin(param0.s5, param1),
++                  fmin(param0.s6, param1), fmin(param0.s7, param1),
++                  fmin(param0.s8, param1), fmin(param0.s9, param1),
++                  fmin(param0.sa, param1), fmin(param0.sb, param1),
++                  fmin(param0.sc, param1), fmin(param0.sd, param1),
++                  fmin(param0.se, param1), fmin(param0.sf, param1)); }
++
++
++//gentyped fmin (gentyped x, double y)
++
++
++//gentype fmod (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 fmod (float2 param0, float2 param1)
++{return (float2)(fmod(param0.s0, param1.s0), fmod(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 fmod (float3 param0, float3 param1)
++{return (float3)(fmod(param0.s0, param1.s0), fmod(param0.s1, param1.s1),
++                 fmod(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 fmod (float4 param0, float4 param1)
++{return (float4)(fmod(param0.s0, param1.s0), fmod(param0.s1, param1.s1),
++                 fmod(param0.s2, param1.s2), fmod(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 fmod (float8 param0, float8 param1)
++{return (float8)(fmod(param0.s0, param1.s0), fmod(param0.s1, param1.s1),
++                 fmod(param0.s2, param1.s2), fmod(param0.s3, param1.s3),
++                 fmod(param0.s4, param1.s4), fmod(param0.s5, param1.s5),
++                 fmod(param0.s6, param1.s6), fmod(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 fmod (float16 param0, float16 param1)
++{return (float16)(fmod(param0.s0, param1.s0), fmod(param0.s1, param1.s1),
++                  fmod(param0.s2, param1.s2), fmod(param0.s3, param1.s3),
++                  fmod(param0.s4, param1.s4), fmod(param0.s5, param1.s5),
++                  fmod(param0.s6, param1.s6), fmod(param0.s7, param1.s7),
++                  fmod(param0.s8, param1.s8), fmod(param0.s9, param1.s9),
++                  fmod(param0.sa, param1.sa), fmod(param0.sb, param1.sb),
++                  fmod(param0.sc, param1.sc), fmod(param0.sd, param1.sd),
++                  fmod(param0.se, param1.se), fmod(param0.sf, param1.sf)); }
++
++
++//gentype fract (gentype x, __global gentype *iptr)
++
++INLINE_OVERLOADABLE float2 fract (float2 param0, __global float2 *param1)
++{return (float2)(fract(param0.s0, (__global  float *)param1 +  0), fract(param0.s1, (__global  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 fract (float3 param0, __global float3 *param1)
++{return (float3)(fract(param0.s0, (__global  float *)param1 +  0), fract(param0.s1, (__global  float *)param1 +  1),
++                 fract(param0.s2, (__global  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 fract (float4 param0, __global float4 *param1)
++{return (float4)(fract(param0.s0, (__global  float *)param1 +  0), fract(param0.s1, (__global  float *)param1 +  1),
++                 fract(param0.s2, (__global  float *)param1 +  2), fract(param0.s3, (__global  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 fract (float8 param0, __global float8 *param1)
++{return (float8)(fract(param0.s0, (__global  float *)param1 +  0), fract(param0.s1, (__global  float *)param1 +  1),
++                 fract(param0.s2, (__global  float *)param1 +  2), fract(param0.s3, (__global  float *)param1 +  3),
++                 fract(param0.s4, (__global  float *)param1 +  4), fract(param0.s5, (__global  float *)param1 +  5),
++                 fract(param0.s6, (__global  float *)param1 +  6), fract(param0.s7, (__global  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 fract (float16 param0, __global float16 *param1)
++{return (float16)(fract(param0.s0, (__global  float *)param1 +  0), fract(param0.s1, (__global  float *)param1 +  1),
++                  fract(param0.s2, (__global  float *)param1 +  2), fract(param0.s3, (__global  float *)param1 +  3),
++                  fract(param0.s4, (__global  float *)param1 +  4), fract(param0.s5, (__global  float *)param1 +  5),
++                  fract(param0.s6, (__global  float *)param1 +  6), fract(param0.s7, (__global  float *)param1 +  7),
++                  fract(param0.s8, (__global  float *)param1 +  8), fract(param0.s9, (__global  float *)param1 +  9),
++                  fract(param0.sa, (__global  float *)param1 + 10), fract(param0.sb, (__global  float *)param1 + 11),
++                  fract(param0.sc, (__global  float *)param1 + 12), fract(param0.sd, (__global  float *)param1 + 13),
++                  fract(param0.se, (__global  float *)param1 + 14), fract(param0.sf, (__global  float *)param1 + 15)); }
++
++
++//gentype fract (gentype x, __local gentype *iptr)
++
++INLINE_OVERLOADABLE float2 fract (float2 param0, __local float2 *param1)
++{return (float2)(fract(param0.s0, (__local  float *)param1 +  0), fract(param0.s1, (__local  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 fract (float3 param0, __local float3 *param1)
++{return (float3)(fract(param0.s0, (__local  float *)param1 +  0), fract(param0.s1, (__local  float *)param1 +  1),
++                 fract(param0.s2, (__local  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 fract (float4 param0, __local float4 *param1)
++{return (float4)(fract(param0.s0, (__local  float *)param1 +  0), fract(param0.s1, (__local  float *)param1 +  1),
++                 fract(param0.s2, (__local  float *)param1 +  2), fract(param0.s3, (__local  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 fract (float8 param0, __local float8 *param1)
++{return (float8)(fract(param0.s0, (__local  float *)param1 +  0), fract(param0.s1, (__local  float *)param1 +  1),
++                 fract(param0.s2, (__local  float *)param1 +  2), fract(param0.s3, (__local  float *)param1 +  3),
++                 fract(param0.s4, (__local  float *)param1 +  4), fract(param0.s5, (__local  float *)param1 +  5),
++                 fract(param0.s6, (__local  float *)param1 +  6), fract(param0.s7, (__local  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 fract (float16 param0, __local float16 *param1)
++{return (float16)(fract(param0.s0, (__local  float *)param1 +  0), fract(param0.s1, (__local  float *)param1 +  1),
++                  fract(param0.s2, (__local  float *)param1 +  2), fract(param0.s3, (__local  float *)param1 +  3),
++                  fract(param0.s4, (__local  float *)param1 +  4), fract(param0.s5, (__local  float *)param1 +  5),
++                  fract(param0.s6, (__local  float *)param1 +  6), fract(param0.s7, (__local  float *)param1 +  7),
++                  fract(param0.s8, (__local  float *)param1 +  8), fract(param0.s9, (__local  float *)param1 +  9),
++                  fract(param0.sa, (__local  float *)param1 + 10), fract(param0.sb, (__local  float *)param1 + 11),
++                  fract(param0.sc, (__local  float *)param1 + 12), fract(param0.sd, (__local  float *)param1 + 13),
++                  fract(param0.se, (__local  float *)param1 + 14), fract(param0.sf, (__local  float *)param1 + 15)); }
++
++
++//gentype fract (gentype x, __private gentype *iptr)
++
++INLINE_OVERLOADABLE float2 fract (float2 param0, __private float2 *param1)
++{return (float2)(fract(param0.s0, (__private  float *)param1 +  0), fract(param0.s1, (__private  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 fract (float3 param0, __private float3 *param1)
++{return (float3)(fract(param0.s0, (__private  float *)param1 +  0), fract(param0.s1, (__private  float *)param1 +  1),
++                 fract(param0.s2, (__private  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 fract (float4 param0, __private float4 *param1)
++{return (float4)(fract(param0.s0, (__private  float *)param1 +  0), fract(param0.s1, (__private  float *)param1 +  1),
++                 fract(param0.s2, (__private  float *)param1 +  2), fract(param0.s3, (__private  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 fract (float8 param0, __private float8 *param1)
++{return (float8)(fract(param0.s0, (__private  float *)param1 +  0), fract(param0.s1, (__private  float *)param1 +  1),
++                 fract(param0.s2, (__private  float *)param1 +  2), fract(param0.s3, (__private  float *)param1 +  3),
++                 fract(param0.s4, (__private  float *)param1 +  4), fract(param0.s5, (__private  float *)param1 +  5),
++                 fract(param0.s6, (__private  float *)param1 +  6), fract(param0.s7, (__private  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 fract (float16 param0, __private float16 *param1)
++{return (float16)(fract(param0.s0, (__private  float *)param1 +  0), fract(param0.s1, (__private  float *)param1 +  1),
++                  fract(param0.s2, (__private  float *)param1 +  2), fract(param0.s3, (__private  float *)param1 +  3),
++                  fract(param0.s4, (__private  float *)param1 +  4), fract(param0.s5, (__private  float *)param1 +  5),
++                  fract(param0.s6, (__private  float *)param1 +  6), fract(param0.s7, (__private  float *)param1 +  7),
++                  fract(param0.s8, (__private  float *)param1 +  8), fract(param0.s9, (__private  float *)param1 +  9),
++                  fract(param0.sa, (__private  float *)param1 + 10), fract(param0.sb, (__private  float *)param1 + 11),
++                  fract(param0.sc, (__private  float *)param1 + 12), fract(param0.sd, (__private  float *)param1 + 13),
++                  fract(param0.se, (__private  float *)param1 + 14), fract(param0.sf, (__private  float *)param1 + 15)); }
++
++
++//floatn frexp (floatn x, __global intn *exp)
++
++INLINE_OVERLOADABLE float2 frexp (float2 param0, __global int2 *param1)
++{return (float2)(frexp(param0.s0, (__global  int *)param1 +  0), frexp(param0.s1, (__global  int *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 frexp (float3 param0, __global int3 *param1)
++{return (float3)(frexp(param0.s0, (__global  int *)param1 +  0), frexp(param0.s1, (__global  int *)param1 +  1),
++                 frexp(param0.s2, (__global  int *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 frexp (float4 param0, __global int4 *param1)
++{return (float4)(frexp(param0.s0, (__global  int *)param1 +  0), frexp(param0.s1, (__global  int *)param1 +  1),
++                 frexp(param0.s2, (__global  int *)param1 +  2), frexp(param0.s3, (__global  int *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 frexp (float8 param0, __global int8 *param1)
++{return (float8)(frexp(param0.s0, (__global  int *)param1 +  0), frexp(param0.s1, (__global  int *)param1 +  1),
++                 frexp(param0.s2, (__global  int *)param1 +  2), frexp(param0.s3, (__global  int *)param1 +  3),
++                 frexp(param0.s4, (__global  int *)param1 +  4), frexp(param0.s5, (__global  int *)param1 +  5),
++                 frexp(param0.s6, (__global  int *)param1 +  6), frexp(param0.s7, (__global  int *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 frexp (float16 param0, __global int16 *param1)
++{return (float16)(frexp(param0.s0, (__global  int *)param1 +  0), frexp(param0.s1, (__global  int *)param1 +  1),
++                  frexp(param0.s2, (__global  int *)param1 +  2), frexp(param0.s3, (__global  int *)param1 +  3),
++                  frexp(param0.s4, (__global  int *)param1 +  4), frexp(param0.s5, (__global  int *)param1 +  5),
++                  frexp(param0.s6, (__global  int *)param1 +  6), frexp(param0.s7, (__global  int *)param1 +  7),
++                  frexp(param0.s8, (__global  int *)param1 +  8), frexp(param0.s9, (__global  int *)param1 +  9),
++                  frexp(param0.sa, (__global  int *)param1 + 10), frexp(param0.sb, (__global  int *)param1 + 11),
++                  frexp(param0.sc, (__global  int *)param1 + 12), frexp(param0.sd, (__global  int *)param1 + 13),
++                  frexp(param0.se, (__global  int *)param1 + 14), frexp(param0.sf, (__global  int *)param1 + 15)); }
++
++
++//floatn frexp (floatn x, __local intn *exp)
++
++INLINE_OVERLOADABLE float2 frexp (float2 param0, __local int2 *param1)
++{return (float2)(frexp(param0.s0, (__local  int *)param1 +  0), frexp(param0.s1, (__local  int *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 frexp (float3 param0, __local int3 *param1)
++{return (float3)(frexp(param0.s0, (__local  int *)param1 +  0), frexp(param0.s1, (__local  int *)param1 +  1),
++                 frexp(param0.s2, (__local  int *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 frexp (float4 param0, __local int4 *param1)
++{return (float4)(frexp(param0.s0, (__local  int *)param1 +  0), frexp(param0.s1, (__local  int *)param1 +  1),
++                 frexp(param0.s2, (__local  int *)param1 +  2), frexp(param0.s3, (__local  int *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 frexp (float8 param0, __local int8 *param1)
++{return (float8)(frexp(param0.s0, (__local  int *)param1 +  0), frexp(param0.s1, (__local  int *)param1 +  1),
++                 frexp(param0.s2, (__local  int *)param1 +  2), frexp(param0.s3, (__local  int *)param1 +  3),
++                 frexp(param0.s4, (__local  int *)param1 +  4), frexp(param0.s5, (__local  int *)param1 +  5),
++                 frexp(param0.s6, (__local  int *)param1 +  6), frexp(param0.s7, (__local  int *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 frexp (float16 param0, __local int16 *param1)
++{return (float16)(frexp(param0.s0, (__local  int *)param1 +  0), frexp(param0.s1, (__local  int *)param1 +  1),
++                  frexp(param0.s2, (__local  int *)param1 +  2), frexp(param0.s3, (__local  int *)param1 +  3),
++                  frexp(param0.s4, (__local  int *)param1 +  4), frexp(param0.s5, (__local  int *)param1 +  5),
++                  frexp(param0.s6, (__local  int *)param1 +  6), frexp(param0.s7, (__local  int *)param1 +  7),
++                  frexp(param0.s8, (__local  int *)param1 +  8), frexp(param0.s9, (__local  int *)param1 +  9),
++                  frexp(param0.sa, (__local  int *)param1 + 10), frexp(param0.sb, (__local  int *)param1 + 11),
++                  frexp(param0.sc, (__local  int *)param1 + 12), frexp(param0.sd, (__local  int *)param1 + 13),
++                  frexp(param0.se, (__local  int *)param1 + 14), frexp(param0.sf, (__local  int *)param1 + 15)); }
++
++
++//floatn frexp (floatn x, __private intn *exp)
++
++INLINE_OVERLOADABLE float2 frexp (float2 param0, __private int2 *param1)
++{return (float2)(frexp(param0.s0, (__private  int *)param1 +  0), frexp(param0.s1, (__private  int *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 frexp (float3 param0, __private int3 *param1)
++{return (float3)(frexp(param0.s0, (__private  int *)param1 +  0), frexp(param0.s1, (__private  int *)param1 +  1),
++                 frexp(param0.s2, (__private  int *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 frexp (float4 param0, __private int4 *param1)
++{return (float4)(frexp(param0.s0, (__private  int *)param1 +  0), frexp(param0.s1, (__private  int *)param1 +  1),
++                 frexp(param0.s2, (__private  int *)param1 +  2), frexp(param0.s3, (__private  int *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 frexp (float8 param0, __private int8 *param1)
++{return (float8)(frexp(param0.s0, (__private  int *)param1 +  0), frexp(param0.s1, (__private  int *)param1 +  1),
++                 frexp(param0.s2, (__private  int *)param1 +  2), frexp(param0.s3, (__private  int *)param1 +  3),
++                 frexp(param0.s4, (__private  int *)param1 +  4), frexp(param0.s5, (__private  int *)param1 +  5),
++                 frexp(param0.s6, (__private  int *)param1 +  6), frexp(param0.s7, (__private  int *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 frexp (float16 param0, __private int16 *param1)
++{return (float16)(frexp(param0.s0, (__private  int *)param1 +  0), frexp(param0.s1, (__private  int *)param1 +  1),
++                  frexp(param0.s2, (__private  int *)param1 +  2), frexp(param0.s3, (__private  int *)param1 +  3),
++                  frexp(param0.s4, (__private  int *)param1 +  4), frexp(param0.s5, (__private  int *)param1 +  5),
++                  frexp(param0.s6, (__private  int *)param1 +  6), frexp(param0.s7, (__private  int *)param1 +  7),
++                  frexp(param0.s8, (__private  int *)param1 +  8), frexp(param0.s9, (__private  int *)param1 +  9),
++                  frexp(param0.sa, (__private  int *)param1 + 10), frexp(param0.sb, (__private  int *)param1 + 11),
++                  frexp(param0.sc, (__private  int *)param1 + 12), frexp(param0.sd, (__private  int *)param1 + 13),
++                  frexp(param0.se, (__private  int *)param1 + 14), frexp(param0.sf, (__private  int *)param1 + 15)); }
++
++
++//float frexp (float x, __global int *exp)
++
++
++//float frexp (float x, __local int *exp)
++
++
++//float frexp (float x, __private int *exp)
++
++
++//doublen frexp (doublen x, __global intn *exp)
++
++
++//doublen frexp (doublen x, __local intn *exp)
++
++
++//doublen frexp (doublen x, __private intn *exp)
++
++
++//double frexp (double x, __global int *exp)
++
++
++//double frexp (double x, __local int *exp)
++
++
++//double frexp (double x, __private int *exp)
++
++
++//gentype hypot (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 hypot (float2 param0, float2 param1)
++{return (float2)(hypot(param0.s0, param1.s0), hypot(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 hypot (float3 param0, float3 param1)
++{return (float3)(hypot(param0.s0, param1.s0), hypot(param0.s1, param1.s1),
++                 hypot(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 hypot (float4 param0, float4 param1)
++{return (float4)(hypot(param0.s0, param1.s0), hypot(param0.s1, param1.s1),
++                 hypot(param0.s2, param1.s2), hypot(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 hypot (float8 param0, float8 param1)
++{return (float8)(hypot(param0.s0, param1.s0), hypot(param0.s1, param1.s1),
++                 hypot(param0.s2, param1.s2), hypot(param0.s3, param1.s3),
++                 hypot(param0.s4, param1.s4), hypot(param0.s5, param1.s5),
++                 hypot(param0.s6, param1.s6), hypot(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 hypot (float16 param0, float16 param1)
++{return (float16)(hypot(param0.s0, param1.s0), hypot(param0.s1, param1.s1),
++                  hypot(param0.s2, param1.s2), hypot(param0.s3, param1.s3),
++                  hypot(param0.s4, param1.s4), hypot(param0.s5, param1.s5),
++                  hypot(param0.s6, param1.s6), hypot(param0.s7, param1.s7),
++                  hypot(param0.s8, param1.s8), hypot(param0.s9, param1.s9),
++                  hypot(param0.sa, param1.sa), hypot(param0.sb, param1.sb),
++                  hypot(param0.sc, param1.sc), hypot(param0.sd, param1.sd),
++                  hypot(param0.se, param1.se), hypot(param0.sf, param1.sf)); }
++
++
++//intn ilogb (floatn x)
++
++INLINE_OVERLOADABLE int2 ilogb (float2 param0)
++{return (int2)(ilogb(param0.s0), ilogb(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 ilogb (float3 param0)
++{return (int3)(ilogb(param0.s0), ilogb(param0.s1),
++               ilogb(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 ilogb (float4 param0)
++{return (int4)(ilogb(param0.s0), ilogb(param0.s1),
++               ilogb(param0.s2), ilogb(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 ilogb (float8 param0)
++{return (int8)(ilogb(param0.s0), ilogb(param0.s1),
++               ilogb(param0.s2), ilogb(param0.s3),
++               ilogb(param0.s4), ilogb(param0.s5),
++               ilogb(param0.s6), ilogb(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 ilogb (float16 param0)
++{return (int16)(ilogb(param0.s0), ilogb(param0.s1),
++                ilogb(param0.s2), ilogb(param0.s3),
++                ilogb(param0.s4), ilogb(param0.s5),
++                ilogb(param0.s6), ilogb(param0.s7),
++                ilogb(param0.s8), ilogb(param0.s9),
++                ilogb(param0.sa), ilogb(param0.sb),
++                ilogb(param0.sc), ilogb(param0.sd),
++                ilogb(param0.se), ilogb(param0.sf)); }
++
++
++//int ilogb (float x)
++
++
++//intn ilogb (doublen x)
++
++
++//int ilogb (double x)
++
++
++//floatn ldexp (floatn x, intn k)
++
++INLINE_OVERLOADABLE float2 ldexp (float2 param0, int2 param1)
++{return (float2)(ldexp(param0.s0, param1.s0), ldexp(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 ldexp (float3 param0, int3 param1)
++{return (float3)(ldexp(param0.s0, param1.s0), ldexp(param0.s1, param1.s1),
++                 ldexp(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 ldexp (float4 param0, int4 param1)
++{return (float4)(ldexp(param0.s0, param1.s0), ldexp(param0.s1, param1.s1),
++                 ldexp(param0.s2, param1.s2), ldexp(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 ldexp (float8 param0, int8 param1)
++{return (float8)(ldexp(param0.s0, param1.s0), ldexp(param0.s1, param1.s1),
++                 ldexp(param0.s2, param1.s2), ldexp(param0.s3, param1.s3),
++                 ldexp(param0.s4, param1.s4), ldexp(param0.s5, param1.s5),
++                 ldexp(param0.s6, param1.s6), ldexp(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 ldexp (float16 param0, int16 param1)
++{return (float16)(ldexp(param0.s0, param1.s0), ldexp(param0.s1, param1.s1),
++                  ldexp(param0.s2, param1.s2), ldexp(param0.s3, param1.s3),
++                  ldexp(param0.s4, param1.s4), ldexp(param0.s5, param1.s5),
++                  ldexp(param0.s6, param1.s6), ldexp(param0.s7, param1.s7),
++                  ldexp(param0.s8, param1.s8), ldexp(param0.s9, param1.s9),
++                  ldexp(param0.sa, param1.sa), ldexp(param0.sb, param1.sb),
++                  ldexp(param0.sc, param1.sc), ldexp(param0.sd, param1.sd),
++                  ldexp(param0.se, param1.se), ldexp(param0.sf, param1.sf)); }
++
++
++//floatn ldexp (floatn x, int k)
++
++INLINE_OVERLOADABLE float2 ldexp (float2 param0, int param1)
++{return (float2)(ldexp(param0.s0, param1), ldexp(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE float3 ldexp (float3 param0, int param1)
++{return (float3)(ldexp(param0.s0, param1), ldexp(param0.s1, param1),
++                 ldexp(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE float4 ldexp (float4 param0, int param1)
++{return (float4)(ldexp(param0.s0, param1), ldexp(param0.s1, param1),
++                 ldexp(param0.s2, param1), ldexp(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE float8 ldexp (float8 param0, int param1)
++{return (float8)(ldexp(param0.s0, param1), ldexp(param0.s1, param1),
++                 ldexp(param0.s2, param1), ldexp(param0.s3, param1),
++                 ldexp(param0.s4, param1), ldexp(param0.s5, param1),
++                 ldexp(param0.s6, param1), ldexp(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE float16 ldexp (float16 param0, int param1)
++{return (float16)(ldexp(param0.s0, param1), ldexp(param0.s1, param1),
++                  ldexp(param0.s2, param1), ldexp(param0.s3, param1),
++                  ldexp(param0.s4, param1), ldexp(param0.s5, param1),
++                  ldexp(param0.s6, param1), ldexp(param0.s7, param1),
++                  ldexp(param0.s8, param1), ldexp(param0.s9, param1),
++                  ldexp(param0.sa, param1), ldexp(param0.sb, param1),
++                  ldexp(param0.sc, param1), ldexp(param0.sd, param1),
++                  ldexp(param0.se, param1), ldexp(param0.sf, param1)); }
++
++
++//float ldexp (float x, int k)
++
++
++//doublen ldexp (doublen x, intn k)
++
++
++//doublen ldexp (doublen x, int k)
++
++
++//double ldexp (double x, int k)
++
++
++//gentype log (gentype)
++
++INLINE_OVERLOADABLE float2 log (float2 param0)
++{return (float2)(log(param0.s0), log(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 log (float3 param0)
++{return (float3)(log(param0.s0), log(param0.s1),
++                 log(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 log (float4 param0)
++{return (float4)(log(param0.s0), log(param0.s1),
++                 log(param0.s2), log(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 log (float8 param0)
++{return (float8)(log(param0.s0), log(param0.s1),
++                 log(param0.s2), log(param0.s3),
++                 log(param0.s4), log(param0.s5),
++                 log(param0.s6), log(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 log (float16 param0)
++{return (float16)(log(param0.s0), log(param0.s1),
++                  log(param0.s2), log(param0.s3),
++                  log(param0.s4), log(param0.s5),
++                  log(param0.s6), log(param0.s7),
++                  log(param0.s8), log(param0.s9),
++                  log(param0.sa), log(param0.sb),
++                  log(param0.sc), log(param0.sd),
++                  log(param0.se), log(param0.sf)); }
++
++
++//gentype log2 (gentype)
++
++INLINE_OVERLOADABLE float2 log2 (float2 param0)
++{return (float2)(log2(param0.s0), log2(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 log2 (float3 param0)
++{return (float3)(log2(param0.s0), log2(param0.s1),
++                 log2(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 log2 (float4 param0)
++{return (float4)(log2(param0.s0), log2(param0.s1),
++                 log2(param0.s2), log2(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 log2 (float8 param0)
++{return (float8)(log2(param0.s0), log2(param0.s1),
++                 log2(param0.s2), log2(param0.s3),
++                 log2(param0.s4), log2(param0.s5),
++                 log2(param0.s6), log2(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 log2 (float16 param0)
++{return (float16)(log2(param0.s0), log2(param0.s1),
++                  log2(param0.s2), log2(param0.s3),
++                  log2(param0.s4), log2(param0.s5),
++                  log2(param0.s6), log2(param0.s7),
++                  log2(param0.s8), log2(param0.s9),
++                  log2(param0.sa), log2(param0.sb),
++                  log2(param0.sc), log2(param0.sd),
++                  log2(param0.se), log2(param0.sf)); }
++
++
++//gentype log10 (gentype)
++
++INLINE_OVERLOADABLE float2 log10 (float2 param0)
++{return (float2)(log10(param0.s0), log10(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 log10 (float3 param0)
++{return (float3)(log10(param0.s0), log10(param0.s1),
++                 log10(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 log10 (float4 param0)
++{return (float4)(log10(param0.s0), log10(param0.s1),
++                 log10(param0.s2), log10(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 log10 (float8 param0)
++{return (float8)(log10(param0.s0), log10(param0.s1),
++                 log10(param0.s2), log10(param0.s3),
++                 log10(param0.s4), log10(param0.s5),
++                 log10(param0.s6), log10(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 log10 (float16 param0)
++{return (float16)(log10(param0.s0), log10(param0.s1),
++                  log10(param0.s2), log10(param0.s3),
++                  log10(param0.s4), log10(param0.s5),
++                  log10(param0.s6), log10(param0.s7),
++                  log10(param0.s8), log10(param0.s9),
++                  log10(param0.sa), log10(param0.sb),
++                  log10(param0.sc), log10(param0.sd),
++                  log10(param0.se), log10(param0.sf)); }
++
++
++//gentype log1p (gentype x)
++
++INLINE_OVERLOADABLE float2 log1p (float2 param0)
++{return (float2)(log1p(param0.s0), log1p(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 log1p (float3 param0)
++{return (float3)(log1p(param0.s0), log1p(param0.s1),
++                 log1p(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 log1p (float4 param0)
++{return (float4)(log1p(param0.s0), log1p(param0.s1),
++                 log1p(param0.s2), log1p(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 log1p (float8 param0)
++{return (float8)(log1p(param0.s0), log1p(param0.s1),
++                 log1p(param0.s2), log1p(param0.s3),
++                 log1p(param0.s4), log1p(param0.s5),
++                 log1p(param0.s6), log1p(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 log1p (float16 param0)
++{return (float16)(log1p(param0.s0), log1p(param0.s1),
++                  log1p(param0.s2), log1p(param0.s3),
++                  log1p(param0.s4), log1p(param0.s5),
++                  log1p(param0.s6), log1p(param0.s7),
++                  log1p(param0.s8), log1p(param0.s9),
++                  log1p(param0.sa), log1p(param0.sb),
++                  log1p(param0.sc), log1p(param0.sd),
++                  log1p(param0.se), log1p(param0.sf)); }
++
++
++//gentype logb (gentype x)
++
++INLINE_OVERLOADABLE float2 logb (float2 param0)
++{return (float2)(logb(param0.s0), logb(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 logb (float3 param0)
++{return (float3)(logb(param0.s0), logb(param0.s1),
++                 logb(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 logb (float4 param0)
++{return (float4)(logb(param0.s0), logb(param0.s1),
++                 logb(param0.s2), logb(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 logb (float8 param0)
++{return (float8)(logb(param0.s0), logb(param0.s1),
++                 logb(param0.s2), logb(param0.s3),
++                 logb(param0.s4), logb(param0.s5),
++                 logb(param0.s6), logb(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 logb (float16 param0)
++{return (float16)(logb(param0.s0), logb(param0.s1),
++                  logb(param0.s2), logb(param0.s3),
++                  logb(param0.s4), logb(param0.s5),
++                  logb(param0.s6), logb(param0.s7),
++                  logb(param0.s8), logb(param0.s9),
++                  logb(param0.sa), logb(param0.sb),
++                  logb(param0.sc), logb(param0.sd),
++                  logb(param0.se), logb(param0.sf)); }
++
++
++//gentype mad (gentype a, gentype b, gentype c)
++
++INLINE_OVERLOADABLE float2 mad (float2 param0, float2 param1, float2 param2)
++{return (float2)(mad(param0.s0, param1.s0, param2.s0), mad(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE float3 mad (float3 param0, float3 param1, float3 param2)
++{return (float3)(mad(param0.s0, param1.s0, param2.s0), mad(param0.s1, param1.s1, param2.s1),
++                 mad(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE float4 mad (float4 param0, float4 param1, float4 param2)
++{return (float4)(mad(param0.s0, param1.s0, param2.s0), mad(param0.s1, param1.s1, param2.s1),
++                 mad(param0.s2, param1.s2, param2.s2), mad(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE float8 mad (float8 param0, float8 param1, float8 param2)
++{return (float8)(mad(param0.s0, param1.s0, param2.s0), mad(param0.s1, param1.s1, param2.s1),
++                 mad(param0.s2, param1.s2, param2.s2), mad(param0.s3, param1.s3, param2.s3),
++                 mad(param0.s4, param1.s4, param2.s4), mad(param0.s5, param1.s5, param2.s5),
++                 mad(param0.s6, param1.s6, param2.s6), mad(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE float16 mad (float16 param0, float16 param1, float16 param2)
++{return (float16)(mad(param0.s0, param1.s0, param2.s0), mad(param0.s1, param1.s1, param2.s1),
++                  mad(param0.s2, param1.s2, param2.s2), mad(param0.s3, param1.s3, param2.s3),
++                  mad(param0.s4, param1.s4, param2.s4), mad(param0.s5, param1.s5, param2.s5),
++                  mad(param0.s6, param1.s6, param2.s6), mad(param0.s7, param1.s7, param2.s7),
++                  mad(param0.s8, param1.s8, param2.s8), mad(param0.s9, param1.s9, param2.s9),
++                  mad(param0.sa, param1.sa, param2.sa), mad(param0.sb, param1.sb, param2.sb),
++                  mad(param0.sc, param1.sc, param2.sc), mad(param0.sd, param1.sd, param2.sd),
++                  mad(param0.se, param1.se, param2.se), mad(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentype maxmag (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 maxmag (float2 param0, float2 param1)
++{return (float2)(maxmag(param0.s0, param1.s0), maxmag(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 maxmag (float3 param0, float3 param1)
++{return (float3)(maxmag(param0.s0, param1.s0), maxmag(param0.s1, param1.s1),
++                 maxmag(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 maxmag (float4 param0, float4 param1)
++{return (float4)(maxmag(param0.s0, param1.s0), maxmag(param0.s1, param1.s1),
++                 maxmag(param0.s2, param1.s2), maxmag(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 maxmag (float8 param0, float8 param1)
++{return (float8)(maxmag(param0.s0, param1.s0), maxmag(param0.s1, param1.s1),
++                 maxmag(param0.s2, param1.s2), maxmag(param0.s3, param1.s3),
++                 maxmag(param0.s4, param1.s4), maxmag(param0.s5, param1.s5),
++                 maxmag(param0.s6, param1.s6), maxmag(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 maxmag (float16 param0, float16 param1)
++{return (float16)(maxmag(param0.s0, param1.s0), maxmag(param0.s1, param1.s1),
++                  maxmag(param0.s2, param1.s2), maxmag(param0.s3, param1.s3),
++                  maxmag(param0.s4, param1.s4), maxmag(param0.s5, param1.s5),
++                  maxmag(param0.s6, param1.s6), maxmag(param0.s7, param1.s7),
++                  maxmag(param0.s8, param1.s8), maxmag(param0.s9, param1.s9),
++                  maxmag(param0.sa, param1.sa), maxmag(param0.sb, param1.sb),
++                  maxmag(param0.sc, param1.sc), maxmag(param0.sd, param1.sd),
++                  maxmag(param0.se, param1.se), maxmag(param0.sf, param1.sf)); }
++
++
++//gentype minmag (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 minmag (float2 param0, float2 param1)
++{return (float2)(minmag(param0.s0, param1.s0), minmag(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 minmag (float3 param0, float3 param1)
++{return (float3)(minmag(param0.s0, param1.s0), minmag(param0.s1, param1.s1),
++                 minmag(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 minmag (float4 param0, float4 param1)
++{return (float4)(minmag(param0.s0, param1.s0), minmag(param0.s1, param1.s1),
++                 minmag(param0.s2, param1.s2), minmag(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 minmag (float8 param0, float8 param1)
++{return (float8)(minmag(param0.s0, param1.s0), minmag(param0.s1, param1.s1),
++                 minmag(param0.s2, param1.s2), minmag(param0.s3, param1.s3),
++                 minmag(param0.s4, param1.s4), minmag(param0.s5, param1.s5),
++                 minmag(param0.s6, param1.s6), minmag(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 minmag (float16 param0, float16 param1)
++{return (float16)(minmag(param0.s0, param1.s0), minmag(param0.s1, param1.s1),
++                  minmag(param0.s2, param1.s2), minmag(param0.s3, param1.s3),
++                  minmag(param0.s4, param1.s4), minmag(param0.s5, param1.s5),
++                  minmag(param0.s6, param1.s6), minmag(param0.s7, param1.s7),
++                  minmag(param0.s8, param1.s8), minmag(param0.s9, param1.s9),
++                  minmag(param0.sa, param1.sa), minmag(param0.sb, param1.sb),
++                  minmag(param0.sc, param1.sc), minmag(param0.sd, param1.sd),
++                  minmag(param0.se, param1.se), minmag(param0.sf, param1.sf)); }
++
++
++//gentype modf (gentype x, __global gentype *iptr)
++
++INLINE_OVERLOADABLE float2 modf (float2 param0, __global float2 *param1)
++{return (float2)(modf(param0.s0, (__global  float *)param1 +  0), modf(param0.s1, (__global  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 modf (float3 param0, __global float3 *param1)
++{return (float3)(modf(param0.s0, (__global  float *)param1 +  0), modf(param0.s1, (__global  float *)param1 +  1),
++                 modf(param0.s2, (__global  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 modf (float4 param0, __global float4 *param1)
++{return (float4)(modf(param0.s0, (__global  float *)param1 +  0), modf(param0.s1, (__global  float *)param1 +  1),
++                 modf(param0.s2, (__global  float *)param1 +  2), modf(param0.s3, (__global  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 modf (float8 param0, __global float8 *param1)
++{return (float8)(modf(param0.s0, (__global  float *)param1 +  0), modf(param0.s1, (__global  float *)param1 +  1),
++                 modf(param0.s2, (__global  float *)param1 +  2), modf(param0.s3, (__global  float *)param1 +  3),
++                 modf(param0.s4, (__global  float *)param1 +  4), modf(param0.s5, (__global  float *)param1 +  5),
++                 modf(param0.s6, (__global  float *)param1 +  6), modf(param0.s7, (__global  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 modf (float16 param0, __global float16 *param1)
++{return (float16)(modf(param0.s0, (__global  float *)param1 +  0), modf(param0.s1, (__global  float *)param1 +  1),
++                  modf(param0.s2, (__global  float *)param1 +  2), modf(param0.s3, (__global  float *)param1 +  3),
++                  modf(param0.s4, (__global  float *)param1 +  4), modf(param0.s5, (__global  float *)param1 +  5),
++                  modf(param0.s6, (__global  float *)param1 +  6), modf(param0.s7, (__global  float *)param1 +  7),
++                  modf(param0.s8, (__global  float *)param1 +  8), modf(param0.s9, (__global  float *)param1 +  9),
++                  modf(param0.sa, (__global  float *)param1 + 10), modf(param0.sb, (__global  float *)param1 + 11),
++                  modf(param0.sc, (__global  float *)param1 + 12), modf(param0.sd, (__global  float *)param1 + 13),
++                  modf(param0.se, (__global  float *)param1 + 14), modf(param0.sf, (__global  float *)param1 + 15)); }
++
++
++//gentype modf (gentype x, __local gentype *iptr)
++
++INLINE_OVERLOADABLE float2 modf (float2 param0, __local float2 *param1)
++{return (float2)(modf(param0.s0, (__local  float *)param1 +  0), modf(param0.s1, (__local  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 modf (float3 param0, __local float3 *param1)
++{return (float3)(modf(param0.s0, (__local  float *)param1 +  0), modf(param0.s1, (__local  float *)param1 +  1),
++                 modf(param0.s2, (__local  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 modf (float4 param0, __local float4 *param1)
++{return (float4)(modf(param0.s0, (__local  float *)param1 +  0), modf(param0.s1, (__local  float *)param1 +  1),
++                 modf(param0.s2, (__local  float *)param1 +  2), modf(param0.s3, (__local  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 modf (float8 param0, __local float8 *param1)
++{return (float8)(modf(param0.s0, (__local  float *)param1 +  0), modf(param0.s1, (__local  float *)param1 +  1),
++                 modf(param0.s2, (__local  float *)param1 +  2), modf(param0.s3, (__local  float *)param1 +  3),
++                 modf(param0.s4, (__local  float *)param1 +  4), modf(param0.s5, (__local  float *)param1 +  5),
++                 modf(param0.s6, (__local  float *)param1 +  6), modf(param0.s7, (__local  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 modf (float16 param0, __local float16 *param1)
++{return (float16)(modf(param0.s0, (__local  float *)param1 +  0), modf(param0.s1, (__local  float *)param1 +  1),
++                  modf(param0.s2, (__local  float *)param1 +  2), modf(param0.s3, (__local  float *)param1 +  3),
++                  modf(param0.s4, (__local  float *)param1 +  4), modf(param0.s5, (__local  float *)param1 +  5),
++                  modf(param0.s6, (__local  float *)param1 +  6), modf(param0.s7, (__local  float *)param1 +  7),
++                  modf(param0.s8, (__local  float *)param1 +  8), modf(param0.s9, (__local  float *)param1 +  9),
++                  modf(param0.sa, (__local  float *)param1 + 10), modf(param0.sb, (__local  float *)param1 + 11),
++                  modf(param0.sc, (__local  float *)param1 + 12), modf(param0.sd, (__local  float *)param1 + 13),
++                  modf(param0.se, (__local  float *)param1 + 14), modf(param0.sf, (__local  float *)param1 + 15)); }
++
++
++//gentype modf (gentype x, __private gentype *iptr)
++
++INLINE_OVERLOADABLE float2 modf (float2 param0, __private float2 *param1)
++{return (float2)(modf(param0.s0, (__private  float *)param1 +  0), modf(param0.s1, (__private  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 modf (float3 param0, __private float3 *param1)
++{return (float3)(modf(param0.s0, (__private  float *)param1 +  0), modf(param0.s1, (__private  float *)param1 +  1),
++                 modf(param0.s2, (__private  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 modf (float4 param0, __private float4 *param1)
++{return (float4)(modf(param0.s0, (__private  float *)param1 +  0), modf(param0.s1, (__private  float *)param1 +  1),
++                 modf(param0.s2, (__private  float *)param1 +  2), modf(param0.s3, (__private  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 modf (float8 param0, __private float8 *param1)
++{return (float8)(modf(param0.s0, (__private  float *)param1 +  0), modf(param0.s1, (__private  float *)param1 +  1),
++                 modf(param0.s2, (__private  float *)param1 +  2), modf(param0.s3, (__private  float *)param1 +  3),
++                 modf(param0.s4, (__private  float *)param1 +  4), modf(param0.s5, (__private  float *)param1 +  5),
++                 modf(param0.s6, (__private  float *)param1 +  6), modf(param0.s7, (__private  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 modf (float16 param0, __private float16 *param1)
++{return (float16)(modf(param0.s0, (__private  float *)param1 +  0), modf(param0.s1, (__private  float *)param1 +  1),
++                  modf(param0.s2, (__private  float *)param1 +  2), modf(param0.s3, (__private  float *)param1 +  3),
++                  modf(param0.s4, (__private  float *)param1 +  4), modf(param0.s5, (__private  float *)param1 +  5),
++                  modf(param0.s6, (__private  float *)param1 +  6), modf(param0.s7, (__private  float *)param1 +  7),
++                  modf(param0.s8, (__private  float *)param1 +  8), modf(param0.s9, (__private  float *)param1 +  9),
++                  modf(param0.sa, (__private  float *)param1 + 10), modf(param0.sb, (__private  float *)param1 + 11),
++                  modf(param0.sc, (__private  float *)param1 + 12), modf(param0.sd, (__private  float *)param1 + 13),
++                  modf(param0.se, (__private  float *)param1 + 14), modf(param0.sf, (__private  float *)param1 + 15)); }
++
++
++//floatn nan (uintn nancode)
++
++INLINE_OVERLOADABLE float2 nan (uint2 param0)
++{return (float2)(nan(param0.s0), nan(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 nan (uint3 param0)
++{return (float3)(nan(param0.s0), nan(param0.s1),
++                 nan(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 nan (uint4 param0)
++{return (float4)(nan(param0.s0), nan(param0.s1),
++                 nan(param0.s2), nan(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 nan (uint8 param0)
++{return (float8)(nan(param0.s0), nan(param0.s1),
++                 nan(param0.s2), nan(param0.s3),
++                 nan(param0.s4), nan(param0.s5),
++                 nan(param0.s6), nan(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 nan (uint16 param0)
++{return (float16)(nan(param0.s0), nan(param0.s1),
++                  nan(param0.s2), nan(param0.s3),
++                  nan(param0.s4), nan(param0.s5),
++                  nan(param0.s6), nan(param0.s7),
++                  nan(param0.s8), nan(param0.s9),
++                  nan(param0.sa), nan(param0.sb),
++                  nan(param0.sc), nan(param0.sd),
++                  nan(param0.se), nan(param0.sf)); }
++
++
++//float nan (uint nancode)
++
++
++//doublen nan (ulongn nancode)
++
++
++//double nan (ulong nancode)
++
++
++//gentype nextafter (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 nextafter (float2 param0, float2 param1)
++{return (float2)(nextafter(param0.s0, param1.s0), nextafter(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 nextafter (float3 param0, float3 param1)
++{return (float3)(nextafter(param0.s0, param1.s0), nextafter(param0.s1, param1.s1),
++                 nextafter(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 nextafter (float4 param0, float4 param1)
++{return (float4)(nextafter(param0.s0, param1.s0), nextafter(param0.s1, param1.s1),
++                 nextafter(param0.s2, param1.s2), nextafter(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 nextafter (float8 param0, float8 param1)
++{return (float8)(nextafter(param0.s0, param1.s0), nextafter(param0.s1, param1.s1),
++                 nextafter(param0.s2, param1.s2), nextafter(param0.s3, param1.s3),
++                 nextafter(param0.s4, param1.s4), nextafter(param0.s5, param1.s5),
++                 nextafter(param0.s6, param1.s6), nextafter(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 nextafter (float16 param0, float16 param1)
++{return (float16)(nextafter(param0.s0, param1.s0), nextafter(param0.s1, param1.s1),
++                  nextafter(param0.s2, param1.s2), nextafter(param0.s3, param1.s3),
++                  nextafter(param0.s4, param1.s4), nextafter(param0.s5, param1.s5),
++                  nextafter(param0.s6, param1.s6), nextafter(param0.s7, param1.s7),
++                  nextafter(param0.s8, param1.s8), nextafter(param0.s9, param1.s9),
++                  nextafter(param0.sa, param1.sa), nextafter(param0.sb, param1.sb),
++                  nextafter(param0.sc, param1.sc), nextafter(param0.sd, param1.sd),
++                  nextafter(param0.se, param1.se), nextafter(param0.sf, param1.sf)); }
++
++
++//gentype pow (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 pow (float2 param0, float2 param1)
++{return (float2)(pow(param0.s0, param1.s0), pow(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 pow (float3 param0, float3 param1)
++{return (float3)(pow(param0.s0, param1.s0), pow(param0.s1, param1.s1),
++                 pow(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 pow (float4 param0, float4 param1)
++{return (float4)(pow(param0.s0, param1.s0), pow(param0.s1, param1.s1),
++                 pow(param0.s2, param1.s2), pow(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 pow (float8 param0, float8 param1)
++{return (float8)(pow(param0.s0, param1.s0), pow(param0.s1, param1.s1),
++                 pow(param0.s2, param1.s2), pow(param0.s3, param1.s3),
++                 pow(param0.s4, param1.s4), pow(param0.s5, param1.s5),
++                 pow(param0.s6, param1.s6), pow(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 pow (float16 param0, float16 param1)
++{return (float16)(pow(param0.s0, param1.s0), pow(param0.s1, param1.s1),
++                  pow(param0.s2, param1.s2), pow(param0.s3, param1.s3),
++                  pow(param0.s4, param1.s4), pow(param0.s5, param1.s5),
++                  pow(param0.s6, param1.s6), pow(param0.s7, param1.s7),
++                  pow(param0.s8, param1.s8), pow(param0.s9, param1.s9),
++                  pow(param0.sa, param1.sa), pow(param0.sb, param1.sb),
++                  pow(param0.sc, param1.sc), pow(param0.sd, param1.sd),
++                  pow(param0.se, param1.se), pow(param0.sf, param1.sf)); }
++
++
++//floatn pown (floatn x, intn y)
++
++INLINE_OVERLOADABLE float2 pown (float2 param0, int2 param1)
++{return (float2)(pown(param0.s0, param1.s0), pown(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 pown (float3 param0, int3 param1)
++{return (float3)(pown(param0.s0, param1.s0), pown(param0.s1, param1.s1),
++                 pown(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 pown (float4 param0, int4 param1)
++{return (float4)(pown(param0.s0, param1.s0), pown(param0.s1, param1.s1),
++                 pown(param0.s2, param1.s2), pown(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 pown (float8 param0, int8 param1)
++{return (float8)(pown(param0.s0, param1.s0), pown(param0.s1, param1.s1),
++                 pown(param0.s2, param1.s2), pown(param0.s3, param1.s3),
++                 pown(param0.s4, param1.s4), pown(param0.s5, param1.s5),
++                 pown(param0.s6, param1.s6), pown(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 pown (float16 param0, int16 param1)
++{return (float16)(pown(param0.s0, param1.s0), pown(param0.s1, param1.s1),
++                  pown(param0.s2, param1.s2), pown(param0.s3, param1.s3),
++                  pown(param0.s4, param1.s4), pown(param0.s5, param1.s5),
++                  pown(param0.s6, param1.s6), pown(param0.s7, param1.s7),
++                  pown(param0.s8, param1.s8), pown(param0.s9, param1.s9),
++                  pown(param0.sa, param1.sa), pown(param0.sb, param1.sb),
++                  pown(param0.sc, param1.sc), pown(param0.sd, param1.sd),
++                  pown(param0.se, param1.se), pown(param0.sf, param1.sf)); }
++
++
++//float pown (float x, int y)
++
++
++//doublen pown (doublen x, intn y)
++
++
++//double pown (double x, int y)
++
++
++//gentype remainder (gentype x, gentype y)
++
++INLINE_OVERLOADABLE float2 remainder (float2 param0, float2 param1)
++{return (float2)(remainder(param0.s0, param1.s0), remainder(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 remainder (float3 param0, float3 param1)
++{return (float3)(remainder(param0.s0, param1.s0), remainder(param0.s1, param1.s1),
++                 remainder(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 remainder (float4 param0, float4 param1)
++{return (float4)(remainder(param0.s0, param1.s0), remainder(param0.s1, param1.s1),
++                 remainder(param0.s2, param1.s2), remainder(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 remainder (float8 param0, float8 param1)
++{return (float8)(remainder(param0.s0, param1.s0), remainder(param0.s1, param1.s1),
++                 remainder(param0.s2, param1.s2), remainder(param0.s3, param1.s3),
++                 remainder(param0.s4, param1.s4), remainder(param0.s5, param1.s5),
++                 remainder(param0.s6, param1.s6), remainder(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 remainder (float16 param0, float16 param1)
++{return (float16)(remainder(param0.s0, param1.s0), remainder(param0.s1, param1.s1),
++                  remainder(param0.s2, param1.s2), remainder(param0.s3, param1.s3),
++                  remainder(param0.s4, param1.s4), remainder(param0.s5, param1.s5),
++                  remainder(param0.s6, param1.s6), remainder(param0.s7, param1.s7),
++                  remainder(param0.s8, param1.s8), remainder(param0.s9, param1.s9),
++                  remainder(param0.sa, param1.sa), remainder(param0.sb, param1.sb),
++                  remainder(param0.sc, param1.sc), remainder(param0.sd, param1.sd),
++                  remainder(param0.se, param1.se), remainder(param0.sf, param1.sf)); }
++
++
++//floatn remquo (floatn x, floatn y, __global intn *quo)
++
++INLINE_OVERLOADABLE float2 remquo (float2 param0, float2 param1, __global int2 *param2)
++{return (float2)(remquo(param0.s0, param1.s0, (__global  int *)param2 +  0), remquo(param0.s1, param1.s1, (__global  int *)param2 +  1)); }
++
++INLINE_OVERLOADABLE float3 remquo (float3 param0, float3 param1, __global int3 *param2)
++{return (float3)(remquo(param0.s0, param1.s0, (__global  int *)param2 +  0), remquo(param0.s1, param1.s1, (__global  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__global  int *)param2 +  2)); }
++
++INLINE_OVERLOADABLE float4 remquo (float4 param0, float4 param1, __global int4 *param2)
++{return (float4)(remquo(param0.s0, param1.s0, (__global  int *)param2 +  0), remquo(param0.s1, param1.s1, (__global  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__global  int *)param2 +  2), remquo(param0.s3, param1.s3, (__global  int *)param2 +  3)); }
++
++INLINE_OVERLOADABLE float8 remquo (float8 param0, float8 param1, __global int8 *param2)
++{return (float8)(remquo(param0.s0, param1.s0, (__global  int *)param2 +  0), remquo(param0.s1, param1.s1, (__global  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__global  int *)param2 +  2), remquo(param0.s3, param1.s3, (__global  int *)param2 +  3),
++                 remquo(param0.s4, param1.s4, (__global  int *)param2 +  4), remquo(param0.s5, param1.s5, (__global  int *)param2 +  5),
++                 remquo(param0.s6, param1.s6, (__global  int *)param2 +  6), remquo(param0.s7, param1.s7, (__global  int *)param2 +  7)); }
++
++INLINE_OVERLOADABLE float16 remquo (float16 param0, float16 param1, __global int16 *param2)
++{return (float16)(remquo(param0.s0, param1.s0, (__global  int *)param2 +  0), remquo(param0.s1, param1.s1, (__global  int *)param2 +  1),
++                  remquo(param0.s2, param1.s2, (__global  int *)param2 +  2), remquo(param0.s3, param1.s3, (__global  int *)param2 +  3),
++                  remquo(param0.s4, param1.s4, (__global  int *)param2 +  4), remquo(param0.s5, param1.s5, (__global  int *)param2 +  5),
++                  remquo(param0.s6, param1.s6, (__global  int *)param2 +  6), remquo(param0.s7, param1.s7, (__global  int *)param2 +  7),
++                  remquo(param0.s8, param1.s8, (__global  int *)param2 +  8), remquo(param0.s9, param1.s9, (__global  int *)param2 +  9),
++                  remquo(param0.sa, param1.sa, (__global  int *)param2 + 10), remquo(param0.sb, param1.sb, (__global  int *)param2 + 11),
++                  remquo(param0.sc, param1.sc, (__global  int *)param2 + 12), remquo(param0.sd, param1.sd, (__global  int *)param2 + 13),
++                  remquo(param0.se, param1.se, (__global  int *)param2 + 14), remquo(param0.sf, param1.sf, (__global  int *)param2 + 15)); }
++
++
++//floatn remquo (floatn x, floatn y, __local intn *quo)
++
++INLINE_OVERLOADABLE float2 remquo (float2 param0, float2 param1, __local int2 *param2)
++{return (float2)(remquo(param0.s0, param1.s0, (__local  int *)param2 +  0), remquo(param0.s1, param1.s1, (__local  int *)param2 +  1)); }
++
++INLINE_OVERLOADABLE float3 remquo (float3 param0, float3 param1, __local int3 *param2)
++{return (float3)(remquo(param0.s0, param1.s0, (__local  int *)param2 +  0), remquo(param0.s1, param1.s1, (__local  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__local  int *)param2 +  2)); }
++
++INLINE_OVERLOADABLE float4 remquo (float4 param0, float4 param1, __local int4 *param2)
++{return (float4)(remquo(param0.s0, param1.s0, (__local  int *)param2 +  0), remquo(param0.s1, param1.s1, (__local  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__local  int *)param2 +  2), remquo(param0.s3, param1.s3, (__local  int *)param2 +  3)); }
++
++INLINE_OVERLOADABLE float8 remquo (float8 param0, float8 param1, __local int8 *param2)
++{return (float8)(remquo(param0.s0, param1.s0, (__local  int *)param2 +  0), remquo(param0.s1, param1.s1, (__local  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__local  int *)param2 +  2), remquo(param0.s3, param1.s3, (__local  int *)param2 +  3),
++                 remquo(param0.s4, param1.s4, (__local  int *)param2 +  4), remquo(param0.s5, param1.s5, (__local  int *)param2 +  5),
++                 remquo(param0.s6, param1.s6, (__local  int *)param2 +  6), remquo(param0.s7, param1.s7, (__local  int *)param2 +  7)); }
++
++INLINE_OVERLOADABLE float16 remquo (float16 param0, float16 param1, __local int16 *param2)
++{return (float16)(remquo(param0.s0, param1.s0, (__local  int *)param2 +  0), remquo(param0.s1, param1.s1, (__local  int *)param2 +  1),
++                  remquo(param0.s2, param1.s2, (__local  int *)param2 +  2), remquo(param0.s3, param1.s3, (__local  int *)param2 +  3),
++                  remquo(param0.s4, param1.s4, (__local  int *)param2 +  4), remquo(param0.s5, param1.s5, (__local  int *)param2 +  5),
++                  remquo(param0.s6, param1.s6, (__local  int *)param2 +  6), remquo(param0.s7, param1.s7, (__local  int *)param2 +  7),
++                  remquo(param0.s8, param1.s8, (__local  int *)param2 +  8), remquo(param0.s9, param1.s9, (__local  int *)param2 +  9),
++                  remquo(param0.sa, param1.sa, (__local  int *)param2 + 10), remquo(param0.sb, param1.sb, (__local  int *)param2 + 11),
++                  remquo(param0.sc, param1.sc, (__local  int *)param2 + 12), remquo(param0.sd, param1.sd, (__local  int *)param2 + 13),
++                  remquo(param0.se, param1.se, (__local  int *)param2 + 14), remquo(param0.sf, param1.sf, (__local  int *)param2 + 15)); }
++
++
++//floatn remquo (floatn x, floatn y, __private intn *quo)
++
++INLINE_OVERLOADABLE float2 remquo (float2 param0, float2 param1, __private int2 *param2)
++{return (float2)(remquo(param0.s0, param1.s0, (__private  int *)param2 +  0), remquo(param0.s1, param1.s1, (__private  int *)param2 +  1)); }
++
++INLINE_OVERLOADABLE float3 remquo (float3 param0, float3 param1, __private int3 *param2)
++{return (float3)(remquo(param0.s0, param1.s0, (__private  int *)param2 +  0), remquo(param0.s1, param1.s1, (__private  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__private  int *)param2 +  2)); }
++
++INLINE_OVERLOADABLE float4 remquo (float4 param0, float4 param1, __private int4 *param2)
++{return (float4)(remquo(param0.s0, param1.s0, (__private  int *)param2 +  0), remquo(param0.s1, param1.s1, (__private  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__private  int *)param2 +  2), remquo(param0.s3, param1.s3, (__private  int *)param2 +  3)); }
++
++INLINE_OVERLOADABLE float8 remquo (float8 param0, float8 param1, __private int8 *param2)
++{return (float8)(remquo(param0.s0, param1.s0, (__private  int *)param2 +  0), remquo(param0.s1, param1.s1, (__private  int *)param2 +  1),
++                 remquo(param0.s2, param1.s2, (__private  int *)param2 +  2), remquo(param0.s3, param1.s3, (__private  int *)param2 +  3),
++                 remquo(param0.s4, param1.s4, (__private  int *)param2 +  4), remquo(param0.s5, param1.s5, (__private  int *)param2 +  5),
++                 remquo(param0.s6, param1.s6, (__private  int *)param2 +  6), remquo(param0.s7, param1.s7, (__private  int *)param2 +  7)); }
++
++INLINE_OVERLOADABLE float16 remquo (float16 param0, float16 param1, __private int16 *param2)
++{return (float16)(remquo(param0.s0, param1.s0, (__private  int *)param2 +  0), remquo(param0.s1, param1.s1, (__private  int *)param2 +  1),
++                  remquo(param0.s2, param1.s2, (__private  int *)param2 +  2), remquo(param0.s3, param1.s3, (__private  int *)param2 +  3),
++                  remquo(param0.s4, param1.s4, (__private  int *)param2 +  4), remquo(param0.s5, param1.s5, (__private  int *)param2 +  5),
++                  remquo(param0.s6, param1.s6, (__private  int *)param2 +  6), remquo(param0.s7, param1.s7, (__private  int *)param2 +  7),
++                  remquo(param0.s8, param1.s8, (__private  int *)param2 +  8), remquo(param0.s9, param1.s9, (__private  int *)param2 +  9),
++                  remquo(param0.sa, param1.sa, (__private  int *)param2 + 10), remquo(param0.sb, param1.sb, (__private  int *)param2 + 11),
++                  remquo(param0.sc, param1.sc, (__private  int *)param2 + 12), remquo(param0.sd, param1.sd, (__private  int *)param2 + 13),
++                  remquo(param0.se, param1.se, (__private  int *)param2 + 14), remquo(param0.sf, param1.sf, (__private  int *)param2 + 15)); }
++
++
++//float remquo (float x, float y, __global int *quo)
++
++
++//float remquo (float x, float y, __local int *quo)
++
++
++//float remquo (float x, float y, __private int *quo)
++
++
++//doublen remquo (doublen x, doublen y, __global intn *quo)
++
++
++//doublen remquo (doublen x, doublen y, __local intn *quo)
++
++
++//doublen remquo (doublen x, doublen y, __private intn *quo)
++
++
++//double remquo (double x, double y, __global int *quo)
++
++
++//double remquo (double x, double y, __local int *quo)
++
++
++//double remquo (double x, double y, __private int *quo)
++
++
++//gentype rint (gentype)
++
++INLINE_OVERLOADABLE float2 rint (float2 param0)
++{return (float2)(rint(param0.s0), rint(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 rint (float3 param0)
++{return (float3)(rint(param0.s0), rint(param0.s1),
++                 rint(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 rint (float4 param0)
++{return (float4)(rint(param0.s0), rint(param0.s1),
++                 rint(param0.s2), rint(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 rint (float8 param0)
++{return (float8)(rint(param0.s0), rint(param0.s1),
++                 rint(param0.s2), rint(param0.s3),
++                 rint(param0.s4), rint(param0.s5),
++                 rint(param0.s6), rint(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 rint (float16 param0)
++{return (float16)(rint(param0.s0), rint(param0.s1),
++                  rint(param0.s2), rint(param0.s3),
++                  rint(param0.s4), rint(param0.s5),
++                  rint(param0.s6), rint(param0.s7),
++                  rint(param0.s8), rint(param0.s9),
++                  rint(param0.sa), rint(param0.sb),
++                  rint(param0.sc), rint(param0.sd),
++                  rint(param0.se), rint(param0.sf)); }
++
++
++//floatn rootn (floatn x, intn y)
++
++INLINE_OVERLOADABLE float2 rootn (float2 param0, int2 param1)
++{return (float2)(rootn(param0.s0, param1.s0), rootn(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 rootn (float3 param0, int3 param1)
++{return (float3)(rootn(param0.s0, param1.s0), rootn(param0.s1, param1.s1),
++                 rootn(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 rootn (float4 param0, int4 param1)
++{return (float4)(rootn(param0.s0, param1.s0), rootn(param0.s1, param1.s1),
++                 rootn(param0.s2, param1.s2), rootn(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 rootn (float8 param0, int8 param1)
++{return (float8)(rootn(param0.s0, param1.s0), rootn(param0.s1, param1.s1),
++                 rootn(param0.s2, param1.s2), rootn(param0.s3, param1.s3),
++                 rootn(param0.s4, param1.s4), rootn(param0.s5, param1.s5),
++                 rootn(param0.s6, param1.s6), rootn(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 rootn (float16 param0, int16 param1)
++{return (float16)(rootn(param0.s0, param1.s0), rootn(param0.s1, param1.s1),
++                  rootn(param0.s2, param1.s2), rootn(param0.s3, param1.s3),
++                  rootn(param0.s4, param1.s4), rootn(param0.s5, param1.s5),
++                  rootn(param0.s6, param1.s6), rootn(param0.s7, param1.s7),
++                  rootn(param0.s8, param1.s8), rootn(param0.s9, param1.s9),
++                  rootn(param0.sa, param1.sa), rootn(param0.sb, param1.sb),
++                  rootn(param0.sc, param1.sc), rootn(param0.sd, param1.sd),
++                  rootn(param0.se, param1.se), rootn(param0.sf, param1.sf)); }
++
++
++//doublen rootn (doublen x, intn y)
++
++
++//doublen rootn (double x, int y)
++
++
++//gentype round (gentype x)
++
++INLINE_OVERLOADABLE float2 round (float2 param0)
++{return (float2)(round(param0.s0), round(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 round (float3 param0)
++{return (float3)(round(param0.s0), round(param0.s1),
++                 round(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 round (float4 param0)
++{return (float4)(round(param0.s0), round(param0.s1),
++                 round(param0.s2), round(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 round (float8 param0)
++{return (float8)(round(param0.s0), round(param0.s1),
++                 round(param0.s2), round(param0.s3),
++                 round(param0.s4), round(param0.s5),
++                 round(param0.s6), round(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 round (float16 param0)
++{return (float16)(round(param0.s0), round(param0.s1),
++                  round(param0.s2), round(param0.s3),
++                  round(param0.s4), round(param0.s5),
++                  round(param0.s6), round(param0.s7),
++                  round(param0.s8), round(param0.s9),
++                  round(param0.sa), round(param0.sb),
++                  round(param0.sc), round(param0.sd),
++                  round(param0.se), round(param0.sf)); }
++
++
++//gentype rsqrt (gentype)
++
++INLINE_OVERLOADABLE float2 rsqrt (float2 param0)
++{return (float2)(rsqrt(param0.s0), rsqrt(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 rsqrt (float3 param0)
++{return (float3)(rsqrt(param0.s0), rsqrt(param0.s1),
++                 rsqrt(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 rsqrt (float4 param0)
++{return (float4)(rsqrt(param0.s0), rsqrt(param0.s1),
++                 rsqrt(param0.s2), rsqrt(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 rsqrt (float8 param0)
++{return (float8)(rsqrt(param0.s0), rsqrt(param0.s1),
++                 rsqrt(param0.s2), rsqrt(param0.s3),
++                 rsqrt(param0.s4), rsqrt(param0.s5),
++                 rsqrt(param0.s6), rsqrt(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 rsqrt (float16 param0)
++{return (float16)(rsqrt(param0.s0), rsqrt(param0.s1),
++                  rsqrt(param0.s2), rsqrt(param0.s3),
++                  rsqrt(param0.s4), rsqrt(param0.s5),
++                  rsqrt(param0.s6), rsqrt(param0.s7),
++                  rsqrt(param0.s8), rsqrt(param0.s9),
++                  rsqrt(param0.sa), rsqrt(param0.sb),
++                  rsqrt(param0.sc), rsqrt(param0.sd),
++                  rsqrt(param0.se), rsqrt(param0.sf)); }
++
++
++//gentype sin (gentype)
++
++INLINE_OVERLOADABLE float2 sin (float2 param0)
++{return (float2)(sin(param0.s0), sin(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 sin (float3 param0)
++{return (float3)(sin(param0.s0), sin(param0.s1),
++                 sin(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 sin (float4 param0)
++{return (float4)(sin(param0.s0), sin(param0.s1),
++                 sin(param0.s2), sin(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 sin (float8 param0)
++{return (float8)(sin(param0.s0), sin(param0.s1),
++                 sin(param0.s2), sin(param0.s3),
++                 sin(param0.s4), sin(param0.s5),
++                 sin(param0.s6), sin(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 sin (float16 param0)
++{return (float16)(sin(param0.s0), sin(param0.s1),
++                  sin(param0.s2), sin(param0.s3),
++                  sin(param0.s4), sin(param0.s5),
++                  sin(param0.s6), sin(param0.s7),
++                  sin(param0.s8), sin(param0.s9),
++                  sin(param0.sa), sin(param0.sb),
++                  sin(param0.sc), sin(param0.sd),
++                  sin(param0.se), sin(param0.sf)); }
++
++
++//gentype sincos (gentype x, __global gentype *cosval)
++
++INLINE_OVERLOADABLE float2 sincos (float2 param0, __global float2 *param1)
++{return (float2)(sincos(param0.s0, (__global  float *)param1 +  0), sincos(param0.s1, (__global  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 sincos (float3 param0, __global float3 *param1)
++{return (float3)(sincos(param0.s0, (__global  float *)param1 +  0), sincos(param0.s1, (__global  float *)param1 +  1),
++                 sincos(param0.s2, (__global  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 sincos (float4 param0, __global float4 *param1)
++{return (float4)(sincos(param0.s0, (__global  float *)param1 +  0), sincos(param0.s1, (__global  float *)param1 +  1),
++                 sincos(param0.s2, (__global  float *)param1 +  2), sincos(param0.s3, (__global  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 sincos (float8 param0, __global float8 *param1)
++{return (float8)(sincos(param0.s0, (__global  float *)param1 +  0), sincos(param0.s1, (__global  float *)param1 +  1),
++                 sincos(param0.s2, (__global  float *)param1 +  2), sincos(param0.s3, (__global  float *)param1 +  3),
++                 sincos(param0.s4, (__global  float *)param1 +  4), sincos(param0.s5, (__global  float *)param1 +  5),
++                 sincos(param0.s6, (__global  float *)param1 +  6), sincos(param0.s7, (__global  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 sincos (float16 param0, __global float16 *param1)
++{return (float16)(sincos(param0.s0, (__global  float *)param1 +  0), sincos(param0.s1, (__global  float *)param1 +  1),
++                  sincos(param0.s2, (__global  float *)param1 +  2), sincos(param0.s3, (__global  float *)param1 +  3),
++                  sincos(param0.s4, (__global  float *)param1 +  4), sincos(param0.s5, (__global  float *)param1 +  5),
++                  sincos(param0.s6, (__global  float *)param1 +  6), sincos(param0.s7, (__global  float *)param1 +  7),
++                  sincos(param0.s8, (__global  float *)param1 +  8), sincos(param0.s9, (__global  float *)param1 +  9),
++                  sincos(param0.sa, (__global  float *)param1 + 10), sincos(param0.sb, (__global  float *)param1 + 11),
++                  sincos(param0.sc, (__global  float *)param1 + 12), sincos(param0.sd, (__global  float *)param1 + 13),
++                  sincos(param0.se, (__global  float *)param1 + 14), sincos(param0.sf, (__global  float *)param1 + 15)); }
++
++
++//gentype sincos (gentype x, __local gentype *cosval)
++
++INLINE_OVERLOADABLE float2 sincos (float2 param0, __local float2 *param1)
++{return (float2)(sincos(param0.s0, (__local  float *)param1 +  0), sincos(param0.s1, (__local  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 sincos (float3 param0, __local float3 *param1)
++{return (float3)(sincos(param0.s0, (__local  float *)param1 +  0), sincos(param0.s1, (__local  float *)param1 +  1),
++                 sincos(param0.s2, (__local  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 sincos (float4 param0, __local float4 *param1)
++{return (float4)(sincos(param0.s0, (__local  float *)param1 +  0), sincos(param0.s1, (__local  float *)param1 +  1),
++                 sincos(param0.s2, (__local  float *)param1 +  2), sincos(param0.s3, (__local  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 sincos (float8 param0, __local float8 *param1)
++{return (float8)(sincos(param0.s0, (__local  float *)param1 +  0), sincos(param0.s1, (__local  float *)param1 +  1),
++                 sincos(param0.s2, (__local  float *)param1 +  2), sincos(param0.s3, (__local  float *)param1 +  3),
++                 sincos(param0.s4, (__local  float *)param1 +  4), sincos(param0.s5, (__local  float *)param1 +  5),
++                 sincos(param0.s6, (__local  float *)param1 +  6), sincos(param0.s7, (__local  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 sincos (float16 param0, __local float16 *param1)
++{return (float16)(sincos(param0.s0, (__local  float *)param1 +  0), sincos(param0.s1, (__local  float *)param1 +  1),
++                  sincos(param0.s2, (__local  float *)param1 +  2), sincos(param0.s3, (__local  float *)param1 +  3),
++                  sincos(param0.s4, (__local  float *)param1 +  4), sincos(param0.s5, (__local  float *)param1 +  5),
++                  sincos(param0.s6, (__local  float *)param1 +  6), sincos(param0.s7, (__local  float *)param1 +  7),
++                  sincos(param0.s8, (__local  float *)param1 +  8), sincos(param0.s9, (__local  float *)param1 +  9),
++                  sincos(param0.sa, (__local  float *)param1 + 10), sincos(param0.sb, (__local  float *)param1 + 11),
++                  sincos(param0.sc, (__local  float *)param1 + 12), sincos(param0.sd, (__local  float *)param1 + 13),
++                  sincos(param0.se, (__local  float *)param1 + 14), sincos(param0.sf, (__local  float *)param1 + 15)); }
++
++
++//gentype sincos (gentype x, __private gentype *cosval)
++
++INLINE_OVERLOADABLE float2 sincos (float2 param0, __private float2 *param1)
++{return (float2)(sincos(param0.s0, (__private  float *)param1 +  0), sincos(param0.s1, (__private  float *)param1 +  1)); }
++
++INLINE_OVERLOADABLE float3 sincos (float3 param0, __private float3 *param1)
++{return (float3)(sincos(param0.s0, (__private  float *)param1 +  0), sincos(param0.s1, (__private  float *)param1 +  1),
++                 sincos(param0.s2, (__private  float *)param1 +  2)); }
++
++INLINE_OVERLOADABLE float4 sincos (float4 param0, __private float4 *param1)
++{return (float4)(sincos(param0.s0, (__private  float *)param1 +  0), sincos(param0.s1, (__private  float *)param1 +  1),
++                 sincos(param0.s2, (__private  float *)param1 +  2), sincos(param0.s3, (__private  float *)param1 +  3)); }
++
++INLINE_OVERLOADABLE float8 sincos (float8 param0, __private float8 *param1)
++{return (float8)(sincos(param0.s0, (__private  float *)param1 +  0), sincos(param0.s1, (__private  float *)param1 +  1),
++                 sincos(param0.s2, (__private  float *)param1 +  2), sincos(param0.s3, (__private  float *)param1 +  3),
++                 sincos(param0.s4, (__private  float *)param1 +  4), sincos(param0.s5, (__private  float *)param1 +  5),
++                 sincos(param0.s6, (__private  float *)param1 +  6), sincos(param0.s7, (__private  float *)param1 +  7)); }
++
++INLINE_OVERLOADABLE float16 sincos (float16 param0, __private float16 *param1)
++{return (float16)(sincos(param0.s0, (__private  float *)param1 +  0), sincos(param0.s1, (__private  float *)param1 +  1),
++                  sincos(param0.s2, (__private  float *)param1 +  2), sincos(param0.s3, (__private  float *)param1 +  3),
++                  sincos(param0.s4, (__private  float *)param1 +  4), sincos(param0.s5, (__private  float *)param1 +  5),
++                  sincos(param0.s6, (__private  float *)param1 +  6), sincos(param0.s7, (__private  float *)param1 +  7),
++                  sincos(param0.s8, (__private  float *)param1 +  8), sincos(param0.s9, (__private  float *)param1 +  9),
++                  sincos(param0.sa, (__private  float *)param1 + 10), sincos(param0.sb, (__private  float *)param1 + 11),
++                  sincos(param0.sc, (__private  float *)param1 + 12), sincos(param0.sd, (__private  float *)param1 + 13),
++                  sincos(param0.se, (__private  float *)param1 + 14), sincos(param0.sf, (__private  float *)param1 + 15)); }
++
++
++//gentype sinh (gentype)
++
++INLINE_OVERLOADABLE float2 sinh (float2 param0)
++{return (float2)(sinh(param0.s0), sinh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 sinh (float3 param0)
++{return (float3)(sinh(param0.s0), sinh(param0.s1),
++                 sinh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 sinh (float4 param0)
++{return (float4)(sinh(param0.s0), sinh(param0.s1),
++                 sinh(param0.s2), sinh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 sinh (float8 param0)
++{return (float8)(sinh(param0.s0), sinh(param0.s1),
++                 sinh(param0.s2), sinh(param0.s3),
++                 sinh(param0.s4), sinh(param0.s5),
++                 sinh(param0.s6), sinh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 sinh (float16 param0)
++{return (float16)(sinh(param0.s0), sinh(param0.s1),
++                  sinh(param0.s2), sinh(param0.s3),
++                  sinh(param0.s4), sinh(param0.s5),
++                  sinh(param0.s6), sinh(param0.s7),
++                  sinh(param0.s8), sinh(param0.s9),
++                  sinh(param0.sa), sinh(param0.sb),
++                  sinh(param0.sc), sinh(param0.sd),
++                  sinh(param0.se), sinh(param0.sf)); }
++
++
++//gentype sinpi (gentype x)
++
++INLINE_OVERLOADABLE float2 sinpi (float2 param0)
++{return (float2)(sinpi(param0.s0), sinpi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 sinpi (float3 param0)
++{return (float3)(sinpi(param0.s0), sinpi(param0.s1),
++                 sinpi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 sinpi (float4 param0)
++{return (float4)(sinpi(param0.s0), sinpi(param0.s1),
++                 sinpi(param0.s2), sinpi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 sinpi (float8 param0)
++{return (float8)(sinpi(param0.s0), sinpi(param0.s1),
++                 sinpi(param0.s2), sinpi(param0.s3),
++                 sinpi(param0.s4), sinpi(param0.s5),
++                 sinpi(param0.s6), sinpi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 sinpi (float16 param0)
++{return (float16)(sinpi(param0.s0), sinpi(param0.s1),
++                  sinpi(param0.s2), sinpi(param0.s3),
++                  sinpi(param0.s4), sinpi(param0.s5),
++                  sinpi(param0.s6), sinpi(param0.s7),
++                  sinpi(param0.s8), sinpi(param0.s9),
++                  sinpi(param0.sa), sinpi(param0.sb),
++                  sinpi(param0.sc), sinpi(param0.sd),
++                  sinpi(param0.se), sinpi(param0.sf)); }
++
++
++//gentype sqrt (gentype)
++
++INLINE_OVERLOADABLE float2 sqrt (float2 param0)
++{return (float2)(sqrt(param0.s0), sqrt(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 sqrt (float3 param0)
++{return (float3)(sqrt(param0.s0), sqrt(param0.s1),
++                 sqrt(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 sqrt (float4 param0)
++{return (float4)(sqrt(param0.s0), sqrt(param0.s1),
++                 sqrt(param0.s2), sqrt(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 sqrt (float8 param0)
++{return (float8)(sqrt(param0.s0), sqrt(param0.s1),
++                 sqrt(param0.s2), sqrt(param0.s3),
++                 sqrt(param0.s4), sqrt(param0.s5),
++                 sqrt(param0.s6), sqrt(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 sqrt (float16 param0)
++{return (float16)(sqrt(param0.s0), sqrt(param0.s1),
++                  sqrt(param0.s2), sqrt(param0.s3),
++                  sqrt(param0.s4), sqrt(param0.s5),
++                  sqrt(param0.s6), sqrt(param0.s7),
++                  sqrt(param0.s8), sqrt(param0.s9),
++                  sqrt(param0.sa), sqrt(param0.sb),
++                  sqrt(param0.sc), sqrt(param0.sd),
++                  sqrt(param0.se), sqrt(param0.sf)); }
++
++
++//gentype tan (gentype)
++
++INLINE_OVERLOADABLE float2 tan (float2 param0)
++{return (float2)(tan(param0.s0), tan(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 tan (float3 param0)
++{return (float3)(tan(param0.s0), tan(param0.s1),
++                 tan(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 tan (float4 param0)
++{return (float4)(tan(param0.s0), tan(param0.s1),
++                 tan(param0.s2), tan(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 tan (float8 param0)
++{return (float8)(tan(param0.s0), tan(param0.s1),
++                 tan(param0.s2), tan(param0.s3),
++                 tan(param0.s4), tan(param0.s5),
++                 tan(param0.s6), tan(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 tan (float16 param0)
++{return (float16)(tan(param0.s0), tan(param0.s1),
++                  tan(param0.s2), tan(param0.s3),
++                  tan(param0.s4), tan(param0.s5),
++                  tan(param0.s6), tan(param0.s7),
++                  tan(param0.s8), tan(param0.s9),
++                  tan(param0.sa), tan(param0.sb),
++                  tan(param0.sc), tan(param0.sd),
++                  tan(param0.se), tan(param0.sf)); }
++
++
++//gentype tanh (gentype)
++
++INLINE_OVERLOADABLE float2 tanh (float2 param0)
++{return (float2)(tanh(param0.s0), tanh(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 tanh (float3 param0)
++{return (float3)(tanh(param0.s0), tanh(param0.s1),
++                 tanh(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 tanh (float4 param0)
++{return (float4)(tanh(param0.s0), tanh(param0.s1),
++                 tanh(param0.s2), tanh(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 tanh (float8 param0)
++{return (float8)(tanh(param0.s0), tanh(param0.s1),
++                 tanh(param0.s2), tanh(param0.s3),
++                 tanh(param0.s4), tanh(param0.s5),
++                 tanh(param0.s6), tanh(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 tanh (float16 param0)
++{return (float16)(tanh(param0.s0), tanh(param0.s1),
++                  tanh(param0.s2), tanh(param0.s3),
++                  tanh(param0.s4), tanh(param0.s5),
++                  tanh(param0.s6), tanh(param0.s7),
++                  tanh(param0.s8), tanh(param0.s9),
++                  tanh(param0.sa), tanh(param0.sb),
++                  tanh(param0.sc), tanh(param0.sd),
++                  tanh(param0.se), tanh(param0.sf)); }
++
++
++//gentype tanpi (gentype x)
++
++INLINE_OVERLOADABLE float2 tanpi (float2 param0)
++{return (float2)(tanpi(param0.s0), tanpi(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 tanpi (float3 param0)
++{return (float3)(tanpi(param0.s0), tanpi(param0.s1),
++                 tanpi(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 tanpi (float4 param0)
++{return (float4)(tanpi(param0.s0), tanpi(param0.s1),
++                 tanpi(param0.s2), tanpi(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 tanpi (float8 param0)
++{return (float8)(tanpi(param0.s0), tanpi(param0.s1),
++                 tanpi(param0.s2), tanpi(param0.s3),
++                 tanpi(param0.s4), tanpi(param0.s5),
++                 tanpi(param0.s6), tanpi(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 tanpi (float16 param0)
++{return (float16)(tanpi(param0.s0), tanpi(param0.s1),
++                  tanpi(param0.s2), tanpi(param0.s3),
++                  tanpi(param0.s4), tanpi(param0.s5),
++                  tanpi(param0.s6), tanpi(param0.s7),
++                  tanpi(param0.s8), tanpi(param0.s9),
++                  tanpi(param0.sa), tanpi(param0.sb),
++                  tanpi(param0.sc), tanpi(param0.sd),
++                  tanpi(param0.se), tanpi(param0.sf)); }
++
++
++//gentype trunc (gentype)
++
++INLINE_OVERLOADABLE float2 trunc (float2 param0)
++{return (float2)(trunc(param0.s0), trunc(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 trunc (float3 param0)
++{return (float3)(trunc(param0.s0), trunc(param0.s1),
++                 trunc(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 trunc (float4 param0)
++{return (float4)(trunc(param0.s0), trunc(param0.s1),
++                 trunc(param0.s2), trunc(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 trunc (float8 param0)
++{return (float8)(trunc(param0.s0), trunc(param0.s1),
++                 trunc(param0.s2), trunc(param0.s3),
++                 trunc(param0.s4), trunc(param0.s5),
++                 trunc(param0.s6), trunc(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 trunc (float16 param0)
++{return (float16)(trunc(param0.s0), trunc(param0.s1),
++                  trunc(param0.s2), trunc(param0.s3),
++                  trunc(param0.s4), trunc(param0.s5),
++                  trunc(param0.s6), trunc(param0.s7),
++                  trunc(param0.s8), trunc(param0.s9),
++                  trunc(param0.sa), trunc(param0.sb),
++                  trunc(param0.sc), trunc(param0.sd),
++                  trunc(param0.se), trunc(param0.sf)); }
++
++
++//half_native_math builtin functions
++//gentype native_recip (gentype x)
++
++INLINE_OVERLOADABLE float2 native_recip (float2 param0)
++{return (float2)(native_recip(param0.s0), native_recip(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 native_recip (float3 param0)
++{return (float3)(native_recip(param0.s0), native_recip(param0.s1),
++                 native_recip(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 native_recip (float4 param0)
++{return (float4)(native_recip(param0.s0), native_recip(param0.s1),
++                 native_recip(param0.s2), native_recip(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 native_recip (float8 param0)
++{return (float8)(native_recip(param0.s0), native_recip(param0.s1),
++                 native_recip(param0.s2), native_recip(param0.s3),
++                 native_recip(param0.s4), native_recip(param0.s5),
++                 native_recip(param0.s6), native_recip(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 native_recip (float16 param0)
++{return (float16)(native_recip(param0.s0), native_recip(param0.s1),
++                  native_recip(param0.s2), native_recip(param0.s3),
++                  native_recip(param0.s4), native_recip(param0.s5),
++                  native_recip(param0.s6), native_recip(param0.s7),
++                  native_recip(param0.s8), native_recip(param0.s9),
++                  native_recip(param0.sa), native_recip(param0.sb),
++                  native_recip(param0.sc), native_recip(param0.sd),
++                  native_recip(param0.se), native_recip(param0.sf)); }
++
++
++//integer builtin functions
++//ugentype abs (gentype x)
++
++INLINE_OVERLOADABLE uchar2 abs (char2 param0)
++{return (uchar2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE uchar3 abs (char3 param0)
++{return (uchar3)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2)); }
++
++INLINE_OVERLOADABLE uchar4 abs (char4 param0)
++{return (uchar4)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE uchar8 abs (char8 param0)
++{return (uchar8)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3),
++                 abs(param0.s4), abs(param0.s5),
++                 abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE uchar16 abs (char16 param0)
++{return (uchar16)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3),
++                  abs(param0.s4), abs(param0.s5),
++                  abs(param0.s6), abs(param0.s7),
++                  abs(param0.s8), abs(param0.s9),
++                  abs(param0.sa), abs(param0.sb),
++                  abs(param0.sc), abs(param0.sd),
++                  abs(param0.se), abs(param0.sf)); }
++
++INLINE_OVERLOADABLE ushort2 abs (short2 param0)
++{return (ushort2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE ushort3 abs (short3 param0)
++{return (ushort3)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2)); }
++
++INLINE_OVERLOADABLE ushort4 abs (short4 param0)
++{return (ushort4)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE ushort8 abs (short8 param0)
++{return (ushort8)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3),
++                  abs(param0.s4), abs(param0.s5),
++                  abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE ushort16 abs (short16 param0)
++{return (ushort16)(abs(param0.s0), abs(param0.s1),
++                   abs(param0.s2), abs(param0.s3),
++                   abs(param0.s4), abs(param0.s5),
++                   abs(param0.s6), abs(param0.s7),
++                   abs(param0.s8), abs(param0.s9),
++                   abs(param0.sa), abs(param0.sb),
++                   abs(param0.sc), abs(param0.sd),
++                   abs(param0.se), abs(param0.sf)); }
++
++INLINE_OVERLOADABLE uint2 abs (int2 param0)
++{return (uint2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE uint3 abs (int3 param0)
++{return (uint3)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2)); }
++
++INLINE_OVERLOADABLE uint4 abs (int4 param0)
++{return (uint4)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE uint8 abs (int8 param0)
++{return (uint8)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2), abs(param0.s3),
++                abs(param0.s4), abs(param0.s5),
++                abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE uint16 abs (int16 param0)
++{return (uint16)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3),
++                 abs(param0.s4), abs(param0.s5),
++                 abs(param0.s6), abs(param0.s7),
++                 abs(param0.s8), abs(param0.s9),
++                 abs(param0.sa), abs(param0.sb),
++                 abs(param0.sc), abs(param0.sd),
++                 abs(param0.se), abs(param0.sf)); }
++
++INLINE_OVERLOADABLE uchar2 abs (uchar2 param0)
++{return (uchar2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE uchar3 abs (uchar3 param0)
++{return (uchar3)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2)); }
++
++INLINE_OVERLOADABLE uchar4 abs (uchar4 param0)
++{return (uchar4)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE uchar8 abs (uchar8 param0)
++{return (uchar8)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3),
++                 abs(param0.s4), abs(param0.s5),
++                 abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE uchar16 abs (uchar16 param0)
++{return (uchar16)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3),
++                  abs(param0.s4), abs(param0.s5),
++                  abs(param0.s6), abs(param0.s7),
++                  abs(param0.s8), abs(param0.s9),
++                  abs(param0.sa), abs(param0.sb),
++                  abs(param0.sc), abs(param0.sd),
++                  abs(param0.se), abs(param0.sf)); }
++
++INLINE_OVERLOADABLE ushort2 abs (ushort2 param0)
++{return (ushort2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE ushort3 abs (ushort3 param0)
++{return (ushort3)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2)); }
++
++INLINE_OVERLOADABLE ushort4 abs (ushort4 param0)
++{return (ushort4)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE ushort8 abs (ushort8 param0)
++{return (ushort8)(abs(param0.s0), abs(param0.s1),
++                  abs(param0.s2), abs(param0.s3),
++                  abs(param0.s4), abs(param0.s5),
++                  abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE ushort16 abs (ushort16 param0)
++{return (ushort16)(abs(param0.s0), abs(param0.s1),
++                   abs(param0.s2), abs(param0.s3),
++                   abs(param0.s4), abs(param0.s5),
++                   abs(param0.s6), abs(param0.s7),
++                   abs(param0.s8), abs(param0.s9),
++                   abs(param0.sa), abs(param0.sb),
++                   abs(param0.sc), abs(param0.sd),
++                   abs(param0.se), abs(param0.sf)); }
++
++INLINE_OVERLOADABLE uint2 abs (uint2 param0)
++{return (uint2)(abs(param0.s0), abs(param0.s1)); }
++
++INLINE_OVERLOADABLE uint3 abs (uint3 param0)
++{return (uint3)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2)); }
++
++INLINE_OVERLOADABLE uint4 abs (uint4 param0)
++{return (uint4)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2), abs(param0.s3)); }
++
++INLINE_OVERLOADABLE uint8 abs (uint8 param0)
++{return (uint8)(abs(param0.s0), abs(param0.s1),
++                abs(param0.s2), abs(param0.s3),
++                abs(param0.s4), abs(param0.s5),
++                abs(param0.s6), abs(param0.s7)); }
++
++INLINE_OVERLOADABLE uint16 abs (uint16 param0)
++{return (uint16)(abs(param0.s0), abs(param0.s1),
++                 abs(param0.s2), abs(param0.s3),
++                 abs(param0.s4), abs(param0.s5),
++                 abs(param0.s6), abs(param0.s7),
++                 abs(param0.s8), abs(param0.s9),
++                 abs(param0.sa), abs(param0.sb),
++                 abs(param0.sc), abs(param0.sd),
++                 abs(param0.se), abs(param0.sf)); }
++
++
++//ugentype abs_diff (gentype x, gentype y)
++
++INLINE_OVERLOADABLE uchar2 abs_diff (char2 param0, char2 param1)
++{return (uchar2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 abs_diff (char3 param0, char3 param1)
++{return (uchar3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 abs_diff (char4 param0, char4 param1)
++{return (uchar4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 abs_diff (char8 param0, char8 param1)
++{return (uchar8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                 abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                 abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 abs_diff (char16 param0, char16 param1)
++{return (uchar16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                  abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                  abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                  abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                  abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                  abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                  abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 abs_diff (short2 param0, short2 param1)
++{return (ushort2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 abs_diff (short3 param0, short3 param1)
++{return (ushort3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 abs_diff (short4 param0, short4 param1)
++{return (ushort4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 abs_diff (short8 param0, short8 param1)
++{return (ushort8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                  abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                  abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 abs_diff (short16 param0, short16 param1)
++{return (ushort16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                   abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                   abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                   abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                   abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                   abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                   abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                   abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 abs_diff (int2 param0, int2 param1)
++{return (uint2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 abs_diff (int3 param0, int3 param1)
++{return (uint3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 abs_diff (int4 param0, int4 param1)
++{return (uint4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 abs_diff (int8 param0, int8 param1)
++{return (uint8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 abs_diff (int16 param0, int16 param1)
++{return (uint16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                 abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                 abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                 abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                 abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                 abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                 abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 abs_diff (uchar2 param0, uchar2 param1)
++{return (uchar2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 abs_diff (uchar3 param0, uchar3 param1)
++{return (uchar3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 abs_diff (uchar4 param0, uchar4 param1)
++{return (uchar4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 abs_diff (uchar8 param0, uchar8 param1)
++{return (uchar8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                 abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                 abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 abs_diff (uchar16 param0, uchar16 param1)
++{return (uchar16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                  abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                  abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                  abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                  abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                  abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                  abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 abs_diff (ushort2 param0, ushort2 param1)
++{return (ushort2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 abs_diff (ushort3 param0, ushort3 param1)
++{return (ushort3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 abs_diff (ushort4 param0, ushort4 param1)
++{return (ushort4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 abs_diff (ushort8 param0, ushort8 param1)
++{return (ushort8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                  abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                  abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                  abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 abs_diff (ushort16 param0, ushort16 param1)
++{return (ushort16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                   abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                   abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                   abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                   abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                   abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                   abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                   abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 abs_diff (uint2 param0, uint2 param1)
++{return (uint2)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 abs_diff (uint3 param0, uint3 param1)
++{return (uint3)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 abs_diff (uint4 param0, uint4 param1)
++{return (uint4)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 abs_diff (uint8 param0, uint8 param1)
++{return (uint8)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 abs_diff (uint16 param0, uint16 param1)
++{return (uint16)(abs_diff(param0.s0, param1.s0), abs_diff(param0.s1, param1.s1),
++                 abs_diff(param0.s2, param1.s2), abs_diff(param0.s3, param1.s3),
++                 abs_diff(param0.s4, param1.s4), abs_diff(param0.s5, param1.s5),
++                 abs_diff(param0.s6, param1.s6), abs_diff(param0.s7, param1.s7),
++                 abs_diff(param0.s8, param1.s8), abs_diff(param0.s9, param1.s9),
++                 abs_diff(param0.sa, param1.sa), abs_diff(param0.sb, param1.sb),
++                 abs_diff(param0.sc, param1.sc), abs_diff(param0.sd, param1.sd),
++                 abs_diff(param0.se, param1.se), abs_diff(param0.sf, param1.sf)); }
++
++
++//gentype add_sat (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 add_sat (char2 param0, char2 param1)
++{return (char2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 add_sat (char3 param0, char3 param1)
++{return (char3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 add_sat (char4 param0, char4 param1)
++{return (char4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 add_sat (char8 param0, char8 param1)
++{return (char8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 add_sat (char16 param0, char16 param1)
++{return (char16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                 add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                 add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                 add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                 add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                 add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                 add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 add_sat (short2 param0, short2 param1)
++{return (short2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 add_sat (short3 param0, short3 param1)
++{return (short3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 add_sat (short4 param0, short4 param1)
++{return (short4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 add_sat (short8 param0, short8 param1)
++{return (short8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                 add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                 add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 add_sat (short16 param0, short16 param1)
++{return (short16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                  add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                  add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                  add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                  add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                  add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                  add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                  add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 add_sat (int2 param0, int2 param1)
++{return (int2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 add_sat (int3 param0, int3 param1)
++{return (int3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++               add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 add_sat (int4 param0, int4 param1)
++{return (int4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++               add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 add_sat (int8 param0, int8 param1)
++{return (int8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++               add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++               add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++               add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 add_sat (int16 param0, int16 param1)
++{return (int16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 add_sat (uchar2 param0, uchar2 param1)
++{return (uchar2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 add_sat (uchar3 param0, uchar3 param1)
++{return (uchar3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 add_sat (uchar4 param0, uchar4 param1)
++{return (uchar4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 add_sat (uchar8 param0, uchar8 param1)
++{return (uchar8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                 add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                 add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 add_sat (uchar16 param0, uchar16 param1)
++{return (uchar16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                  add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                  add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                  add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                  add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                  add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                  add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                  add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 add_sat (ushort2 param0, ushort2 param1)
++{return (ushort2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 add_sat (ushort3 param0, ushort3 param1)
++{return (ushort3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                  add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 add_sat (ushort4 param0, ushort4 param1)
++{return (ushort4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                  add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 add_sat (ushort8 param0, ushort8 param1)
++{return (ushort8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                  add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                  add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                  add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 add_sat (ushort16 param0, ushort16 param1)
++{return (ushort16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                   add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                   add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                   add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                   add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                   add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                   add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                   add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 add_sat (uint2 param0, uint2 param1)
++{return (uint2)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 add_sat (uint3 param0, uint3 param1)
++{return (uint3)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 add_sat (uint4 param0, uint4 param1)
++{return (uint4)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 add_sat (uint8 param0, uint8 param1)
++{return (uint8)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 add_sat (uint16 param0, uint16 param1)
++{return (uint16)(add_sat(param0.s0, param1.s0), add_sat(param0.s1, param1.s1),
++                 add_sat(param0.s2, param1.s2), add_sat(param0.s3, param1.s3),
++                 add_sat(param0.s4, param1.s4), add_sat(param0.s5, param1.s5),
++                 add_sat(param0.s6, param1.s6), add_sat(param0.s7, param1.s7),
++                 add_sat(param0.s8, param1.s8), add_sat(param0.s9, param1.s9),
++                 add_sat(param0.sa, param1.sa), add_sat(param0.sb, param1.sb),
++                 add_sat(param0.sc, param1.sc), add_sat(param0.sd, param1.sd),
++                 add_sat(param0.se, param1.se), add_sat(param0.sf, param1.sf)); }
++
++
++//gentype hadd (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 hadd (char2 param0, char2 param1)
++{return (char2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 hadd (char3 param0, char3 param1)
++{return (char3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 hadd (char4 param0, char4 param1)
++{return (char4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 hadd (char8 param0, char8 param1)
++{return (char8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 hadd (char16 param0, char16 param1)
++{return (char16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                 hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                 hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                 hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                 hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                 hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                 hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 hadd (short2 param0, short2 param1)
++{return (short2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 hadd (short3 param0, short3 param1)
++{return (short3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 hadd (short4 param0, short4 param1)
++{return (short4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 hadd (short8 param0, short8 param1)
++{return (short8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                 hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                 hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 hadd (short16 param0, short16 param1)
++{return (short16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                  hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                  hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                  hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                  hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                  hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                  hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                  hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 hadd (int2 param0, int2 param1)
++{return (int2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 hadd (int3 param0, int3 param1)
++{return (int3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++               hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 hadd (int4 param0, int4 param1)
++{return (int4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++               hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 hadd (int8 param0, int8 param1)
++{return (int8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++               hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++               hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++               hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 hadd (int16 param0, int16 param1)
++{return (int16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 hadd (uchar2 param0, uchar2 param1)
++{return (uchar2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 hadd (uchar3 param0, uchar3 param1)
++{return (uchar3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 hadd (uchar4 param0, uchar4 param1)
++{return (uchar4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 hadd (uchar8 param0, uchar8 param1)
++{return (uchar8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                 hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                 hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 hadd (uchar16 param0, uchar16 param1)
++{return (uchar16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                  hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                  hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                  hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                  hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                  hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                  hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                  hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 hadd (ushort2 param0, ushort2 param1)
++{return (ushort2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 hadd (ushort3 param0, ushort3 param1)
++{return (ushort3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                  hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 hadd (ushort4 param0, ushort4 param1)
++{return (ushort4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                  hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 hadd (ushort8 param0, ushort8 param1)
++{return (ushort8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                  hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                  hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                  hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 hadd (ushort16 param0, ushort16 param1)
++{return (ushort16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                   hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                   hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                   hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                   hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                   hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                   hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                   hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 hadd (uint2 param0, uint2 param1)
++{return (uint2)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 hadd (uint3 param0, uint3 param1)
++{return (uint3)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 hadd (uint4 param0, uint4 param1)
++{return (uint4)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 hadd (uint8 param0, uint8 param1)
++{return (uint8)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 hadd (uint16 param0, uint16 param1)
++{return (uint16)(hadd(param0.s0, param1.s0), hadd(param0.s1, param1.s1),
++                 hadd(param0.s2, param1.s2), hadd(param0.s3, param1.s3),
++                 hadd(param0.s4, param1.s4), hadd(param0.s5, param1.s5),
++                 hadd(param0.s6, param1.s6), hadd(param0.s7, param1.s7),
++                 hadd(param0.s8, param1.s8), hadd(param0.s9, param1.s9),
++                 hadd(param0.sa, param1.sa), hadd(param0.sb, param1.sb),
++                 hadd(param0.sc, param1.sc), hadd(param0.sd, param1.sd),
++                 hadd(param0.se, param1.se), hadd(param0.sf, param1.sf)); }
++
++
++//gentype rhadd (gentype x, gentype y)
++
++INLINE_OVERLOADABLE char2 rhadd (char2 param0, char2 param1)
++{return (char2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 rhadd (char3 param0, char3 param1)
++{return (char3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 rhadd (char4 param0, char4 param1)
++{return (char4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 rhadd (char8 param0, char8 param1)
++{return (char8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 rhadd (char16 param0, char16 param1)
++{return (char16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                 rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                 rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                 rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                 rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                 rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                 rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 rhadd (short2 param0, short2 param1)
++{return (short2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 rhadd (short3 param0, short3 param1)
++{return (short3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 rhadd (short4 param0, short4 param1)
++{return (short4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 rhadd (short8 param0, short8 param1)
++{return (short8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                 rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                 rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 rhadd (short16 param0, short16 param1)
++{return (short16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                  rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                  rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                  rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                  rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                  rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                  rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                  rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 rhadd (int2 param0, int2 param1)
++{return (int2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 rhadd (int3 param0, int3 param1)
++{return (int3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++               rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 rhadd (int4 param0, int4 param1)
++{return (int4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++               rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 rhadd (int8 param0, int8 param1)
++{return (int8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++               rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++               rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++               rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 rhadd (int16 param0, int16 param1)
++{return (int16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 rhadd (uchar2 param0, uchar2 param1)
++{return (uchar2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 rhadd (uchar3 param0, uchar3 param1)
++{return (uchar3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 rhadd (uchar4 param0, uchar4 param1)
++{return (uchar4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 rhadd (uchar8 param0, uchar8 param1)
++{return (uchar8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                 rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                 rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 rhadd (uchar16 param0, uchar16 param1)
++{return (uchar16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                  rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                  rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                  rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                  rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                  rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                  rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                  rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 rhadd (ushort2 param0, ushort2 param1)
++{return (ushort2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 rhadd (ushort3 param0, ushort3 param1)
++{return (ushort3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                  rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 rhadd (ushort4 param0, ushort4 param1)
++{return (ushort4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                  rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 rhadd (ushort8 param0, ushort8 param1)
++{return (ushort8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                  rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                  rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                  rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 rhadd (ushort16 param0, ushort16 param1)
++{return (ushort16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                   rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                   rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                   rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                   rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                   rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                   rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                   rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 rhadd (uint2 param0, uint2 param1)
++{return (uint2)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 rhadd (uint3 param0, uint3 param1)
++{return (uint3)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 rhadd (uint4 param0, uint4 param1)
++{return (uint4)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 rhadd (uint8 param0, uint8 param1)
++{return (uint8)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 rhadd (uint16 param0, uint16 param1)
++{return (uint16)(rhadd(param0.s0, param1.s0), rhadd(param0.s1, param1.s1),
++                 rhadd(param0.s2, param1.s2), rhadd(param0.s3, param1.s3),
++                 rhadd(param0.s4, param1.s4), rhadd(param0.s5, param1.s5),
++                 rhadd(param0.s6, param1.s6), rhadd(param0.s7, param1.s7),
++                 rhadd(param0.s8, param1.s8), rhadd(param0.s9, param1.s9),
++                 rhadd(param0.sa, param1.sa), rhadd(param0.sb, param1.sb),
++                 rhadd(param0.sc, param1.sc), rhadd(param0.sd, param1.sd),
++                 rhadd(param0.se, param1.se), rhadd(param0.sf, param1.sf)); }
++
++
++//gentype clamp (gentype x, gentype minval, gentype maxval)
++
++INLINE_OVERLOADABLE char2 clamp (char2 param0, char2 param1, char2 param2)
++{return (char2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE char3 clamp (char3 param0, char3 param1, char3 param2)
++{return (char3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE char4 clamp (char4 param0, char4 param1, char4 param2)
++{return (char4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE char8 clamp (char8 param0, char8 param1, char8 param2)
++{return (char8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE char16 clamp (char16 param0, char16 param1, char16 param2)
++{return (char16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                 clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                 clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                 clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                 clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                 clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                 clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE short2 clamp (short2 param0, short2 param1, short2 param2)
++{return (short2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE short3 clamp (short3 param0, short3 param1, short3 param2)
++{return (short3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE short4 clamp (short4 param0, short4 param1, short4 param2)
++{return (short4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE short8 clamp (short8 param0, short8 param1, short8 param2)
++{return (short8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                 clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                 clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE short16 clamp (short16 param0, short16 param1, short16 param2)
++{return (short16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                  clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                  clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                  clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                  clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                  clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                  clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE int2 clamp (int2 param0, int2 param1, int2 param2)
++{return (int2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE int3 clamp (int3 param0, int3 param1, int3 param2)
++{return (int3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++               clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE int4 clamp (int4 param0, int4 param1, int4 param2)
++{return (int4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++               clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE int8 clamp (int8 param0, int8 param1, int8 param2)
++{return (int8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++               clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++               clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++               clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE int16 clamp (int16 param0, int16 param1, int16 param2)
++{return (int16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uchar2 clamp (uchar2 param0, uchar2 param1, uchar2 param2)
++{return (uchar2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uchar3 clamp (uchar3 param0, uchar3 param1, uchar3 param2)
++{return (uchar3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uchar4 clamp (uchar4 param0, uchar4 param1, uchar4 param2)
++{return (uchar4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uchar8 clamp (uchar8 param0, uchar8 param1, uchar8 param2)
++{return (uchar8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                 clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                 clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uchar16 clamp (uchar16 param0, uchar16 param1, uchar16 param2)
++{return (uchar16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                  clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                  clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                  clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                  clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                  clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                  clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE ushort2 clamp (ushort2 param0, ushort2 param1, ushort2 param2)
++{return (ushort2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE ushort3 clamp (ushort3 param0, ushort3 param1, ushort3 param2)
++{return (ushort3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE ushort4 clamp (ushort4 param0, ushort4 param1, ushort4 param2)
++{return (ushort4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE ushort8 clamp (ushort8 param0, ushort8 param1, ushort8 param2)
++{return (ushort8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                  clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                  clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE ushort16 clamp (ushort16 param0, ushort16 param1, ushort16 param2)
++{return (ushort16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                   clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                   clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                   clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                   clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                   clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                   clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                   clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uint2 clamp (uint2 param0, uint2 param1, uint2 param2)
++{return (uint2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uint3 clamp (uint3 param0, uint3 param1, uint3 param2)
++{return (uint3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uint4 clamp (uint4 param0, uint4 param1, uint4 param2)
++{return (uint4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uint8 clamp (uint8 param0, uint8 param1, uint8 param2)
++{return (uint8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uint16 clamp (uint16 param0, uint16 param1, uint16 param2)
++{return (uint16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                 clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                 clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                 clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                 clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                 clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                 clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentype clamp (gentype x, sgentype minval, sgentype maxval)
++
++INLINE_OVERLOADABLE char2 clamp (char2 param0, char param1, char param2)
++{return (char2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE char3 clamp (char3 param0, char param1, char param2)
++{return (char3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE char4 clamp (char4 param0, char param1, char param2)
++{return (char4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE char8 clamp (char8 param0, char param1, char param2)
++{return (char8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE char16 clamp (char16 param0, char param1, char param2)
++{return (char16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                 clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                 clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                 clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                 clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                 clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                 clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++INLINE_OVERLOADABLE short2 clamp (short2 param0, short param1, short param2)
++{return (short2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE short3 clamp (short3 param0, short param1, short param2)
++{return (short3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE short4 clamp (short4 param0, short param1, short param2)
++{return (short4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE short8 clamp (short8 param0, short param1, short param2)
++{return (short8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                 clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                 clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE short16 clamp (short16 param0, short param1, short param2)
++{return (short16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                  clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                  clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                  clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                  clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                  clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                  clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++INLINE_OVERLOADABLE int2 clamp (int2 param0, int param1, int param2)
++{return (int2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE int3 clamp (int3 param0, int param1, int param2)
++{return (int3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++               clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE int4 clamp (int4 param0, int param1, int param2)
++{return (int4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++               clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE int8 clamp (int8 param0, int param1, int param2)
++{return (int8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++               clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++               clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++               clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE int16 clamp (int16 param0, int param1, int param2)
++{return (int16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++INLINE_OVERLOADABLE uchar2 clamp (uchar2 param0, uchar param1, uchar param2)
++{return (uchar2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE uchar3 clamp (uchar3 param0, uchar param1, uchar param2)
++{return (uchar3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE uchar4 clamp (uchar4 param0, uchar param1, uchar param2)
++{return (uchar4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE uchar8 clamp (uchar8 param0, uchar param1, uchar param2)
++{return (uchar8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                 clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                 clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE uchar16 clamp (uchar16 param0, uchar param1, uchar param2)
++{return (uchar16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                  clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                  clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                  clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                  clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                  clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                  clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++INLINE_OVERLOADABLE ushort2 clamp (ushort2 param0, ushort param1, ushort param2)
++{return (ushort2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE ushort3 clamp (ushort3 param0, ushort param1, ushort param2)
++{return (ushort3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE ushort4 clamp (ushort4 param0, ushort param1, ushort param2)
++{return (ushort4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE ushort8 clamp (ushort8 param0, ushort param1, ushort param2)
++{return (ushort8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                  clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                  clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE ushort16 clamp (ushort16 param0, ushort param1, ushort param2)
++{return (ushort16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                   clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                   clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                   clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                   clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                   clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                   clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                   clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++INLINE_OVERLOADABLE uint2 clamp (uint2 param0, uint param1, uint param2)
++{return (uint2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE uint3 clamp (uint3 param0, uint param1, uint param2)
++{return (uint3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE uint4 clamp (uint4 param0, uint param1, uint param2)
++{return (uint4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE uint8 clamp (uint8 param0, uint param1, uint param2)
++{return (uint8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE uint16 clamp (uint16 param0, uint param1, uint param2)
++{return (uint16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                 clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                 clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                 clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                 clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                 clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                 clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++
++//gentype clz (gentype x)
++
++INLINE_OVERLOADABLE char2 clz (char2 param0)
++{return (char2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE char3 clz (char3 param0)
++{return (char3)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2)); }
++
++INLINE_OVERLOADABLE char4 clz (char4 param0)
++{return (char4)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE char8 clz (char8 param0)
++{return (char8)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2), clz(param0.s3),
++                clz(param0.s4), clz(param0.s5),
++                clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE char16 clz (char16 param0)
++{return (char16)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3),
++                 clz(param0.s4), clz(param0.s5),
++                 clz(param0.s6), clz(param0.s7),
++                 clz(param0.s8), clz(param0.s9),
++                 clz(param0.sa), clz(param0.sb),
++                 clz(param0.sc), clz(param0.sd),
++                 clz(param0.se), clz(param0.sf)); }
++
++INLINE_OVERLOADABLE short2 clz (short2 param0)
++{return (short2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE short3 clz (short3 param0)
++{return (short3)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2)); }
++
++INLINE_OVERLOADABLE short4 clz (short4 param0)
++{return (short4)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE short8 clz (short8 param0)
++{return (short8)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3),
++                 clz(param0.s4), clz(param0.s5),
++                 clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE short16 clz (short16 param0)
++{return (short16)(clz(param0.s0), clz(param0.s1),
++                  clz(param0.s2), clz(param0.s3),
++                  clz(param0.s4), clz(param0.s5),
++                  clz(param0.s6), clz(param0.s7),
++                  clz(param0.s8), clz(param0.s9),
++                  clz(param0.sa), clz(param0.sb),
++                  clz(param0.sc), clz(param0.sd),
++                  clz(param0.se), clz(param0.sf)); }
++
++INLINE_OVERLOADABLE int2 clz (int2 param0)
++{return (int2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 clz (int3 param0)
++{return (int3)(clz(param0.s0), clz(param0.s1),
++               clz(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 clz (int4 param0)
++{return (int4)(clz(param0.s0), clz(param0.s1),
++               clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 clz (int8 param0)
++{return (int8)(clz(param0.s0), clz(param0.s1),
++               clz(param0.s2), clz(param0.s3),
++               clz(param0.s4), clz(param0.s5),
++               clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 clz (int16 param0)
++{return (int16)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2), clz(param0.s3),
++                clz(param0.s4), clz(param0.s5),
++                clz(param0.s6), clz(param0.s7),
++                clz(param0.s8), clz(param0.s9),
++                clz(param0.sa), clz(param0.sb),
++                clz(param0.sc), clz(param0.sd),
++                clz(param0.se), clz(param0.sf)); }
++
++INLINE_OVERLOADABLE uchar2 clz (uchar2 param0)
++{return (uchar2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE uchar3 clz (uchar3 param0)
++{return (uchar3)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2)); }
++
++INLINE_OVERLOADABLE uchar4 clz (uchar4 param0)
++{return (uchar4)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE uchar8 clz (uchar8 param0)
++{return (uchar8)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3),
++                 clz(param0.s4), clz(param0.s5),
++                 clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE uchar16 clz (uchar16 param0)
++{return (uchar16)(clz(param0.s0), clz(param0.s1),
++                  clz(param0.s2), clz(param0.s3),
++                  clz(param0.s4), clz(param0.s5),
++                  clz(param0.s6), clz(param0.s7),
++                  clz(param0.s8), clz(param0.s9),
++                  clz(param0.sa), clz(param0.sb),
++                  clz(param0.sc), clz(param0.sd),
++                  clz(param0.se), clz(param0.sf)); }
++
++INLINE_OVERLOADABLE ushort2 clz (ushort2 param0)
++{return (ushort2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE ushort3 clz (ushort3 param0)
++{return (ushort3)(clz(param0.s0), clz(param0.s1),
++                  clz(param0.s2)); }
++
++INLINE_OVERLOADABLE ushort4 clz (ushort4 param0)
++{return (ushort4)(clz(param0.s0), clz(param0.s1),
++                  clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE ushort8 clz (ushort8 param0)
++{return (ushort8)(clz(param0.s0), clz(param0.s1),
++                  clz(param0.s2), clz(param0.s3),
++                  clz(param0.s4), clz(param0.s5),
++                  clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE ushort16 clz (ushort16 param0)
++{return (ushort16)(clz(param0.s0), clz(param0.s1),
++                   clz(param0.s2), clz(param0.s3),
++                   clz(param0.s4), clz(param0.s5),
++                   clz(param0.s6), clz(param0.s7),
++                   clz(param0.s8), clz(param0.s9),
++                   clz(param0.sa), clz(param0.sb),
++                   clz(param0.sc), clz(param0.sd),
++                   clz(param0.se), clz(param0.sf)); }
++
++INLINE_OVERLOADABLE uint2 clz (uint2 param0)
++{return (uint2)(clz(param0.s0), clz(param0.s1)); }
++
++INLINE_OVERLOADABLE uint3 clz (uint3 param0)
++{return (uint3)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2)); }
++
++INLINE_OVERLOADABLE uint4 clz (uint4 param0)
++{return (uint4)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2), clz(param0.s3)); }
++
++INLINE_OVERLOADABLE uint8 clz (uint8 param0)
++{return (uint8)(clz(param0.s0), clz(param0.s1),
++                clz(param0.s2), clz(param0.s3),
++                clz(param0.s4), clz(param0.s5),
++                clz(param0.s6), clz(param0.s7)); }
++
++INLINE_OVERLOADABLE uint16 clz (uint16 param0)
++{return (uint16)(clz(param0.s0), clz(param0.s1),
++                 clz(param0.s2), clz(param0.s3),
++                 clz(param0.s4), clz(param0.s5),
++                 clz(param0.s6), clz(param0.s7),
++                 clz(param0.s8), clz(param0.s9),
++                 clz(param0.sa), clz(param0.sb),
++                 clz(param0.sc), clz(param0.sd),
++                 clz(param0.se), clz(param0.sf)); }
++
++
++//gentype mad_hi (gentype a, gentype b, gentype c)
++
++INLINE_OVERLOADABLE char2 mad_hi (char2 param0, char2 param1, char2 param2)
++{return (char2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE char3 mad_hi (char3 param0, char3 param1, char3 param2)
++{return (char3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE char4 mad_hi (char4 param0, char4 param1, char4 param2)
++{return (char4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE char8 mad_hi (char8 param0, char8 param1, char8 param2)
++{return (char8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE char16 mad_hi (char16 param0, char16 param1, char16 param2)
++{return (char16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                 mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                 mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                 mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                 mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                 mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                 mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE short2 mad_hi (short2 param0, short2 param1, short2 param2)
++{return (short2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE short3 mad_hi (short3 param0, short3 param1, short3 param2)
++{return (short3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE short4 mad_hi (short4 param0, short4 param1, short4 param2)
++{return (short4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE short8 mad_hi (short8 param0, short8 param1, short8 param2)
++{return (short8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                 mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                 mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE short16 mad_hi (short16 param0, short16 param1, short16 param2)
++{return (short16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                  mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                  mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                  mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                  mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                  mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                  mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                  mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE int2 mad_hi (int2 param0, int2 param1, int2 param2)
++{return (int2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE int3 mad_hi (int3 param0, int3 param1, int3 param2)
++{return (int3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++               mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE int4 mad_hi (int4 param0, int4 param1, int4 param2)
++{return (int4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++               mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE int8 mad_hi (int8 param0, int8 param1, int8 param2)
++{return (int8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++               mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++               mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++               mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE int16 mad_hi (int16 param0, int16 param1, int16 param2)
++{return (int16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uchar2 mad_hi (uchar2 param0, uchar2 param1, uchar2 param2)
++{return (uchar2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uchar3 mad_hi (uchar3 param0, uchar3 param1, uchar3 param2)
++{return (uchar3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uchar4 mad_hi (uchar4 param0, uchar4 param1, uchar4 param2)
++{return (uchar4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uchar8 mad_hi (uchar8 param0, uchar8 param1, uchar8 param2)
++{return (uchar8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                 mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                 mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uchar16 mad_hi (uchar16 param0, uchar16 param1, uchar16 param2)
++{return (uchar16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                  mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                  mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                  mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                  mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                  mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                  mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                  mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE ushort2 mad_hi (ushort2 param0, ushort2 param1, ushort2 param2)
++{return (ushort2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE ushort3 mad_hi (ushort3 param0, ushort3 param1, ushort3 param2)
++{return (ushort3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                  mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE ushort4 mad_hi (ushort4 param0, ushort4 param1, ushort4 param2)
++{return (ushort4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                  mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE ushort8 mad_hi (ushort8 param0, ushort8 param1, ushort8 param2)
++{return (ushort8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                  mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                  mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                  mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE ushort16 mad_hi (ushort16 param0, ushort16 param1, ushort16 param2)
++{return (ushort16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                   mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                   mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                   mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                   mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                   mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                   mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                   mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uint2 mad_hi (uint2 param0, uint2 param1, uint2 param2)
++{return (uint2)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uint3 mad_hi (uint3 param0, uint3 param1, uint3 param2)
++{return (uint3)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uint4 mad_hi (uint4 param0, uint4 param1, uint4 param2)
++{return (uint4)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uint8 mad_hi (uint8 param0, uint8 param1, uint8 param2)
++{return (uint8)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uint16 mad_hi (uint16 param0, uint16 param1, uint16 param2)
++{return (uint16)(mad_hi(param0.s0, param1.s0, param2.s0), mad_hi(param0.s1, param1.s1, param2.s1),
++                 mad_hi(param0.s2, param1.s2, param2.s2), mad_hi(param0.s3, param1.s3, param2.s3),
++                 mad_hi(param0.s4, param1.s4, param2.s4), mad_hi(param0.s5, param1.s5, param2.s5),
++                 mad_hi(param0.s6, param1.s6, param2.s6), mad_hi(param0.s7, param1.s7, param2.s7),
++                 mad_hi(param0.s8, param1.s8, param2.s8), mad_hi(param0.s9, param1.s9, param2.s9),
++                 mad_hi(param0.sa, param1.sa, param2.sa), mad_hi(param0.sb, param1.sb, param2.sb),
++                 mad_hi(param0.sc, param1.sc, param2.sc), mad_hi(param0.sd, param1.sd, param2.sd),
++                 mad_hi(param0.se, param1.se, param2.se), mad_hi(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentype mad_sat (gentype a, gentype b, gentype c)
++
++INLINE_OVERLOADABLE char2 mad_sat (char2 param0, char2 param1, char2 param2)
++{return (char2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE char3 mad_sat (char3 param0, char3 param1, char3 param2)
++{return (char3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE char4 mad_sat (char4 param0, char4 param1, char4 param2)
++{return (char4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE char8 mad_sat (char8 param0, char8 param1, char8 param2)
++{return (char8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE char16 mad_sat (char16 param0, char16 param1, char16 param2)
++{return (char16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                 mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                 mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                 mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                 mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                 mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                 mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE short2 mad_sat (short2 param0, short2 param1, short2 param2)
++{return (short2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE short3 mad_sat (short3 param0, short3 param1, short3 param2)
++{return (short3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE short4 mad_sat (short4 param0, short4 param1, short4 param2)
++{return (short4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE short8 mad_sat (short8 param0, short8 param1, short8 param2)
++{return (short8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                 mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                 mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE short16 mad_sat (short16 param0, short16 param1, short16 param2)
++{return (short16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                  mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                  mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                  mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                  mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                  mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                  mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                  mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE int2 mad_sat (int2 param0, int2 param1, int2 param2)
++{return (int2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE int3 mad_sat (int3 param0, int3 param1, int3 param2)
++{return (int3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++               mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE int4 mad_sat (int4 param0, int4 param1, int4 param2)
++{return (int4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++               mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE int8 mad_sat (int8 param0, int8 param1, int8 param2)
++{return (int8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++               mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++               mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++               mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE int16 mad_sat (int16 param0, int16 param1, int16 param2)
++{return (int16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uchar2 mad_sat (uchar2 param0, uchar2 param1, uchar2 param2)
++{return (uchar2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uchar3 mad_sat (uchar3 param0, uchar3 param1, uchar3 param2)
++{return (uchar3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uchar4 mad_sat (uchar4 param0, uchar4 param1, uchar4 param2)
++{return (uchar4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uchar8 mad_sat (uchar8 param0, uchar8 param1, uchar8 param2)
++{return (uchar8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                 mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                 mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uchar16 mad_sat (uchar16 param0, uchar16 param1, uchar16 param2)
++{return (uchar16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                  mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                  mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                  mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                  mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                  mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                  mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                  mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE ushort2 mad_sat (ushort2 param0, ushort2 param1, ushort2 param2)
++{return (ushort2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE ushort3 mad_sat (ushort3 param0, ushort3 param1, ushort3 param2)
++{return (ushort3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                  mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE ushort4 mad_sat (ushort4 param0, ushort4 param1, ushort4 param2)
++{return (ushort4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                  mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE ushort8 mad_sat (ushort8 param0, ushort8 param1, ushort8 param2)
++{return (ushort8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                  mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                  mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                  mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE ushort16 mad_sat (ushort16 param0, ushort16 param1, ushort16 param2)
++{return (ushort16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                   mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                   mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                   mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                   mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                   mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                   mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                   mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE uint2 mad_sat (uint2 param0, uint2 param1, uint2 param2)
++{return (uint2)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uint3 mad_sat (uint3 param0, uint3 param1, uint3 param2)
++{return (uint3)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uint4 mad_sat (uint4 param0, uint4 param1, uint4 param2)
++{return (uint4)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uint8 mad_sat (uint8 param0, uint8 param1, uint8 param2)
++{return (uint8)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uint16 mad_sat (uint16 param0, uint16 param1, uint16 param2)
++{return (uint16)(mad_sat(param0.s0, param1.s0, param2.s0), mad_sat(param0.s1, param1.s1, param2.s1),
++                 mad_sat(param0.s2, param1.s2, param2.s2), mad_sat(param0.s3, param1.s3, param2.s3),
++                 mad_sat(param0.s4, param1.s4, param2.s4), mad_sat(param0.s5, param1.s5, param2.s5),
++                 mad_sat(param0.s6, param1.s6, param2.s6), mad_sat(param0.s7, param1.s7, param2.s7),
++                 mad_sat(param0.s8, param1.s8, param2.s8), mad_sat(param0.s9, param1.s9, param2.s9),
++                 mad_sat(param0.sa, param1.sa, param2.sa), mad_sat(param0.sb, param1.sb, param2.sb),
++                 mad_sat(param0.sc, param1.sc, param2.sc), mad_sat(param0.sd, param1.sd, param2.sd),
++                 mad_sat(param0.se, param1.se, param2.se), mad_sat(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentype max (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 max (char2 param0, char2 param1)
++{return (char2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 max (char3 param0, char3 param1)
++{return (char3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 max (char4 param0, char4 param1)
++{return (char4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 max (char8 param0, char8 param1)
++{return (char8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 max (char16 param0, char16 param1)
++{return (char16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                 max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                 max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                 max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                 max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                 max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                 max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 max (short2 param0, short2 param1)
++{return (short2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 max (short3 param0, short3 param1)
++{return (short3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 max (short4 param0, short4 param1)
++{return (short4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 max (short8 param0, short8 param1)
++{return (short8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                 max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                 max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 max (short16 param0, short16 param1)
++{return (short16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                  max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                  max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                  max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                  max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                  max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                  max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 max (int2 param0, int2 param1)
++{return (int2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 max (int3 param0, int3 param1)
++{return (int3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++               max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 max (int4 param0, int4 param1)
++{return (int4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++               max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 max (int8 param0, int8 param1)
++{return (int8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++               max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++               max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++               max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 max (int16 param0, int16 param1)
++{return (int16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 max (uchar2 param0, uchar2 param1)
++{return (uchar2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 max (uchar3 param0, uchar3 param1)
++{return (uchar3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 max (uchar4 param0, uchar4 param1)
++{return (uchar4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 max (uchar8 param0, uchar8 param1)
++{return (uchar8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                 max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                 max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 max (uchar16 param0, uchar16 param1)
++{return (uchar16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                  max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                  max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                  max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                  max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                  max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                  max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 max (ushort2 param0, ushort2 param1)
++{return (ushort2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 max (ushort3 param0, ushort3 param1)
++{return (ushort3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 max (ushort4 param0, ushort4 param1)
++{return (ushort4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 max (ushort8 param0, ushort8 param1)
++{return (ushort8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                  max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                  max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 max (ushort16 param0, ushort16 param1)
++{return (ushort16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                   max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                   max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                   max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                   max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                   max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                   max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                   max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 max (uint2 param0, uint2 param1)
++{return (uint2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 max (uint3 param0, uint3 param1)
++{return (uint3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 max (uint4 param0, uint4 param1)
++{return (uint4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 max (uint8 param0, uint8 param1)
++{return (uint8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 max (uint16 param0, uint16 param1)
++{return (uint16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                 max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                 max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                 max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                 max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                 max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                 max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++
++//gentype max (gentype x,  sgentype y)
++
++INLINE_OVERLOADABLE char2 max (char2 param0, char param1)
++{return (char2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE char3 max (char3 param0, char param1)
++{return (char3)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE char4 max (char4 param0, char param1)
++{return (char4)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE char8 max (char8 param0, char param1)
++{return (char8)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1), max(param0.s3, param1),
++                max(param0.s4, param1), max(param0.s5, param1),
++                max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE char16 max (char16 param0, char param1)
++{return (char16)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1),
++                 max(param0.s4, param1), max(param0.s5, param1),
++                 max(param0.s6, param1), max(param0.s7, param1),
++                 max(param0.s8, param1), max(param0.s9, param1),
++                 max(param0.sa, param1), max(param0.sb, param1),
++                 max(param0.sc, param1), max(param0.sd, param1),
++                 max(param0.se, param1), max(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE short2 max (short2 param0, short param1)
++{return (short2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE short3 max (short3 param0, short param1)
++{return (short3)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE short4 max (short4 param0, short param1)
++{return (short4)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE short8 max (short8 param0, short param1)
++{return (short8)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1),
++                 max(param0.s4, param1), max(param0.s5, param1),
++                 max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE short16 max (short16 param0, short param1)
++{return (short16)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1), max(param0.s3, param1),
++                  max(param0.s4, param1), max(param0.s5, param1),
++                  max(param0.s6, param1), max(param0.s7, param1),
++                  max(param0.s8, param1), max(param0.s9, param1),
++                  max(param0.sa, param1), max(param0.sb, param1),
++                  max(param0.sc, param1), max(param0.sd, param1),
++                  max(param0.se, param1), max(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE int2 max (int2 param0, int param1)
++{return (int2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE int3 max (int3 param0, int param1)
++{return (int3)(max(param0.s0, param1), max(param0.s1, param1),
++               max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE int4 max (int4 param0, int param1)
++{return (int4)(max(param0.s0, param1), max(param0.s1, param1),
++               max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE int8 max (int8 param0, int param1)
++{return (int8)(max(param0.s0, param1), max(param0.s1, param1),
++               max(param0.s2, param1), max(param0.s3, param1),
++               max(param0.s4, param1), max(param0.s5, param1),
++               max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE int16 max (int16 param0, int param1)
++{return (int16)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1), max(param0.s3, param1),
++                max(param0.s4, param1), max(param0.s5, param1),
++                max(param0.s6, param1), max(param0.s7, param1),
++                max(param0.s8, param1), max(param0.s9, param1),
++                max(param0.sa, param1), max(param0.sb, param1),
++                max(param0.sc, param1), max(param0.sd, param1),
++                max(param0.se, param1), max(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE uchar2 max (uchar2 param0, uchar param1)
++{return (uchar2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE uchar3 max (uchar3 param0, uchar param1)
++{return (uchar3)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE uchar4 max (uchar4 param0, uchar param1)
++{return (uchar4)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE uchar8 max (uchar8 param0, uchar param1)
++{return (uchar8)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1),
++                 max(param0.s4, param1), max(param0.s5, param1),
++                 max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE uchar16 max (uchar16 param0, uchar param1)
++{return (uchar16)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1), max(param0.s3, param1),
++                  max(param0.s4, param1), max(param0.s5, param1),
++                  max(param0.s6, param1), max(param0.s7, param1),
++                  max(param0.s8, param1), max(param0.s9, param1),
++                  max(param0.sa, param1), max(param0.sb, param1),
++                  max(param0.sc, param1), max(param0.sd, param1),
++                  max(param0.se, param1), max(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE ushort2 max (ushort2 param0, ushort param1)
++{return (ushort2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE ushort3 max (ushort3 param0, ushort param1)
++{return (ushort3)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE ushort4 max (ushort4 param0, ushort param1)
++{return (ushort4)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE ushort8 max (ushort8 param0, ushort param1)
++{return (ushort8)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1), max(param0.s3, param1),
++                  max(param0.s4, param1), max(param0.s5, param1),
++                  max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE ushort16 max (ushort16 param0, ushort param1)
++{return (ushort16)(max(param0.s0, param1), max(param0.s1, param1),
++                   max(param0.s2, param1), max(param0.s3, param1),
++                   max(param0.s4, param1), max(param0.s5, param1),
++                   max(param0.s6, param1), max(param0.s7, param1),
++                   max(param0.s8, param1), max(param0.s9, param1),
++                   max(param0.sa, param1), max(param0.sb, param1),
++                   max(param0.sc, param1), max(param0.sd, param1),
++                   max(param0.se, param1), max(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE uint2 max (uint2 param0, uint param1)
++{return (uint2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE uint3 max (uint3 param0, uint param1)
++{return (uint3)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE uint4 max (uint4 param0, uint param1)
++{return (uint4)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE uint8 max (uint8 param0, uint param1)
++{return (uint8)(max(param0.s0, param1), max(param0.s1, param1),
++                max(param0.s2, param1), max(param0.s3, param1),
++                max(param0.s4, param1), max(param0.s5, param1),
++                max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE uint16 max (uint16 param0, uint param1)
++{return (uint16)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1),
++                 max(param0.s4, param1), max(param0.s5, param1),
++                 max(param0.s6, param1), max(param0.s7, param1),
++                 max(param0.s8, param1), max(param0.s9, param1),
++                 max(param0.sa, param1), max(param0.sb, param1),
++                 max(param0.sc, param1), max(param0.sd, param1),
++                 max(param0.se, param1), max(param0.sf, param1)); }
++
++
++//gentype min (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 min (char2 param0, char2 param1)
++{return (char2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 min (char3 param0, char3 param1)
++{return (char3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 min (char4 param0, char4 param1)
++{return (char4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 min (char8 param0, char8 param1)
++{return (char8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 min (char16 param0, char16 param1)
++{return (char16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                 min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                 min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                 min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                 min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                 min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                 min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 min (short2 param0, short2 param1)
++{return (short2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 min (short3 param0, short3 param1)
++{return (short3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 min (short4 param0, short4 param1)
++{return (short4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 min (short8 param0, short8 param1)
++{return (short8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                 min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                 min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 min (short16 param0, short16 param1)
++{return (short16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                  min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                  min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                  min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                  min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                  min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                  min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 min (int2 param0, int2 param1)
++{return (int2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 min (int3 param0, int3 param1)
++{return (int3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++               min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 min (int4 param0, int4 param1)
++{return (int4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++               min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 min (int8 param0, int8 param1)
++{return (int8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++               min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++               min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++               min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 min (int16 param0, int16 param1)
++{return (int16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 min (uchar2 param0, uchar2 param1)
++{return (uchar2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 min (uchar3 param0, uchar3 param1)
++{return (uchar3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 min (uchar4 param0, uchar4 param1)
++{return (uchar4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 min (uchar8 param0, uchar8 param1)
++{return (uchar8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                 min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                 min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 min (uchar16 param0, uchar16 param1)
++{return (uchar16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                  min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                  min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                  min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                  min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                  min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                  min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 min (ushort2 param0, ushort2 param1)
++{return (ushort2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 min (ushort3 param0, ushort3 param1)
++{return (ushort3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 min (ushort4 param0, ushort4 param1)
++{return (ushort4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 min (ushort8 param0, ushort8 param1)
++{return (ushort8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                  min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                  min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 min (ushort16 param0, ushort16 param1)
++{return (ushort16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                   min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                   min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                   min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                   min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                   min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                   min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                   min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 min (uint2 param0, uint2 param1)
++{return (uint2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 min (uint3 param0, uint3 param1)
++{return (uint3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 min (uint4 param0, uint4 param1)
++{return (uint4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 min (uint8 param0, uint8 param1)
++{return (uint8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 min (uint16 param0, uint16 param1)
++{return (uint16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                 min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                 min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                 min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                 min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                 min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                 min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++
++//gentype min (gentype x,  sgentype y)
++
++INLINE_OVERLOADABLE char2 min (char2 param0, char param1)
++{return (char2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE char3 min (char3 param0, char param1)
++{return (char3)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE char4 min (char4 param0, char param1)
++{return (char4)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE char8 min (char8 param0, char param1)
++{return (char8)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1), min(param0.s3, param1),
++                min(param0.s4, param1), min(param0.s5, param1),
++                min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE char16 min (char16 param0, char param1)
++{return (char16)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1),
++                 min(param0.s4, param1), min(param0.s5, param1),
++                 min(param0.s6, param1), min(param0.s7, param1),
++                 min(param0.s8, param1), min(param0.s9, param1),
++                 min(param0.sa, param1), min(param0.sb, param1),
++                 min(param0.sc, param1), min(param0.sd, param1),
++                 min(param0.se, param1), min(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE short2 min (short2 param0, short param1)
++{return (short2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE short3 min (short3 param0, short param1)
++{return (short3)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE short4 min (short4 param0, short param1)
++{return (short4)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE short8 min (short8 param0, short param1)
++{return (short8)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1),
++                 min(param0.s4, param1), min(param0.s5, param1),
++                 min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE short16 min (short16 param0, short param1)
++{return (short16)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1), min(param0.s3, param1),
++                  min(param0.s4, param1), min(param0.s5, param1),
++                  min(param0.s6, param1), min(param0.s7, param1),
++                  min(param0.s8, param1), min(param0.s9, param1),
++                  min(param0.sa, param1), min(param0.sb, param1),
++                  min(param0.sc, param1), min(param0.sd, param1),
++                  min(param0.se, param1), min(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE int2 min (int2 param0, int param1)
++{return (int2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE int3 min (int3 param0, int param1)
++{return (int3)(min(param0.s0, param1), min(param0.s1, param1),
++               min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE int4 min (int4 param0, int param1)
++{return (int4)(min(param0.s0, param1), min(param0.s1, param1),
++               min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE int8 min (int8 param0, int param1)
++{return (int8)(min(param0.s0, param1), min(param0.s1, param1),
++               min(param0.s2, param1), min(param0.s3, param1),
++               min(param0.s4, param1), min(param0.s5, param1),
++               min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE int16 min (int16 param0, int param1)
++{return (int16)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1), min(param0.s3, param1),
++                min(param0.s4, param1), min(param0.s5, param1),
++                min(param0.s6, param1), min(param0.s7, param1),
++                min(param0.s8, param1), min(param0.s9, param1),
++                min(param0.sa, param1), min(param0.sb, param1),
++                min(param0.sc, param1), min(param0.sd, param1),
++                min(param0.se, param1), min(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE uchar2 min (uchar2 param0, uchar param1)
++{return (uchar2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE uchar3 min (uchar3 param0, uchar param1)
++{return (uchar3)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE uchar4 min (uchar4 param0, uchar param1)
++{return (uchar4)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE uchar8 min (uchar8 param0, uchar param1)
++{return (uchar8)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1),
++                 min(param0.s4, param1), min(param0.s5, param1),
++                 min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE uchar16 min (uchar16 param0, uchar param1)
++{return (uchar16)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1), min(param0.s3, param1),
++                  min(param0.s4, param1), min(param0.s5, param1),
++                  min(param0.s6, param1), min(param0.s7, param1),
++                  min(param0.s8, param1), min(param0.s9, param1),
++                  min(param0.sa, param1), min(param0.sb, param1),
++                  min(param0.sc, param1), min(param0.sd, param1),
++                  min(param0.se, param1), min(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE ushort2 min (ushort2 param0, ushort param1)
++{return (ushort2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE ushort3 min (ushort3 param0, ushort param1)
++{return (ushort3)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE ushort4 min (ushort4 param0, ushort param1)
++{return (ushort4)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE ushort8 min (ushort8 param0, ushort param1)
++{return (ushort8)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1), min(param0.s3, param1),
++                  min(param0.s4, param1), min(param0.s5, param1),
++                  min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE ushort16 min (ushort16 param0, ushort param1)
++{return (ushort16)(min(param0.s0, param1), min(param0.s1, param1),
++                   min(param0.s2, param1), min(param0.s3, param1),
++                   min(param0.s4, param1), min(param0.s5, param1),
++                   min(param0.s6, param1), min(param0.s7, param1),
++                   min(param0.s8, param1), min(param0.s9, param1),
++                   min(param0.sa, param1), min(param0.sb, param1),
++                   min(param0.sc, param1), min(param0.sd, param1),
++                   min(param0.se, param1), min(param0.sf, param1)); }
++
++INLINE_OVERLOADABLE uint2 min (uint2 param0, uint param1)
++{return (uint2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE uint3 min (uint3 param0, uint param1)
++{return (uint3)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE uint4 min (uint4 param0, uint param1)
++{return (uint4)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE uint8 min (uint8 param0, uint param1)
++{return (uint8)(min(param0.s0, param1), min(param0.s1, param1),
++                min(param0.s2, param1), min(param0.s3, param1),
++                min(param0.s4, param1), min(param0.s5, param1),
++                min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE uint16 min (uint16 param0, uint param1)
++{return (uint16)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1),
++                 min(param0.s4, param1), min(param0.s5, param1),
++                 min(param0.s6, param1), min(param0.s7, param1),
++                 min(param0.s8, param1), min(param0.s9, param1),
++                 min(param0.sa, param1), min(param0.sb, param1),
++                 min(param0.sc, param1), min(param0.sd, param1),
++                 min(param0.se, param1), min(param0.sf, param1)); }
++
++
++//gentype mul_hi (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 mul_hi (char2 param0, char2 param1)
++{return (char2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 mul_hi (char3 param0, char3 param1)
++{return (char3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 mul_hi (char4 param0, char4 param1)
++{return (char4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 mul_hi (char8 param0, char8 param1)
++{return (char8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 mul_hi (char16 param0, char16 param1)
++{return (char16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                 mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                 mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                 mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                 mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                 mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                 mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 mul_hi (short2 param0, short2 param1)
++{return (short2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 mul_hi (short3 param0, short3 param1)
++{return (short3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 mul_hi (short4 param0, short4 param1)
++{return (short4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 mul_hi (short8 param0, short8 param1)
++{return (short8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                 mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                 mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 mul_hi (short16 param0, short16 param1)
++{return (short16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                  mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                  mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                  mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                  mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                  mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                  mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                  mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 mul_hi (int2 param0, int2 param1)
++{return (int2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 mul_hi (int3 param0, int3 param1)
++{return (int3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++               mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 mul_hi (int4 param0, int4 param1)
++{return (int4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++               mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 mul_hi (int8 param0, int8 param1)
++{return (int8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++               mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++               mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++               mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 mul_hi (int16 param0, int16 param1)
++{return (int16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 mul_hi (uchar2 param0, uchar2 param1)
++{return (uchar2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 mul_hi (uchar3 param0, uchar3 param1)
++{return (uchar3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 mul_hi (uchar4 param0, uchar4 param1)
++{return (uchar4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 mul_hi (uchar8 param0, uchar8 param1)
++{return (uchar8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                 mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                 mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 mul_hi (uchar16 param0, uchar16 param1)
++{return (uchar16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                  mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                  mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                  mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                  mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                  mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                  mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                  mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 mul_hi (ushort2 param0, ushort2 param1)
++{return (ushort2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 mul_hi (ushort3 param0, ushort3 param1)
++{return (ushort3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                  mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 mul_hi (ushort4 param0, ushort4 param1)
++{return (ushort4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                  mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 mul_hi (ushort8 param0, ushort8 param1)
++{return (ushort8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                  mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                  mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                  mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 mul_hi (ushort16 param0, ushort16 param1)
++{return (ushort16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                   mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                   mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                   mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                   mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                   mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                   mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                   mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 mul_hi (uint2 param0, uint2 param1)
++{return (uint2)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 mul_hi (uint3 param0, uint3 param1)
++{return (uint3)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 mul_hi (uint4 param0, uint4 param1)
++{return (uint4)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 mul_hi (uint8 param0, uint8 param1)
++{return (uint8)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 mul_hi (uint16 param0, uint16 param1)
++{return (uint16)(mul_hi(param0.s0, param1.s0), mul_hi(param0.s1, param1.s1),
++                 mul_hi(param0.s2, param1.s2), mul_hi(param0.s3, param1.s3),
++                 mul_hi(param0.s4, param1.s4), mul_hi(param0.s5, param1.s5),
++                 mul_hi(param0.s6, param1.s6), mul_hi(param0.s7, param1.s7),
++                 mul_hi(param0.s8, param1.s8), mul_hi(param0.s9, param1.s9),
++                 mul_hi(param0.sa, param1.sa), mul_hi(param0.sb, param1.sb),
++                 mul_hi(param0.sc, param1.sc), mul_hi(param0.sd, param1.sd),
++                 mul_hi(param0.se, param1.se), mul_hi(param0.sf, param1.sf)); }
++
++
++//gentype rotate (gentype v,  gentype i)
++
++INLINE_OVERLOADABLE char2 rotate (char2 param0, char2 param1)
++{return (char2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 rotate (char3 param0, char3 param1)
++{return (char3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 rotate (char4 param0, char4 param1)
++{return (char4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 rotate (char8 param0, char8 param1)
++{return (char8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 rotate (char16 param0, char16 param1)
++{return (char16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                 rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                 rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                 rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                 rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                 rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                 rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 rotate (short2 param0, short2 param1)
++{return (short2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 rotate (short3 param0, short3 param1)
++{return (short3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 rotate (short4 param0, short4 param1)
++{return (short4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 rotate (short8 param0, short8 param1)
++{return (short8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                 rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                 rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 rotate (short16 param0, short16 param1)
++{return (short16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                  rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                  rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                  rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                  rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                  rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                  rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                  rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 rotate (int2 param0, int2 param1)
++{return (int2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 rotate (int3 param0, int3 param1)
++{return (int3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++               rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 rotate (int4 param0, int4 param1)
++{return (int4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++               rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 rotate (int8 param0, int8 param1)
++{return (int8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++               rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++               rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++               rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 rotate (int16 param0, int16 param1)
++{return (int16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 rotate (uchar2 param0, uchar2 param1)
++{return (uchar2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 rotate (uchar3 param0, uchar3 param1)
++{return (uchar3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 rotate (uchar4 param0, uchar4 param1)
++{return (uchar4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 rotate (uchar8 param0, uchar8 param1)
++{return (uchar8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                 rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                 rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 rotate (uchar16 param0, uchar16 param1)
++{return (uchar16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                  rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                  rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                  rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                  rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                  rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                  rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                  rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 rotate (ushort2 param0, ushort2 param1)
++{return (ushort2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 rotate (ushort3 param0, ushort3 param1)
++{return (ushort3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                  rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 rotate (ushort4 param0, ushort4 param1)
++{return (ushort4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                  rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 rotate (ushort8 param0, ushort8 param1)
++{return (ushort8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                  rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                  rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                  rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 rotate (ushort16 param0, ushort16 param1)
++{return (ushort16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                   rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                   rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                   rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                   rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                   rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                   rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                   rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 rotate (uint2 param0, uint2 param1)
++{return (uint2)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 rotate (uint3 param0, uint3 param1)
++{return (uint3)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 rotate (uint4 param0, uint4 param1)
++{return (uint4)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 rotate (uint8 param0, uint8 param1)
++{return (uint8)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 rotate (uint16 param0, uint16 param1)
++{return (uint16)(rotate(param0.s0, param1.s0), rotate(param0.s1, param1.s1),
++                 rotate(param0.s2, param1.s2), rotate(param0.s3, param1.s3),
++                 rotate(param0.s4, param1.s4), rotate(param0.s5, param1.s5),
++                 rotate(param0.s6, param1.s6), rotate(param0.s7, param1.s7),
++                 rotate(param0.s8, param1.s8), rotate(param0.s9, param1.s9),
++                 rotate(param0.sa, param1.sa), rotate(param0.sb, param1.sb),
++                 rotate(param0.sc, param1.sc), rotate(param0.sd, param1.sd),
++                 rotate(param0.se, param1.se), rotate(param0.sf, param1.sf)); }
++
++
++//gentype sub_sat (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE char2 sub_sat (char2 param0, char2 param1)
++{return (char2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE char3 sub_sat (char3 param0, char3 param1)
++{return (char3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE char4 sub_sat (char4 param0, char4 param1)
++{return (char4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE char8 sub_sat (char8 param0, char8 param1)
++{return (char8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE char16 sub_sat (char16 param0, char16 param1)
++{return (char16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                 sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                 sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                 sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                 sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                 sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                 sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE short2 sub_sat (short2 param0, short2 param1)
++{return (short2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 sub_sat (short3 param0, short3 param1)
++{return (short3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 sub_sat (short4 param0, short4 param1)
++{return (short4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 sub_sat (short8 param0, short8 param1)
++{return (short8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                 sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                 sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 sub_sat (short16 param0, short16 param1)
++{return (short16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                  sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                  sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                  sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                  sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                  sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                  sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                  sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 sub_sat (int2 param0, int2 param1)
++{return (int2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 sub_sat (int3 param0, int3 param1)
++{return (int3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++               sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 sub_sat (int4 param0, int4 param1)
++{return (int4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++               sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 sub_sat (int8 param0, int8 param1)
++{return (int8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++               sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++               sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++               sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 sub_sat (int16 param0, int16 param1)
++{return (int16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uchar2 sub_sat (uchar2 param0, uchar2 param1)
++{return (uchar2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uchar3 sub_sat (uchar3 param0, uchar3 param1)
++{return (uchar3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uchar4 sub_sat (uchar4 param0, uchar4 param1)
++{return (uchar4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uchar8 sub_sat (uchar8 param0, uchar8 param1)
++{return (uchar8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                 sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                 sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uchar16 sub_sat (uchar16 param0, uchar16 param1)
++{return (uchar16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                  sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                  sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                  sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                  sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                  sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                  sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                  sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE ushort2 sub_sat (ushort2 param0, ushort2 param1)
++{return (ushort2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 sub_sat (ushort3 param0, ushort3 param1)
++{return (ushort3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                  sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 sub_sat (ushort4 param0, ushort4 param1)
++{return (ushort4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                  sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 sub_sat (ushort8 param0, ushort8 param1)
++{return (ushort8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                  sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                  sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                  sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 sub_sat (ushort16 param0, ushort16 param1)
++{return (ushort16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                   sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                   sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                   sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                   sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                   sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                   sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                   sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE uint2 sub_sat (uint2 param0, uint2 param1)
++{return (uint2)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 sub_sat (uint3 param0, uint3 param1)
++{return (uint3)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 sub_sat (uint4 param0, uint4 param1)
++{return (uint4)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 sub_sat (uint8 param0, uint8 param1)
++{return (uint8)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 sub_sat (uint16 param0, uint16 param1)
++{return (uint16)(sub_sat(param0.s0, param1.s0), sub_sat(param0.s1, param1.s1),
++                 sub_sat(param0.s2, param1.s2), sub_sat(param0.s3, param1.s3),
++                 sub_sat(param0.s4, param1.s4), sub_sat(param0.s5, param1.s5),
++                 sub_sat(param0.s6, param1.s6), sub_sat(param0.s7, param1.s7),
++                 sub_sat(param0.s8, param1.s8), sub_sat(param0.s9, param1.s9),
++                 sub_sat(param0.sa, param1.sa), sub_sat(param0.sb, param1.sb),
++                 sub_sat(param0.sc, param1.sc), sub_sat(param0.sd, param1.sd),
++                 sub_sat(param0.se, param1.se), sub_sat(param0.sf, param1.sf)); }
++
++
++//shortn upsample (charn hi, ucharn lo)
++
++INLINE_OVERLOADABLE short2 upsample (char2 param0, uchar2 param1)
++{return (short2)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE short3 upsample (char3 param0, uchar3 param1)
++{return (short3)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                 upsample(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE short4 upsample (char4 param0, uchar4 param1)
++{return (short4)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                 upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE short8 upsample (char8 param0, uchar8 param1)
++{return (short8)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                 upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                 upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                 upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE short16 upsample (char16 param0, uchar16 param1)
++{return (short16)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                  upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                  upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                  upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7),
++                  upsample(param0.s8, param1.s8), upsample(param0.s9, param1.s9),
++                  upsample(param0.sa, param1.sa), upsample(param0.sb, param1.sb),
++                  upsample(param0.sc, param1.sc), upsample(param0.sd, param1.sd),
++                  upsample(param0.se, param1.se), upsample(param0.sf, param1.sf)); }
++
++
++//ushortn upsample (ucharn hi, ucharn lo)
++
++INLINE_OVERLOADABLE ushort2 upsample (uchar2 param0, uchar2 param1)
++{return (ushort2)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE ushort3 upsample (uchar3 param0, uchar3 param1)
++{return (ushort3)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                  upsample(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE ushort4 upsample (uchar4 param0, uchar4 param1)
++{return (ushort4)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                  upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE ushort8 upsample (uchar8 param0, uchar8 param1)
++{return (ushort8)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                  upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                  upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                  upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE ushort16 upsample (uchar16 param0, uchar16 param1)
++{return (ushort16)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                   upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                   upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                   upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7),
++                   upsample(param0.s8, param1.s8), upsample(param0.s9, param1.s9),
++                   upsample(param0.sa, param1.sa), upsample(param0.sb, param1.sb),
++                   upsample(param0.sc, param1.sc), upsample(param0.sd, param1.sd),
++                   upsample(param0.se, param1.se), upsample(param0.sf, param1.sf)); }
++
++
++//intn upsample (shortn hi, ushortn lo)
++
++INLINE_OVERLOADABLE int2 upsample (short2 param0, ushort2 param1)
++{return (int2)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 upsample (short3 param0, ushort3 param1)
++{return (int3)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++               upsample(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 upsample (short4 param0, ushort4 param1)
++{return (int4)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++               upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 upsample (short8 param0, ushort8 param1)
++{return (int8)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++               upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++               upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++               upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 upsample (short16 param0, ushort16 param1)
++{return (int16)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7),
++                upsample(param0.s8, param1.s8), upsample(param0.s9, param1.s9),
++                upsample(param0.sa, param1.sa), upsample(param0.sb, param1.sb),
++                upsample(param0.sc, param1.sc), upsample(param0.sd, param1.sd),
++                upsample(param0.se, param1.se), upsample(param0.sf, param1.sf)); }
++
++
++//uintn upsample (ushortn hi, ushortn lo)
++
++INLINE_OVERLOADABLE uint2 upsample (ushort2 param0, ushort2 param1)
++{return (uint2)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 upsample (ushort3 param0, ushort3 param1)
++{return (uint3)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                upsample(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 upsample (ushort4 param0, ushort4 param1)
++{return (uint4)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 upsample (ushort8 param0, ushort8 param1)
++{return (uint8)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 upsample (ushort16 param0, ushort16 param1)
++{return (uint16)(upsample(param0.s0, param1.s0), upsample(param0.s1, param1.s1),
++                 upsample(param0.s2, param1.s2), upsample(param0.s3, param1.s3),
++                 upsample(param0.s4, param1.s4), upsample(param0.s5, param1.s5),
++                 upsample(param0.s6, param1.s6), upsample(param0.s7, param1.s7),
++                 upsample(param0.s8, param1.s8), upsample(param0.s9, param1.s9),
++                 upsample(param0.sa, param1.sa), upsample(param0.sb, param1.sb),
++                 upsample(param0.sc, param1.sc), upsample(param0.sd, param1.sd),
++                 upsample(param0.se, param1.se), upsample(param0.sf, param1.sf)); }
++
++
++//longn upsample (intn hi, uintn lo)
++
++
++//ulongn upsample (uintn hi, uintn lo)
++
++
++//fast_integer builtin functions
++//gentype mad24 (gentype x, gentype y, gentype z)
++
++INLINE_OVERLOADABLE uint2 mad24 (uint2 param0, uint2 param1, uint2 param2)
++{return (uint2)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE uint3 mad24 (uint3 param0, uint3 param1, uint3 param2)
++{return (uint3)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++                mad24(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE uint4 mad24 (uint4 param0, uint4 param1, uint4 param2)
++{return (uint4)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++                mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE uint8 mad24 (uint8 param0, uint8 param1, uint8 param2)
++{return (uint8)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++                mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3),
++                mad24(param0.s4, param1.s4, param2.s4), mad24(param0.s5, param1.s5, param2.s5),
++                mad24(param0.s6, param1.s6, param2.s6), mad24(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE uint16 mad24 (uint16 param0, uint16 param1, uint16 param2)
++{return (uint16)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++                 mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3),
++                 mad24(param0.s4, param1.s4, param2.s4), mad24(param0.s5, param1.s5, param2.s5),
++                 mad24(param0.s6, param1.s6, param2.s6), mad24(param0.s7, param1.s7, param2.s7),
++                 mad24(param0.s8, param1.s8, param2.s8), mad24(param0.s9, param1.s9, param2.s9),
++                 mad24(param0.sa, param1.sa, param2.sa), mad24(param0.sb, param1.sb, param2.sb),
++                 mad24(param0.sc, param1.sc, param2.sc), mad24(param0.sd, param1.sd, param2.sd),
++                 mad24(param0.se, param1.se, param2.se), mad24(param0.sf, param1.sf, param2.sf)); }
++
++INLINE_OVERLOADABLE int2 mad24 (int2 param0, int2 param1, int2 param2)
++{return (int2)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE int3 mad24 (int3 param0, int3 param1, int3 param2)
++{return (int3)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++               mad24(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE int4 mad24 (int4 param0, int4 param1, int4 param2)
++{return (int4)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++               mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE int8 mad24 (int8 param0, int8 param1, int8 param2)
++{return (int8)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++               mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3),
++               mad24(param0.s4, param1.s4, param2.s4), mad24(param0.s5, param1.s5, param2.s5),
++               mad24(param0.s6, param1.s6, param2.s6), mad24(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE int16 mad24 (int16 param0, int16 param1, int16 param2)
++{return (int16)(mad24(param0.s0, param1.s0, param2.s0), mad24(param0.s1, param1.s1, param2.s1),
++                mad24(param0.s2, param1.s2, param2.s2), mad24(param0.s3, param1.s3, param2.s3),
++                mad24(param0.s4, param1.s4, param2.s4), mad24(param0.s5, param1.s5, param2.s5),
++                mad24(param0.s6, param1.s6, param2.s6), mad24(param0.s7, param1.s7, param2.s7),
++                mad24(param0.s8, param1.s8, param2.s8), mad24(param0.s9, param1.s9, param2.s9),
++                mad24(param0.sa, param1.sa, param2.sa), mad24(param0.sb, param1.sb, param2.sb),
++                mad24(param0.sc, param1.sc, param2.sc), mad24(param0.sd, param1.sd, param2.sd),
++                mad24(param0.se, param1.se, param2.se), mad24(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentype mul24 (gentype x, gentype y)
++
++INLINE_OVERLOADABLE uint2 mul24 (uint2 param0, uint2 param1)
++{return (uint2)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE uint3 mul24 (uint3 param0, uint3 param1)
++{return (uint3)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++                mul24(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE uint4 mul24 (uint4 param0, uint4 param1)
++{return (uint4)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++                mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE uint8 mul24 (uint8 param0, uint8 param1)
++{return (uint8)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++                mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3),
++                mul24(param0.s4, param1.s4), mul24(param0.s5, param1.s5),
++                mul24(param0.s6, param1.s6), mul24(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE uint16 mul24 (uint16 param0, uint16 param1)
++{return (uint16)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++                 mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3),
++                 mul24(param0.s4, param1.s4), mul24(param0.s5, param1.s5),
++                 mul24(param0.s6, param1.s6), mul24(param0.s7, param1.s7),
++                 mul24(param0.s8, param1.s8), mul24(param0.s9, param1.s9),
++                 mul24(param0.sa, param1.sa), mul24(param0.sb, param1.sb),
++                 mul24(param0.sc, param1.sc), mul24(param0.sd, param1.sd),
++                 mul24(param0.se, param1.se), mul24(param0.sf, param1.sf)); }
++
++INLINE_OVERLOADABLE int2 mul24 (int2 param0, int2 param1)
++{return (int2)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 mul24 (int3 param0, int3 param1)
++{return (int3)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++               mul24(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 mul24 (int4 param0, int4 param1)
++{return (int4)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++               mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 mul24 (int8 param0, int8 param1)
++{return (int8)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++               mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3),
++               mul24(param0.s4, param1.s4), mul24(param0.s5, param1.s5),
++               mul24(param0.s6, param1.s6), mul24(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 mul24 (int16 param0, int16 param1)
++{return (int16)(mul24(param0.s0, param1.s0), mul24(param0.s1, param1.s1),
++                mul24(param0.s2, param1.s2), mul24(param0.s3, param1.s3),
++                mul24(param0.s4, param1.s4), mul24(param0.s5, param1.s5),
++                mul24(param0.s6, param1.s6), mul24(param0.s7, param1.s7),
++                mul24(param0.s8, param1.s8), mul24(param0.s9, param1.s9),
++                mul24(param0.sa, param1.sa), mul24(param0.sb, param1.sb),
++                mul24(param0.sc, param1.sc), mul24(param0.sd, param1.sd),
++                mul24(param0.se, param1.se), mul24(param0.sf, param1.sf)); }
++
++
++//common builtin functions
++//gentype clamp (gentype x, gentype minval, gentype maxval)
++
++INLINE_OVERLOADABLE float2 clamp (float2 param0, float2 param1, float2 param2)
++{return (float2)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE float3 clamp (float3 param0, float3 param1, float3 param2)
++{return (float3)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE float4 clamp (float4 param0, float4 param1, float4 param2)
++{return (float4)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE float8 clamp (float8 param0, float8 param1, float8 param2)
++{return (float8)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                 clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                 clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                 clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE float16 clamp (float16 param0, float16 param1, float16 param2)
++{return (float16)(clamp(param0.s0, param1.s0, param2.s0), clamp(param0.s1, param1.s1, param2.s1),
++                  clamp(param0.s2, param1.s2, param2.s2), clamp(param0.s3, param1.s3, param2.s3),
++                  clamp(param0.s4, param1.s4, param2.s4), clamp(param0.s5, param1.s5, param2.s5),
++                  clamp(param0.s6, param1.s6, param2.s6), clamp(param0.s7, param1.s7, param2.s7),
++                  clamp(param0.s8, param1.s8, param2.s8), clamp(param0.s9, param1.s9, param2.s9),
++                  clamp(param0.sa, param1.sa, param2.sa), clamp(param0.sb, param1.sb, param2.sb),
++                  clamp(param0.sc, param1.sc, param2.sc), clamp(param0.sd, param1.sd, param2.sd),
++                  clamp(param0.se, param1.se, param2.se), clamp(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentypef clamp (gentypef x, float minval, float maxval)
++
++INLINE_OVERLOADABLE float2 clamp (float2 param0, float param1, float param2)
++{return (float2)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2)); }
++
++INLINE_OVERLOADABLE float3 clamp (float3 param0, float param1, float param2)
++{return (float3)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2)); }
++
++INLINE_OVERLOADABLE float4 clamp (float4 param0, float param1, float param2)
++{return (float4)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2)); }
++
++INLINE_OVERLOADABLE float8 clamp (float8 param0, float param1, float param2)
++{return (float8)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                 clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                 clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                 clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2)); }
++
++INLINE_OVERLOADABLE float16 clamp (float16 param0, float param1, float param2)
++{return (float16)(clamp(param0.s0, param1, param2), clamp(param0.s1, param1, param2),
++                  clamp(param0.s2, param1, param2), clamp(param0.s3, param1, param2),
++                  clamp(param0.s4, param1, param2), clamp(param0.s5, param1, param2),
++                  clamp(param0.s6, param1, param2), clamp(param0.s7, param1, param2),
++                  clamp(param0.s8, param1, param2), clamp(param0.s9, param1, param2),
++                  clamp(param0.sa, param1, param2), clamp(param0.sb, param1, param2),
++                  clamp(param0.sc, param1, param2), clamp(param0.sd, param1, param2),
++                  clamp(param0.se, param1, param2), clamp(param0.sf, param1, param2)); }
++
++
++//gentyped clamp (gentyped x, double minval, double maxval)
++
++
++//gentype degrees (gentype radians)
++
++INLINE_OVERLOADABLE float2 degrees (float2 param0)
++{return (float2)(degrees(param0.s0), degrees(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 degrees (float3 param0)
++{return (float3)(degrees(param0.s0), degrees(param0.s1),
++                 degrees(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 degrees (float4 param0)
++{return (float4)(degrees(param0.s0), degrees(param0.s1),
++                 degrees(param0.s2), degrees(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 degrees (float8 param0)
++{return (float8)(degrees(param0.s0), degrees(param0.s1),
++                 degrees(param0.s2), degrees(param0.s3),
++                 degrees(param0.s4), degrees(param0.s5),
++                 degrees(param0.s6), degrees(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 degrees (float16 param0)
++{return (float16)(degrees(param0.s0), degrees(param0.s1),
++                  degrees(param0.s2), degrees(param0.s3),
++                  degrees(param0.s4), degrees(param0.s5),
++                  degrees(param0.s6), degrees(param0.s7),
++                  degrees(param0.s8), degrees(param0.s9),
++                  degrees(param0.sa), degrees(param0.sb),
++                  degrees(param0.sc), degrees(param0.sd),
++                  degrees(param0.se), degrees(param0.sf)); }
++
++
++//gentype max (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE float2 max (float2 param0, float2 param1)
++{return (float2)(max(param0.s0, param1.s0), max(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 max (float3 param0, float3 param1)
++{return (float3)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 max (float4 param0, float4 param1)
++{return (float4)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 max (float8 param0, float8 param1)
++{return (float8)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                 max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                 max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                 max(param0.s6, param1.s6), max(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 max (float16 param0, float16 param1)
++{return (float16)(max(param0.s0, param1.s0), max(param0.s1, param1.s1),
++                  max(param0.s2, param1.s2), max(param0.s3, param1.s3),
++                  max(param0.s4, param1.s4), max(param0.s5, param1.s5),
++                  max(param0.s6, param1.s6), max(param0.s7, param1.s7),
++                  max(param0.s8, param1.s8), max(param0.s9, param1.s9),
++                  max(param0.sa, param1.sa), max(param0.sb, param1.sb),
++                  max(param0.sc, param1.sc), max(param0.sd, param1.sd),
++                  max(param0.se, param1.se), max(param0.sf, param1.sf)); }
++
++
++//gentypef max (gentypef x, float y)
++
++INLINE_OVERLOADABLE float2 max (float2 param0, float param1)
++{return (float2)(max(param0.s0, param1), max(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE float3 max (float3 param0, float param1)
++{return (float3)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE float4 max (float4 param0, float param1)
++{return (float4)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE float8 max (float8 param0, float param1)
++{return (float8)(max(param0.s0, param1), max(param0.s1, param1),
++                 max(param0.s2, param1), max(param0.s3, param1),
++                 max(param0.s4, param1), max(param0.s5, param1),
++                 max(param0.s6, param1), max(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE float16 max (float16 param0, float param1)
++{return (float16)(max(param0.s0, param1), max(param0.s1, param1),
++                  max(param0.s2, param1), max(param0.s3, param1),
++                  max(param0.s4, param1), max(param0.s5, param1),
++                  max(param0.s6, param1), max(param0.s7, param1),
++                  max(param0.s8, param1), max(param0.s9, param1),
++                  max(param0.sa, param1), max(param0.sb, param1),
++                  max(param0.sc, param1), max(param0.sd, param1),
++                  max(param0.se, param1), max(param0.sf, param1)); }
++
++
++//gentyped max (gentyped x, double y)
++
++
++//gentype min (gentype x,  gentype y)
++
++INLINE_OVERLOADABLE float2 min (float2 param0, float2 param1)
++{return (float2)(min(param0.s0, param1.s0), min(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 min (float3 param0, float3 param1)
++{return (float3)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 min (float4 param0, float4 param1)
++{return (float4)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 min (float8 param0, float8 param1)
++{return (float8)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                 min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                 min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                 min(param0.s6, param1.s6), min(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 min (float16 param0, float16 param1)
++{return (float16)(min(param0.s0, param1.s0), min(param0.s1, param1.s1),
++                  min(param0.s2, param1.s2), min(param0.s3, param1.s3),
++                  min(param0.s4, param1.s4), min(param0.s5, param1.s5),
++                  min(param0.s6, param1.s6), min(param0.s7, param1.s7),
++                  min(param0.s8, param1.s8), min(param0.s9, param1.s9),
++                  min(param0.sa, param1.sa), min(param0.sb, param1.sb),
++                  min(param0.sc, param1.sc), min(param0.sd, param1.sd),
++                  min(param0.se, param1.se), min(param0.sf, param1.sf)); }
++
++
++//gentypef min (gentypef x,  float y)
++
++INLINE_OVERLOADABLE float2 min (float2 param0, float param1)
++{return (float2)(min(param0.s0, param1), min(param0.s1, param1)); }
++
++INLINE_OVERLOADABLE float3 min (float3 param0, float param1)
++{return (float3)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1)); }
++
++INLINE_OVERLOADABLE float4 min (float4 param0, float param1)
++{return (float4)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1)); }
++
++INLINE_OVERLOADABLE float8 min (float8 param0, float param1)
++{return (float8)(min(param0.s0, param1), min(param0.s1, param1),
++                 min(param0.s2, param1), min(param0.s3, param1),
++                 min(param0.s4, param1), min(param0.s5, param1),
++                 min(param0.s6, param1), min(param0.s7, param1)); }
++
++INLINE_OVERLOADABLE float16 min (float16 param0, float param1)
++{return (float16)(min(param0.s0, param1), min(param0.s1, param1),
++                  min(param0.s2, param1), min(param0.s3, param1),
++                  min(param0.s4, param1), min(param0.s5, param1),
++                  min(param0.s6, param1), min(param0.s7, param1),
++                  min(param0.s8, param1), min(param0.s9, param1),
++                  min(param0.sa, param1), min(param0.sb, param1),
++                  min(param0.sc, param1), min(param0.sd, param1),
++                  min(param0.se, param1), min(param0.sf, param1)); }
++
++
++//gentyped min (gentyped x,  double y)
++
++
++//gentype mix (gentype x, gentype y, gentype a)
++
++INLINE_OVERLOADABLE float2 mix (float2 param0, float2 param1, float2 param2)
++{return (float2)(mix(param0.s0, param1.s0, param2.s0), mix(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE float3 mix (float3 param0, float3 param1, float3 param2)
++{return (float3)(mix(param0.s0, param1.s0, param2.s0), mix(param0.s1, param1.s1, param2.s1),
++                 mix(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE float4 mix (float4 param0, float4 param1, float4 param2)
++{return (float4)(mix(param0.s0, param1.s0, param2.s0), mix(param0.s1, param1.s1, param2.s1),
++                 mix(param0.s2, param1.s2, param2.s2), mix(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE float8 mix (float8 param0, float8 param1, float8 param2)
++{return (float8)(mix(param0.s0, param1.s0, param2.s0), mix(param0.s1, param1.s1, param2.s1),
++                 mix(param0.s2, param1.s2, param2.s2), mix(param0.s3, param1.s3, param2.s3),
++                 mix(param0.s4, param1.s4, param2.s4), mix(param0.s5, param1.s5, param2.s5),
++                 mix(param0.s6, param1.s6, param2.s6), mix(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE float16 mix (float16 param0, float16 param1, float16 param2)
++{return (float16)(mix(param0.s0, param1.s0, param2.s0), mix(param0.s1, param1.s1, param2.s1),
++                  mix(param0.s2, param1.s2, param2.s2), mix(param0.s3, param1.s3, param2.s3),
++                  mix(param0.s4, param1.s4, param2.s4), mix(param0.s5, param1.s5, param2.s5),
++                  mix(param0.s6, param1.s6, param2.s6), mix(param0.s7, param1.s7, param2.s7),
++                  mix(param0.s8, param1.s8, param2.s8), mix(param0.s9, param1.s9, param2.s9),
++                  mix(param0.sa, param1.sa, param2.sa), mix(param0.sb, param1.sb, param2.sb),
++                  mix(param0.sc, param1.sc, param2.sc), mix(param0.sd, param1.sd, param2.sd),
++                  mix(param0.se, param1.se, param2.se), mix(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentypef mix (gentypef x, gentypef y, float a)
++
++INLINE_OVERLOADABLE float2 mix (float2 param0, float2 param1, float param2)
++{return (float2)(mix(param0.s0, param1.s0, param2), mix(param0.s1, param1.s1, param2)); }
++
++INLINE_OVERLOADABLE float3 mix (float3 param0, float3 param1, float param2)
++{return (float3)(mix(param0.s0, param1.s0, param2), mix(param0.s1, param1.s1, param2),
++                 mix(param0.s2, param1.s2, param2)); }
++
++INLINE_OVERLOADABLE float4 mix (float4 param0, float4 param1, float param2)
++{return (float4)(mix(param0.s0, param1.s0, param2), mix(param0.s1, param1.s1, param2),
++                 mix(param0.s2, param1.s2, param2), mix(param0.s3, param1.s3, param2)); }
++
++INLINE_OVERLOADABLE float8 mix (float8 param0, float8 param1, float param2)
++{return (float8)(mix(param0.s0, param1.s0, param2), mix(param0.s1, param1.s1, param2),
++                 mix(param0.s2, param1.s2, param2), mix(param0.s3, param1.s3, param2),
++                 mix(param0.s4, param1.s4, param2), mix(param0.s5, param1.s5, param2),
++                 mix(param0.s6, param1.s6, param2), mix(param0.s7, param1.s7, param2)); }
++
++INLINE_OVERLOADABLE float16 mix (float16 param0, float16 param1, float param2)
++{return (float16)(mix(param0.s0, param1.s0, param2), mix(param0.s1, param1.s1, param2),
++                  mix(param0.s2, param1.s2, param2), mix(param0.s3, param1.s3, param2),
++                  mix(param0.s4, param1.s4, param2), mix(param0.s5, param1.s5, param2),
++                  mix(param0.s6, param1.s6, param2), mix(param0.s7, param1.s7, param2),
++                  mix(param0.s8, param1.s8, param2), mix(param0.s9, param1.s9, param2),
++                  mix(param0.sa, param1.sa, param2), mix(param0.sb, param1.sb, param2),
++                  mix(param0.sc, param1.sc, param2), mix(param0.sd, param1.sd, param2),
++                  mix(param0.se, param1.se, param2), mix(param0.sf, param1.sf, param2)); }
++
++
++//gentyped mix (gentyped x, gentyped y, double a)
++
++
++//gentype radians (gentype degrees)
++
++INLINE_OVERLOADABLE float2 radians (float2 param0)
++{return (float2)(radians(param0.s0), radians(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 radians (float3 param0)
++{return (float3)(radians(param0.s0), radians(param0.s1),
++                 radians(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 radians (float4 param0)
++{return (float4)(radians(param0.s0), radians(param0.s1),
++                 radians(param0.s2), radians(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 radians (float8 param0)
++{return (float8)(radians(param0.s0), radians(param0.s1),
++                 radians(param0.s2), radians(param0.s3),
++                 radians(param0.s4), radians(param0.s5),
++                 radians(param0.s6), radians(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 radians (float16 param0)
++{return (float16)(radians(param0.s0), radians(param0.s1),
++                  radians(param0.s2), radians(param0.s3),
++                  radians(param0.s4), radians(param0.s5),
++                  radians(param0.s6), radians(param0.s7),
++                  radians(param0.s8), radians(param0.s9),
++                  radians(param0.sa), radians(param0.sb),
++                  radians(param0.sc), radians(param0.sd),
++                  radians(param0.se), radians(param0.sf)); }
++
++
++//gentype step (gentype edge, gentype x)
++
++INLINE_OVERLOADABLE float2 step (float2 param0, float2 param1)
++{return (float2)(step(param0.s0, param1.s0), step(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 step (float3 param0, float3 param1)
++{return (float3)(step(param0.s0, param1.s0), step(param0.s1, param1.s1),
++                 step(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 step (float4 param0, float4 param1)
++{return (float4)(step(param0.s0, param1.s0), step(param0.s1, param1.s1),
++                 step(param0.s2, param1.s2), step(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 step (float8 param0, float8 param1)
++{return (float8)(step(param0.s0, param1.s0), step(param0.s1, param1.s1),
++                 step(param0.s2, param1.s2), step(param0.s3, param1.s3),
++                 step(param0.s4, param1.s4), step(param0.s5, param1.s5),
++                 step(param0.s6, param1.s6), step(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 step (float16 param0, float16 param1)
++{return (float16)(step(param0.s0, param1.s0), step(param0.s1, param1.s1),
++                  step(param0.s2, param1.s2), step(param0.s3, param1.s3),
++                  step(param0.s4, param1.s4), step(param0.s5, param1.s5),
++                  step(param0.s6, param1.s6), step(param0.s7, param1.s7),
++                  step(param0.s8, param1.s8), step(param0.s9, param1.s9),
++                  step(param0.sa, param1.sa), step(param0.sb, param1.sb),
++                  step(param0.sc, param1.sc), step(param0.sd, param1.sd),
++                  step(param0.se, param1.se), step(param0.sf, param1.sf)); }
++
++
++//gentypef step (float edge, gentypef x)
++
++INLINE_OVERLOADABLE float2 step (float param0, float2 param1)
++{return (float2)(step(param0, param1.s0), step(param0, param1.s1)); }
++
++INLINE_OVERLOADABLE float3 step (float param0, float3 param1)
++{return (float3)(step(param0, param1.s0), step(param0, param1.s1),
++                 step(param0, param1.s2)); }
++
++INLINE_OVERLOADABLE float4 step (float param0, float4 param1)
++{return (float4)(step(param0, param1.s0), step(param0, param1.s1),
++                 step(param0, param1.s2), step(param0, param1.s3)); }
++
++INLINE_OVERLOADABLE float8 step (float param0, float8 param1)
++{return (float8)(step(param0, param1.s0), step(param0, param1.s1),
++                 step(param0, param1.s2), step(param0, param1.s3),
++                 step(param0, param1.s4), step(param0, param1.s5),
++                 step(param0, param1.s6), step(param0, param1.s7)); }
++
++INLINE_OVERLOADABLE float16 step (float param0, float16 param1)
++{return (float16)(step(param0, param1.s0), step(param0, param1.s1),
++                  step(param0, param1.s2), step(param0, param1.s3),
++                  step(param0, param1.s4), step(param0, param1.s5),
++                  step(param0, param1.s6), step(param0, param1.s7),
++                  step(param0, param1.s8), step(param0, param1.s9),
++                  step(param0, param1.sa), step(param0, param1.sb),
++                  step(param0, param1.sc), step(param0, param1.sd),
++                  step(param0, param1.se), step(param0, param1.sf)); }
++
++
++//gentyped step (double edge, gentyped x)
++
++
++//gentype smoothstep (gentype edge0, gentype edge1, gentype x)
++
++INLINE_OVERLOADABLE float2 smoothstep (float2 param0, float2 param1, float2 param2)
++{return (float2)(smoothstep(param0.s0, param1.s0, param2.s0), smoothstep(param0.s1, param1.s1, param2.s1)); }
++
++INLINE_OVERLOADABLE float3 smoothstep (float3 param0, float3 param1, float3 param2)
++{return (float3)(smoothstep(param0.s0, param1.s0, param2.s0), smoothstep(param0.s1, param1.s1, param2.s1),
++                 smoothstep(param0.s2, param1.s2, param2.s2)); }
++
++INLINE_OVERLOADABLE float4 smoothstep (float4 param0, float4 param1, float4 param2)
++{return (float4)(smoothstep(param0.s0, param1.s0, param2.s0), smoothstep(param0.s1, param1.s1, param2.s1),
++                 smoothstep(param0.s2, param1.s2, param2.s2), smoothstep(param0.s3, param1.s3, param2.s3)); }
++
++INLINE_OVERLOADABLE float8 smoothstep (float8 param0, float8 param1, float8 param2)
++{return (float8)(smoothstep(param0.s0, param1.s0, param2.s0), smoothstep(param0.s1, param1.s1, param2.s1),
++                 smoothstep(param0.s2, param1.s2, param2.s2), smoothstep(param0.s3, param1.s3, param2.s3),
++                 smoothstep(param0.s4, param1.s4, param2.s4), smoothstep(param0.s5, param1.s5, param2.s5),
++                 smoothstep(param0.s6, param1.s6, param2.s6), smoothstep(param0.s7, param1.s7, param2.s7)); }
++
++INLINE_OVERLOADABLE float16 smoothstep (float16 param0, float16 param1, float16 param2)
++{return (float16)(smoothstep(param0.s0, param1.s0, param2.s0), smoothstep(param0.s1, param1.s1, param2.s1),
++                  smoothstep(param0.s2, param1.s2, param2.s2), smoothstep(param0.s3, param1.s3, param2.s3),
++                  smoothstep(param0.s4, param1.s4, param2.s4), smoothstep(param0.s5, param1.s5, param2.s5),
++                  smoothstep(param0.s6, param1.s6, param2.s6), smoothstep(param0.s7, param1.s7, param2.s7),
++                  smoothstep(param0.s8, param1.s8, param2.s8), smoothstep(param0.s9, param1.s9, param2.s9),
++                  smoothstep(param0.sa, param1.sa, param2.sa), smoothstep(param0.sb, param1.sb, param2.sb),
++                  smoothstep(param0.sc, param1.sc, param2.sc), smoothstep(param0.sd, param1.sd, param2.sd),
++                  smoothstep(param0.se, param1.se, param2.se), smoothstep(param0.sf, param1.sf, param2.sf)); }
++
++
++//gentypef smoothstep (float edge0, float edge1, gentypef x)
++
++INLINE_OVERLOADABLE float2 smoothstep (float param0, float param1, float2 param2)
++{return (float2)(smoothstep(param0, param1, param2.s0), smoothstep(param0, param1, param2.s1)); }
++
++INLINE_OVERLOADABLE float3 smoothstep (float param0, float param1, float3 param2)
++{return (float3)(smoothstep(param0, param1, param2.s0), smoothstep(param0, param1, param2.s1),
++                 smoothstep(param0, param1, param2.s2)); }
++
++INLINE_OVERLOADABLE float4 smoothstep (float param0, float param1, float4 param2)
++{return (float4)(smoothstep(param0, param1, param2.s0), smoothstep(param0, param1, param2.s1),
++                 smoothstep(param0, param1, param2.s2), smoothstep(param0, param1, param2.s3)); }
++
++INLINE_OVERLOADABLE float8 smoothstep (float param0, float param1, float8 param2)
++{return (float8)(smoothstep(param0, param1, param2.s0), smoothstep(param0, param1, param2.s1),
++                 smoothstep(param0, param1, param2.s2), smoothstep(param0, param1, param2.s3),
++                 smoothstep(param0, param1, param2.s4), smoothstep(param0, param1, param2.s5),
++                 smoothstep(param0, param1, param2.s6), smoothstep(param0, param1, param2.s7)); }
++
++INLINE_OVERLOADABLE float16 smoothstep (float param0, float param1, float16 param2)
++{return (float16)(smoothstep(param0, param1, param2.s0), smoothstep(param0, param1, param2.s1),
++                  smoothstep(param0, param1, param2.s2), smoothstep(param0, param1, param2.s3),
++                  smoothstep(param0, param1, param2.s4), smoothstep(param0, param1, param2.s5),
++                  smoothstep(param0, param1, param2.s6), smoothstep(param0, param1, param2.s7),
++                  smoothstep(param0, param1, param2.s8), smoothstep(param0, param1, param2.s9),
++                  smoothstep(param0, param1, param2.sa), smoothstep(param0, param1, param2.sb),
++                  smoothstep(param0, param1, param2.sc), smoothstep(param0, param1, param2.sd),
++                  smoothstep(param0, param1, param2.se), smoothstep(param0, param1, param2.sf)); }
++
++
++//gentyped smoothstep (double edge0, double edge1, gentyped x)
++
++
++//gentype sign (gentype x)
++
++INLINE_OVERLOADABLE float2 sign (float2 param0)
++{return (float2)(sign(param0.s0), sign(param0.s1)); }
++
++INLINE_OVERLOADABLE float3 sign (float3 param0)
++{return (float3)(sign(param0.s0), sign(param0.s1),
++                 sign(param0.s2)); }
++
++INLINE_OVERLOADABLE float4 sign (float4 param0)
++{return (float4)(sign(param0.s0), sign(param0.s1),
++                 sign(param0.s2), sign(param0.s3)); }
++
++INLINE_OVERLOADABLE float8 sign (float8 param0)
++{return (float8)(sign(param0.s0), sign(param0.s1),
++                 sign(param0.s2), sign(param0.s3),
++                 sign(param0.s4), sign(param0.s5),
++                 sign(param0.s6), sign(param0.s7)); }
++
++INLINE_OVERLOADABLE float16 sign (float16 param0)
++{return (float16)(sign(param0.s0), sign(param0.s1),
++                  sign(param0.s2), sign(param0.s3),
++                  sign(param0.s4), sign(param0.s5),
++                  sign(param0.s6), sign(param0.s7),
++                  sign(param0.s8), sign(param0.s9),
++                  sign(param0.sa), sign(param0.sb),
++                  sign(param0.sc), sign(param0.sd),
++                  sign(param0.se), sign(param0.sf)); }
++
++
++//relational builtin functions
++//intn isequal (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isequal (float2 param0, float2 param1)
++{return (int2)(isequal(param0.s0, param1.s0), isequal(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isequal (float3 param0, float3 param1)
++{return (int3)(isequal(param0.s0, param1.s0), isequal(param0.s1, param1.s1),
++               isequal(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isequal (float4 param0, float4 param1)
++{return (int4)(isequal(param0.s0, param1.s0), isequal(param0.s1, param1.s1),
++               isequal(param0.s2, param1.s2), isequal(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isequal (float8 param0, float8 param1)
++{return (int8)(isequal(param0.s0, param1.s0), isequal(param0.s1, param1.s1),
++               isequal(param0.s2, param1.s2), isequal(param0.s3, param1.s3),
++               isequal(param0.s4, param1.s4), isequal(param0.s5, param1.s5),
++               isequal(param0.s6, param1.s6), isequal(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isequal (float16 param0, float16 param1)
++{return (int16)(isequal(param0.s0, param1.s0), isequal(param0.s1, param1.s1),
++                isequal(param0.s2, param1.s2), isequal(param0.s3, param1.s3),
++                isequal(param0.s4, param1.s4), isequal(param0.s5, param1.s5),
++                isequal(param0.s6, param1.s6), isequal(param0.s7, param1.s7),
++                isequal(param0.s8, param1.s8), isequal(param0.s9, param1.s9),
++                isequal(param0.sa, param1.sa), isequal(param0.sb, param1.sb),
++                isequal(param0.sc, param1.sc), isequal(param0.sd, param1.sd),
++                isequal(param0.se, param1.se), isequal(param0.sf, param1.sf)); }
++
++
++//longn isequal (doublen x, doublen y)
++
++
++//intn isnotequal (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isnotequal (float2 param0, float2 param1)
++{return (int2)(isnotequal(param0.s0, param1.s0), isnotequal(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isnotequal (float3 param0, float3 param1)
++{return (int3)(isnotequal(param0.s0, param1.s0), isnotequal(param0.s1, param1.s1),
++               isnotequal(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isnotequal (float4 param0, float4 param1)
++{return (int4)(isnotequal(param0.s0, param1.s0), isnotequal(param0.s1, param1.s1),
++               isnotequal(param0.s2, param1.s2), isnotequal(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isnotequal (float8 param0, float8 param1)
++{return (int8)(isnotequal(param0.s0, param1.s0), isnotequal(param0.s1, param1.s1),
++               isnotequal(param0.s2, param1.s2), isnotequal(param0.s3, param1.s3),
++               isnotequal(param0.s4, param1.s4), isnotequal(param0.s5, param1.s5),
++               isnotequal(param0.s6, param1.s6), isnotequal(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isnotequal (float16 param0, float16 param1)
++{return (int16)(isnotequal(param0.s0, param1.s0), isnotequal(param0.s1, param1.s1),
++                isnotequal(param0.s2, param1.s2), isnotequal(param0.s3, param1.s3),
++                isnotequal(param0.s4, param1.s4), isnotequal(param0.s5, param1.s5),
++                isnotequal(param0.s6, param1.s6), isnotequal(param0.s7, param1.s7),
++                isnotequal(param0.s8, param1.s8), isnotequal(param0.s9, param1.s9),
++                isnotequal(param0.sa, param1.sa), isnotequal(param0.sb, param1.sb),
++                isnotequal(param0.sc, param1.sc), isnotequal(param0.sd, param1.sd),
++                isnotequal(param0.se, param1.se), isnotequal(param0.sf, param1.sf)); }
++
++
++//longn isnotequal (doublen x, doublen y)
++
++
++//intn isgreater (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isgreater (float2 param0, float2 param1)
++{return (int2)(isgreater(param0.s0, param1.s0), isgreater(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isgreater (float3 param0, float3 param1)
++{return (int3)(isgreater(param0.s0, param1.s0), isgreater(param0.s1, param1.s1),
++               isgreater(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isgreater (float4 param0, float4 param1)
++{return (int4)(isgreater(param0.s0, param1.s0), isgreater(param0.s1, param1.s1),
++               isgreater(param0.s2, param1.s2), isgreater(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isgreater (float8 param0, float8 param1)
++{return (int8)(isgreater(param0.s0, param1.s0), isgreater(param0.s1, param1.s1),
++               isgreater(param0.s2, param1.s2), isgreater(param0.s3, param1.s3),
++               isgreater(param0.s4, param1.s4), isgreater(param0.s5, param1.s5),
++               isgreater(param0.s6, param1.s6), isgreater(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isgreater (float16 param0, float16 param1)
++{return (int16)(isgreater(param0.s0, param1.s0), isgreater(param0.s1, param1.s1),
++                isgreater(param0.s2, param1.s2), isgreater(param0.s3, param1.s3),
++                isgreater(param0.s4, param1.s4), isgreater(param0.s5, param1.s5),
++                isgreater(param0.s6, param1.s6), isgreater(param0.s7, param1.s7),
++                isgreater(param0.s8, param1.s8), isgreater(param0.s9, param1.s9),
++                isgreater(param0.sa, param1.sa), isgreater(param0.sb, param1.sb),
++                isgreater(param0.sc, param1.sc), isgreater(param0.sd, param1.sd),
++                isgreater(param0.se, param1.se), isgreater(param0.sf, param1.sf)); }
++
++
++//longn isgreater (doublen x, doublen y)
++
++
++//intn isgreaterequal (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isgreaterequal (float2 param0, float2 param1)
++{return (int2)(isgreaterequal(param0.s0, param1.s0), isgreaterequal(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isgreaterequal (float3 param0, float3 param1)
++{return (int3)(isgreaterequal(param0.s0, param1.s0), isgreaterequal(param0.s1, param1.s1),
++               isgreaterequal(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isgreaterequal (float4 param0, float4 param1)
++{return (int4)(isgreaterequal(param0.s0, param1.s0), isgreaterequal(param0.s1, param1.s1),
++               isgreaterequal(param0.s2, param1.s2), isgreaterequal(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isgreaterequal (float8 param0, float8 param1)
++{return (int8)(isgreaterequal(param0.s0, param1.s0), isgreaterequal(param0.s1, param1.s1),
++               isgreaterequal(param0.s2, param1.s2), isgreaterequal(param0.s3, param1.s3),
++               isgreaterequal(param0.s4, param1.s4), isgreaterequal(param0.s5, param1.s5),
++               isgreaterequal(param0.s6, param1.s6), isgreaterequal(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isgreaterequal (float16 param0, float16 param1)
++{return (int16)(isgreaterequal(param0.s0, param1.s0), isgreaterequal(param0.s1, param1.s1),
++                isgreaterequal(param0.s2, param1.s2), isgreaterequal(param0.s3, param1.s3),
++                isgreaterequal(param0.s4, param1.s4), isgreaterequal(param0.s5, param1.s5),
++                isgreaterequal(param0.s6, param1.s6), isgreaterequal(param0.s7, param1.s7),
++                isgreaterequal(param0.s8, param1.s8), isgreaterequal(param0.s9, param1.s9),
++                isgreaterequal(param0.sa, param1.sa), isgreaterequal(param0.sb, param1.sb),
++                isgreaterequal(param0.sc, param1.sc), isgreaterequal(param0.sd, param1.sd),
++                isgreaterequal(param0.se, param1.se), isgreaterequal(param0.sf, param1.sf)); }
++
++
++//longn isgreaterequal (doublen x, doublen y)
++
++
++//intn isless (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isless (float2 param0, float2 param1)
++{return (int2)(isless(param0.s0, param1.s0), isless(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isless (float3 param0, float3 param1)
++{return (int3)(isless(param0.s0, param1.s0), isless(param0.s1, param1.s1),
++               isless(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isless (float4 param0, float4 param1)
++{return (int4)(isless(param0.s0, param1.s0), isless(param0.s1, param1.s1),
++               isless(param0.s2, param1.s2), isless(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isless (float8 param0, float8 param1)
++{return (int8)(isless(param0.s0, param1.s0), isless(param0.s1, param1.s1),
++               isless(param0.s2, param1.s2), isless(param0.s3, param1.s3),
++               isless(param0.s4, param1.s4), isless(param0.s5, param1.s5),
++               isless(param0.s6, param1.s6), isless(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isless (float16 param0, float16 param1)
++{return (int16)(isless(param0.s0, param1.s0), isless(param0.s1, param1.s1),
++                isless(param0.s2, param1.s2), isless(param0.s3, param1.s3),
++                isless(param0.s4, param1.s4), isless(param0.s5, param1.s5),
++                isless(param0.s6, param1.s6), isless(param0.s7, param1.s7),
++                isless(param0.s8, param1.s8), isless(param0.s9, param1.s9),
++                isless(param0.sa, param1.sa), isless(param0.sb, param1.sb),
++                isless(param0.sc, param1.sc), isless(param0.sd, param1.sd),
++                isless(param0.se, param1.se), isless(param0.sf, param1.sf)); }
++
++
++//longn isless (doublen x, doublen y)
++
++
++//intn islessequal (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 islessequal (float2 param0, float2 param1)
++{return (int2)(islessequal(param0.s0, param1.s0), islessequal(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 islessequal (float3 param0, float3 param1)
++{return (int3)(islessequal(param0.s0, param1.s0), islessequal(param0.s1, param1.s1),
++               islessequal(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 islessequal (float4 param0, float4 param1)
++{return (int4)(islessequal(param0.s0, param1.s0), islessequal(param0.s1, param1.s1),
++               islessequal(param0.s2, param1.s2), islessequal(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 islessequal (float8 param0, float8 param1)
++{return (int8)(islessequal(param0.s0, param1.s0), islessequal(param0.s1, param1.s1),
++               islessequal(param0.s2, param1.s2), islessequal(param0.s3, param1.s3),
++               islessequal(param0.s4, param1.s4), islessequal(param0.s5, param1.s5),
++               islessequal(param0.s6, param1.s6), islessequal(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 islessequal (float16 param0, float16 param1)
++{return (int16)(islessequal(param0.s0, param1.s0), islessequal(param0.s1, param1.s1),
++                islessequal(param0.s2, param1.s2), islessequal(param0.s3, param1.s3),
++                islessequal(param0.s4, param1.s4), islessequal(param0.s5, param1.s5),
++                islessequal(param0.s6, param1.s6), islessequal(param0.s7, param1.s7),
++                islessequal(param0.s8, param1.s8), islessequal(param0.s9, param1.s9),
++                islessequal(param0.sa, param1.sa), islessequal(param0.sb, param1.sb),
++                islessequal(param0.sc, param1.sc), islessequal(param0.sd, param1.sd),
++                islessequal(param0.se, param1.se), islessequal(param0.sf, param1.sf)); }
++
++
++//longn islessequal (doublen x, doublen y)
++
++
++//intn islessgreater (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 islessgreater (float2 param0, float2 param1)
++{return (int2)(islessgreater(param0.s0, param1.s0), islessgreater(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 islessgreater (float3 param0, float3 param1)
++{return (int3)(islessgreater(param0.s0, param1.s0), islessgreater(param0.s1, param1.s1),
++               islessgreater(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 islessgreater (float4 param0, float4 param1)
++{return (int4)(islessgreater(param0.s0, param1.s0), islessgreater(param0.s1, param1.s1),
++               islessgreater(param0.s2, param1.s2), islessgreater(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 islessgreater (float8 param0, float8 param1)
++{return (int8)(islessgreater(param0.s0, param1.s0), islessgreater(param0.s1, param1.s1),
++               islessgreater(param0.s2, param1.s2), islessgreater(param0.s3, param1.s3),
++               islessgreater(param0.s4, param1.s4), islessgreater(param0.s5, param1.s5),
++               islessgreater(param0.s6, param1.s6), islessgreater(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 islessgreater (float16 param0, float16 param1)
++{return (int16)(islessgreater(param0.s0, param1.s0), islessgreater(param0.s1, param1.s1),
++                islessgreater(param0.s2, param1.s2), islessgreater(param0.s3, param1.s3),
++                islessgreater(param0.s4, param1.s4), islessgreater(param0.s5, param1.s5),
++                islessgreater(param0.s6, param1.s6), islessgreater(param0.s7, param1.s7),
++                islessgreater(param0.s8, param1.s8), islessgreater(param0.s9, param1.s9),
++                islessgreater(param0.sa, param1.sa), islessgreater(param0.sb, param1.sb),
++                islessgreater(param0.sc, param1.sc), islessgreater(param0.sd, param1.sd),
++                islessgreater(param0.se, param1.se), islessgreater(param0.sf, param1.sf)); }
++
++
++//longn islessgreater (doublen x, doublen y)
++
++
++//intn isfinite (floatn
++
++INLINE_OVERLOADABLE int2 isfinite (float2 param0)
++{return (int2)(isfinite(param0.s0), isfinite(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 isfinite (float3 param0)
++{return (int3)(isfinite(param0.s0), isfinite(param0.s1),
++               isfinite(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 isfinite (float4 param0)
++{return (int4)(isfinite(param0.s0), isfinite(param0.s1),
++               isfinite(param0.s2), isfinite(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 isfinite (float8 param0)
++{return (int8)(isfinite(param0.s0), isfinite(param0.s1),
++               isfinite(param0.s2), isfinite(param0.s3),
++               isfinite(param0.s4), isfinite(param0.s5),
++               isfinite(param0.s6), isfinite(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 isfinite (float16 param0)
++{return (int16)(isfinite(param0.s0), isfinite(param0.s1),
++                isfinite(param0.s2), isfinite(param0.s3),
++                isfinite(param0.s4), isfinite(param0.s5),
++                isfinite(param0.s6), isfinite(param0.s7),
++                isfinite(param0.s8), isfinite(param0.s9),
++                isfinite(param0.sa), isfinite(param0.sb),
++                isfinite(param0.sc), isfinite(param0.sd),
++                isfinite(param0.se), isfinite(param0.sf)); }
++
++
++//longn isfinite (doublen)
++
++
++//intn isinf (floatn)
++
++INLINE_OVERLOADABLE int2 isinf (float2 param0)
++{return (int2)(isinf(param0.s0), isinf(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 isinf (float3 param0)
++{return (int3)(isinf(param0.s0), isinf(param0.s1),
++               isinf(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 isinf (float4 param0)
++{return (int4)(isinf(param0.s0), isinf(param0.s1),
++               isinf(param0.s2), isinf(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 isinf (float8 param0)
++{return (int8)(isinf(param0.s0), isinf(param0.s1),
++               isinf(param0.s2), isinf(param0.s3),
++               isinf(param0.s4), isinf(param0.s5),
++               isinf(param0.s6), isinf(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 isinf (float16 param0)
++{return (int16)(isinf(param0.s0), isinf(param0.s1),
++                isinf(param0.s2), isinf(param0.s3),
++                isinf(param0.s4), isinf(param0.s5),
++                isinf(param0.s6), isinf(param0.s7),
++                isinf(param0.s8), isinf(param0.s9),
++                isinf(param0.sa), isinf(param0.sb),
++                isinf(param0.sc), isinf(param0.sd),
++                isinf(param0.se), isinf(param0.sf)); }
++
++
++//longn isinf (doublen)
++
++
++//intn isnan (floatn)
++
++INLINE_OVERLOADABLE int2 isnan (float2 param0)
++{return (int2)(isnan(param0.s0), isnan(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 isnan (float3 param0)
++{return (int3)(isnan(param0.s0), isnan(param0.s1),
++               isnan(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 isnan (float4 param0)
++{return (int4)(isnan(param0.s0), isnan(param0.s1),
++               isnan(param0.s2), isnan(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 isnan (float8 param0)
++{return (int8)(isnan(param0.s0), isnan(param0.s1),
++               isnan(param0.s2), isnan(param0.s3),
++               isnan(param0.s4), isnan(param0.s5),
++               isnan(param0.s6), isnan(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 isnan (float16 param0)
++{return (int16)(isnan(param0.s0), isnan(param0.s1),
++                isnan(param0.s2), isnan(param0.s3),
++                isnan(param0.s4), isnan(param0.s5),
++                isnan(param0.s6), isnan(param0.s7),
++                isnan(param0.s8), isnan(param0.s9),
++                isnan(param0.sa), isnan(param0.sb),
++                isnan(param0.sc), isnan(param0.sd),
++                isnan(param0.se), isnan(param0.sf)); }
++
++
++//longn isnan (doublen)
++
++
++//intn isnormal (floatn)
++
++INLINE_OVERLOADABLE int2 isnormal (float2 param0)
++{return (int2)(isnormal(param0.s0), isnormal(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 isnormal (float3 param0)
++{return (int3)(isnormal(param0.s0), isnormal(param0.s1),
++               isnormal(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 isnormal (float4 param0)
++{return (int4)(isnormal(param0.s0), isnormal(param0.s1),
++               isnormal(param0.s2), isnormal(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 isnormal (float8 param0)
++{return (int8)(isnormal(param0.s0), isnormal(param0.s1),
++               isnormal(param0.s2), isnormal(param0.s3),
++               isnormal(param0.s4), isnormal(param0.s5),
++               isnormal(param0.s6), isnormal(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 isnormal (float16 param0)
++{return (int16)(isnormal(param0.s0), isnormal(param0.s1),
++                isnormal(param0.s2), isnormal(param0.s3),
++                isnormal(param0.s4), isnormal(param0.s5),
++                isnormal(param0.s6), isnormal(param0.s7),
++                isnormal(param0.s8), isnormal(param0.s9),
++                isnormal(param0.sa), isnormal(param0.sb),
++                isnormal(param0.sc), isnormal(param0.sd),
++                isnormal(param0.se), isnormal(param0.sf)); }
++
++
++//longn isnormal (doublen)
++
++
++//intn isordered (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isordered (float2 param0, float2 param1)
++{return (int2)(isordered(param0.s0, param1.s0), isordered(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isordered (float3 param0, float3 param1)
++{return (int3)(isordered(param0.s0, param1.s0), isordered(param0.s1, param1.s1),
++               isordered(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isordered (float4 param0, float4 param1)
++{return (int4)(isordered(param0.s0, param1.s0), isordered(param0.s1, param1.s1),
++               isordered(param0.s2, param1.s2), isordered(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isordered (float8 param0, float8 param1)
++{return (int8)(isordered(param0.s0, param1.s0), isordered(param0.s1, param1.s1),
++               isordered(param0.s2, param1.s2), isordered(param0.s3, param1.s3),
++               isordered(param0.s4, param1.s4), isordered(param0.s5, param1.s5),
++               isordered(param0.s6, param1.s6), isordered(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isordered (float16 param0, float16 param1)
++{return (int16)(isordered(param0.s0, param1.s0), isordered(param0.s1, param1.s1),
++                isordered(param0.s2, param1.s2), isordered(param0.s3, param1.s3),
++                isordered(param0.s4, param1.s4), isordered(param0.s5, param1.s5),
++                isordered(param0.s6, param1.s6), isordered(param0.s7, param1.s7),
++                isordered(param0.s8, param1.s8), isordered(param0.s9, param1.s9),
++                isordered(param0.sa, param1.sa), isordered(param0.sb, param1.sb),
++                isordered(param0.sc, param1.sc), isordered(param0.sd, param1.sd),
++                isordered(param0.se, param1.se), isordered(param0.sf, param1.sf)); }
++
++
++//longn isordered (doublen x, doublen y)
++
++
++//intn isunordered (floatn x, floatn y)
++
++INLINE_OVERLOADABLE int2 isunordered (float2 param0, float2 param1)
++{return (int2)(isunordered(param0.s0, param1.s0), isunordered(param0.s1, param1.s1)); }
++
++INLINE_OVERLOADABLE int3 isunordered (float3 param0, float3 param1)
++{return (int3)(isunordered(param0.s0, param1.s0), isunordered(param0.s1, param1.s1),
++               isunordered(param0.s2, param1.s2)); }
++
++INLINE_OVERLOADABLE int4 isunordered (float4 param0, float4 param1)
++{return (int4)(isunordered(param0.s0, param1.s0), isunordered(param0.s1, param1.s1),
++               isunordered(param0.s2, param1.s2), isunordered(param0.s3, param1.s3)); }
++
++INLINE_OVERLOADABLE int8 isunordered (float8 param0, float8 param1)
++{return (int8)(isunordered(param0.s0, param1.s0), isunordered(param0.s1, param1.s1),
++               isunordered(param0.s2, param1.s2), isunordered(param0.s3, param1.s3),
++               isunordered(param0.s4, param1.s4), isunordered(param0.s5, param1.s5),
++               isunordered(param0.s6, param1.s6), isunordered(param0.s7, param1.s7)); }
++
++INLINE_OVERLOADABLE int16 isunordered (float16 param0, float16 param1)
++{return (int16)(isunordered(param0.s0, param1.s0), isunordered(param0.s1, param1.s1),
++                isunordered(param0.s2, param1.s2), isunordered(param0.s3, param1.s3),
++                isunordered(param0.s4, param1.s4), isunordered(param0.s5, param1.s5),
++                isunordered(param0.s6, param1.s6), isunordered(param0.s7, param1.s7),
++                isunordered(param0.s8, param1.s8), isunordered(param0.s9, param1.s9),
++                isunordered(param0.sa, param1.sa), isunordered(param0.sb, param1.sb),
++                isunordered(param0.sc, param1.sc), isunordered(param0.sd, param1.sd),
++                isunordered(param0.se, param1.se), isunordered(param0.sf, param1.sf)); }
++
++
++//longn isunordered (doublen x, doublen y)
++
++
++//intn signbit (floatn)
++
++INLINE_OVERLOADABLE int2 signbit (float2 param0)
++{return (int2)(signbit(param0.s0), signbit(param0.s1)); }
++
++INLINE_OVERLOADABLE int3 signbit (float3 param0)
++{return (int3)(signbit(param0.s0), signbit(param0.s1),
++               signbit(param0.s2)); }
++
++INLINE_OVERLOADABLE int4 signbit (float4 param0)
++{return (int4)(signbit(param0.s0), signbit(param0.s1),
++               signbit(param0.s2), signbit(param0.s3)); }
++
++INLINE_OVERLOADABLE int8 signbit (float8 param0)
++{return (int8)(signbit(param0.s0), signbit(param0.s1),
++               signbit(param0.s2), signbit(param0.s3),
++               signbit(param0.s4), signbit(param0.s5),
++               signbit(param0.s6), signbit(param0.s7)); }
++
++INLINE_OVERLOADABLE int16 signbit (float16 param0)
++{return (int16)(signbit(param0.s0), signbit(param0.s1),
++                signbit(param0.s2), signbit(param0.s3),
++                signbit(param0.s4), signbit(param0.s5),
++                signbit(param0.s6), signbit(param0.s7),
++                signbit(param0.s8), signbit(param0.s9),
++                signbit(param0.sa), signbit(param0.sb),
++                signbit(param0.sc), signbit(param0.sd),
++                signbit(param0.se), signbit(param0.sf)); }
++
++
++//longn signbit (doublen)
++
++
++//int any (igentype x)
++
++
++//int all (igentype x)
++
++
diff --git a/debian/source/options b/debian/source/options
index b818bd4..f3c9f63 100644
--- a/debian/source/options
+++ b/debian/source/options
@@ -1,6 +1,7 @@
 extend-diff-ignore="(^|/)utests/.*\.bmp"
 extend-diff-ignore="(^|/)backend/src/ocl_stdlib_str.cpp"
 extend-diff-ignore="(^|/)backend/src/ocl_common_defines_str.cpp"
+extend-diff-ignore="(^|/)backend/src/ocl_vector.h"
 extend-diff-ignore="(^|/)CMakeFiles/CMakeDetermineCompilerABI_C.bin"
 extend-diff-ignore="(^|/)CMakeFiles/CMakeDetermineCompilerABI_CXX.bin"
 extend-diff-ignore="(^|/)CMakeFiles/CompilerIdCXX/a.out"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opencl/beignet.git



More information about the Pkg-opencl-devel mailing list