debian/0000755000000000000000000000000012232033711007160 5ustar debian/clean0000644000000000000000000000064512232031176010175 0ustar CMakeFiles/CMakeDetermineCompilerABI_C.bin CMakeFiles/CMakeDetermineCompilerABI_CXX.bin CMakeFiles/CompilerIdC/a.out CMakeFiles/CompilerIdCXX/a.out backend/src/ocl_common_defines_str.cpp backend/src/ocl_stdlib_str.cpp backend/src/ocl_vector.h kernels/compiler_ceil.bin src/kernels/cl_internal_copy_buf_align16_str.c src/kernels/cl_internal_copy_buf_align1_str.c src/kernels/cl_internal_copy_buf_align4_str.c utests/*.bmp debian/changelog0000644000000000000000000001237612232033371011045 0ustar beignet (0.3-1) unstable; urgency=low * New upstream release -- Simon Richter Wed, 23 Oct 2013 21:33:44 +0200 beignet (0.2+git20130928+187c17e-1) experimental; urgency=low * New upstream release -- Simon Richter Sat, 28 Sep 2013 14:19:29 +1000 beignet (0.2+git20130816+cc09b26-1) experimental; urgency=low * New upstream release -- Simon Richter Fri, 16 Aug 2013 12:07:35 +0200 beignet (0.2+git20130807+c4d1f40-1) experimental; urgency=low * New upstream release -- Simon Richter Wed, 07 Aug 2013 16:14:06 +0200 beignet (0.2+git20130730+da26376-1) experimental; urgency=low * New upstream release -- Simon Richter Tue, 30 Jul 2013 13:43:36 +0200 beignet (0.2+git20130710+613e829-1) experimental; urgency=low * New upstream release -- Simon Richter Wed, 10 Jul 2013 15:25:14 +0200 beignet (0.2-2) unstable; urgency=low * Patch OpenCL C version -- Simon Richter Fri, 05 Jul 2013 15:27:32 +0200 beignet (0.2-1) unstable; urgency=low * New upstream release (Closes: #712903) -- Simon Richter Fri, 05 Jul 2013 15:01:51 +0200 beignet (0.1+git20130703+84f63e8-1) unstable; urgency=low * New upstream release -- Simon Richter Wed, 03 Jul 2013 09:52:32 +0200 beignet (0.1+git20130626+41005e0-1) unstable; urgency=low * New upstream release -- Simon Richter Wed, 26 Jun 2013 10:06:29 +0200 beignet (0.1+git20130625+97c3a9b-1) unstable; urgency=low * New upstream release -- Simon Richter Tue, 25 Jun 2013 13:52:00 +0200 beignet (0.1+git20130621+30586bf-1) unstable; urgency=low * New upstream release -- Simon Richter Fri, 21 Jun 2013 12:08:49 +0200 beignet (0.1+git20130619+42967d2-2) unstable; urgency=low * Drop EGL support for kFreeBSD for the time being -- Simon Richter Thu, 20 Jun 2013 11:18:59 +0200 beignet (0.1+git20130619+42967d2-1) unstable; urgency=low * New upstream release * Build against Mesa 9 * Enable GL sharing extension -- Simon Richter Wed, 19 Jun 2013 20:48:03 +0200 beignet (0.1+git20130614+89b5e40-2) unstable; urgency=low * Add Ubuntu support * Upload to unstable to get an ICD capable package there -- Simon Richter Fri, 14 Jun 2013 17:40:45 +0200 beignet (0.1+git20130614+89b5e40-1) experimental; urgency=low * New upstream release -- Simon Richter Fri, 14 Jun 2013 15:22:18 +0200 beignet (0.1+git20130521+a7ea35c-1) experimental; urgency=low * Rename binary package -- Simon Richter Tue, 21 May 2013 10:48:39 +0200 beignet (0.1+git20130521+a7ea35c-1~prerename) experimental; urgency=low * New upstream release * Move libraries to /usr/lib/beignet (should not be used directly) -- Simon Richter Tue, 21 May 2013 09:17:45 +0200 beignet (0.1+git20130514+19e9c58-1) experimental; urgency=low * New upstream release * Added a number of tentative patches -- Simon Richter Tue, 14 May 2013 20:04:29 +0200 beignet (0.1+git20130502+63e60ed-1) experimental; urgency=low * New upstream release -- Simon Richter Mon, 06 May 2013 06:30:32 +0200 beignet (0.1+git20130426+0c8f6fe-1) experimental; urgency=low * New upstream release -- Simon Richter Fri, 26 Apr 2013 14:42:21 +0200 beignet (0.1+git20130422+003fac5-2) experimental; urgency=low * Add patch for select() * Add patch for fmin() / fmax() -- Simon Richter Mon, 22 Apr 2013 18:26:01 +0200 beignet (0.1+git20130422+003fac5-1) experimental; urgency=low * New upstream release -- Simon Richter Mon, 22 Apr 2013 15:10:54 +0200 beignet (0.1+git20130419+9c11c18-1) experimental; urgency=low * Add more functionality patches * New upstream release -- Simon Richter Fri, 19 Apr 2013 14:14:39 +0200 beignet (0.1+git20130418+0546d2e-2) experimental; urgency=low * Add functionality patches * Use clang 3.0 command line syntax -- Simon Richter Fri, 19 Apr 2013 09:53:23 +0200 beignet (0.1+git20130418+0546d2e-1) experimental; urgency=low * New upstream release -- Simon Richter Thu, 18 Apr 2013 11:51:37 +0200 beignet (0.1-1) unstable; urgency=low * New upstream release -- Simon Richter Tue, 16 Apr 2013 17:16:18 +0200 beignet (0.0.0+git2013.04.11+e6b503e-1) unstable; urgency=low * New upstream release -- Simon Richter Mon, 15 Apr 2013 18:22:45 +0200 beignet (0.0.0+git2013.04.01+d1b234c-4) unstable; urgency=low * Build fix for kfreebsd-* -- Simon Richter Fri, 12 Apr 2013 11:22:36 +0200 beignet (0.0.0+git2013.04.01+d1b234c-3) unstable; urgency=low * Adjust Build-Depends, Architecture list -- Simon Richter Fri, 12 Apr 2013 10:32:36 +0200 beignet (0.0.0+git2013.04.01+d1b234c-2) unstable; urgency=low * Add patch to support size queries in device info -- Simon Richter Thu, 11 Apr 2013 14:00:59 +0200 beignet (0.0.0+git2013.04.01+d1b234c-1) unstable; urgency=low * Initial release. -- Simon Richter Tue, 09 Apr 2013 17:14:00 +0200 debian/rules0000755000000000000000000000022012133035713010236 0ustar #!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@ --buildsystem cmake --parallel debian/compat0000644000000000000000000000000212125714075010370 0ustar 9 debian/beignet-dev.install0000644000000000000000000000005212146620532012745 0ustar usr/include/CL/cl_intel.h /usr/include/CL debian/source/0000755000000000000000000000000012232031202010451 5ustar debian/source/format0000644000000000000000000000001412125713500011670 0ustar 3.0 (quilt) debian/source/include-binaries0000644000000000000000000002567412160377772013660 0ustar obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/context.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen/gen_mesa_disasm.c.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_context.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_encoder.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_insn_scheduling.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_insn_selection.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_program.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/gen_reg_allocation.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/backend/program.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/constant.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/context.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/function.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/image.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/instruction.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/liveness.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/lowering.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/profile.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/register.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/sampler.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/type.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/unit.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ir/value.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/llvm/llvm_gen_backend.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/llvm/llvm_passes.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/llvm/llvm_scalarize.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/llvm/llvm_to_gen.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ocl_common_defines_str.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/ocl_stdlib_str.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/alloc.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/assert.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/cvar.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/intrusive_list.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/mutex.cpp.o obj-x86_64-linux-gnu/backend/src/CMakeFiles/gbe.dir/sys/platform.cpp.o obj-x86_64-linux-gnu/backend/src/libgbe.so obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_alloc.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_api.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_command_queue.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_command_queue_gen7.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_context.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_device_id.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_driver.cpp.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_driver_defs.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_event.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_extensions.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_image.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_kernel.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_khr_icd.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_mem.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_platform_id.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_program.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/cl_sampler.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/intel/intel_batchbuffer.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/intel/intel_driver.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/intel/intel_gpgpu.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/x11/dricommon.c.o obj-x86_64-linux-gnu/src/CMakeFiles/cl.dir/x11/va_dri2.c.o obj-x86_64-linux-gnu/src/libcl.so obj-x86_64-linux-gnu/utests/CMakeFiles/flat_address_space.dir/runtime_flat_address_space.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utest_run.dir/utest_run.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/buildin_work_dim.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/builtin_global_size.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/cl_create_kernel.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_argument_structure.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_arith_shift_right.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_array.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_array0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_array1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_array2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_array3.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_box_blur.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_box_blur_float.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_box_blur_image.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_byte_scatter.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_ceil.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_cl_finish.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_convert_uchar_sat.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_copy_buffer.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_copy_buffer_row.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_copy_image.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_copy_image1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_copy_image_3d.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_displacement_map_element.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_double.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_double_2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_fabs.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_fill_image.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_fill_image0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_fill_image_3d.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_fill_image_3d_2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_argument.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_argument0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_argument1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_argument2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_constant.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_constant0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_function_constant1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_get_image_info.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_global_constant.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_global_constant_2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_global_memory_barrier.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_group_size.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_if_else.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_insert_to_constant.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_insn_selection_masked_min_max.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_insn_selection_max.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_insn_selection_min.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_integer_division.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_integer_remainder.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_local_memory_barrier.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_local_memory_barrier_wg64.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_local_memory_two_ptr.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_lower_return0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_lower_return1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_lower_return2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_mandelbrot.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_mandelbrot_alternate.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_math.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_movforphi_undef.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_multiple_kernels.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_saturate.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_saturate_sub.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_shader_toy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_shift_right.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_short_scatter.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_sub_bytes.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_sub_shorts.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_switch.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_uint16_copy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_uint2_copy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_uint3_copy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_uint3_unaligned_copy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_uint8_copy.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_unstructured_branch0.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_unstructured_branch1.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_unstructured_branch2.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_unstructured_branch3.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_vector_load_store.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_volatile.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_write_only.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_write_only_bytes.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/compiler_write_only_shorts.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/runtime_createcontext.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/runtime_null_kernel_arg.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/utest.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/utest_assert.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/utest_error.c.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/utest_file_map.cpp.o obj-x86_64-linux-gnu/utests/CMakeFiles/utests.dir/utest_helper.cpp.o obj-x86_64-linux-gnu/utests/flat_address_space obj-x86_64-linux-gnu/utests/libutests.so obj-x86_64-linux-gnu/utests/utest_run debian/copyright0000644000000000000000000000445412131030031011110 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: beignet Source: http://cgit.freedesktop.org/beignet/ Files: * Copyright: 2012 Intel Corporation License: LGPL-2.0+ Files: backend/src/sys/intrusive_list.* Copyright: 2007 Maciej Sinilo License: MIT Files: backend/src/backend/gen_register.hpp Copyright: 2012 Intel Corporation License: MIT Files: debian/* Copyright: 2013 Simon Richter License: LGPL-2.0+ License: LGPL-2.0+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . . On Debian systems, the complete text of the GNU Lesser General Public License can be found in "/usr/share/common-licenses/LGPL-2". License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. debian/control0000644000000000000000000000304112175730254010575 0ustar Source: beignet Priority: extra Maintainer: Simon Richter 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], libegl1-mesa-dev (>= 9) [!kfreebsd-any], libgbm-dev (>= 9) [!kfreebsd-any] Standards-Version: 3.9.4 Section: libs Homepage: http://cgit.freedesktop.org/beignet/ Package: beignet-dev Section: libdevel Architecture: i386 amd64 kfreebsd-i386 kfreebsd-amd64 Depends: beignet (= ${binary:Version}), ${misc:Depends} Description: Intel OpenCL library OpenCL (Open Computing Language) is a multivendor open standard for general-purpose parallel programming of heterogeneous systems that include CPUs, GPUs and other processors. . This package contains the development files for directly linking against the Intel implementation. Package: beignet Section: libs Architecture: i386 amd64 kfreebsd-i386 kfreebsd-amd64 Depends: ${shlibs:Depends}, ${misc:Depends} Conflicts: beignet0.0.1 Replaces: beignet0.0.1 Provides: opencl-icd Description: Intel OpenCL library OpenCL (Open Computing Language) is a multivendor open standard for general-purpose parallel programming of heterogeneous systems that include CPUs, GPUs and other processors. . This package contains the shared library for the Intel implementation. debian/patches/0000755000000000000000000000000012232031370010606 5ustar debian/patches/debug0000644000000000000000000000143512160400276011627 0ustar Description: Enhance debug output Author: Simon Richter Last-Update: 2013-05-21 Index: beignet-0.1+git20130619+42967d2/src/cl_utils.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/src/cl_utils.h 2013-06-19 21:04:25.066667328 +0200 +++ beignet-0.1+git20130619+42967d2/src/cl_utils.h 2013-06-19 21:04:28.066667194 +0200 @@ -80,6 +80,7 @@ #define FATAL(...) \ do { \ + fprintf(stderr, "in function %s:\n", __FUNCTION__); \ fprintf(stderr, "error: "); \ fprintf(stderr, __VA_ARGS__); \ fprintf(stderr, "\n"); \ debian/patches/deprecated-in-utest0000644000000000000000000000117712160400303014401 0ustar Description: Utest requires deprecated function names Author: Simon Richter Last-Update: 2013-06-19 Index: beignet-0.1+git20130619+42967d2/utests/utest_helper.hpp =================================================================== --- beignet-0.1+git20130619+42967d2.orig/utests/utest_helper.hpp 2013-06-19 21:04:23.714667388 +0200 +++ beignet-0.1+git20130619+42967d2/utests/utest_helper.hpp 2013-06-19 21:04:35.066666882 +0200 @@ -25,6 +25,8 @@ #ifndef __UTEST_HELPER_HPP__ #define __UTEST_HELPER_HPP__ +#define CL_USE_DEPRECATED_OPENCL_1_1_APIS + #include "CL/cl.h" #include "CL/cl_intel.h" #include "utest.hpp" debian/patches/opencl-c-version0000644000000000000000000000157312165547347013747 0ustar From 488ab527ed35986a360a5a3d92d833409d3f43de Mon Sep 17 00:00:00 2001 From: Simon Richter Date: Fri, 5 Jul 2013 15:25:12 +0200 Subject: [PATCH] Fix OpenCL C version format To: beignet@lists.freedesktop.org --- src/cl_gt_device.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cl_gt_device.h b/src/cl_gt_device.h index a535452..8fe863a 100644 --- a/src/cl_gt_device.h +++ b/src/cl_gt_device.h @@ -70,7 +70,7 @@ DECL_INFO_STRING(name, "Intel HD Graphics Family") DECL_INFO_STRING(vendor, "Intel") DECL_INFO_STRING(version, OCL_VERSION_STRING) DECL_INFO_STRING(profile, "FULL_PROFILE") -DECL_INFO_STRING(opencl_c_version, "OpenCL 1.10") +DECL_INFO_STRING(opencl_c_version, "OpenCL C 1.1") DECL_INFO_STRING(extensions, "") DECL_INFO_STRING(built_in_kernels, "") DECL_INFO_STRING(driver_version, LIBCL_VERSION_STRING) -- 1.7.10.4 debian/patches/series0000644000000000000000000000006012232031327012021 0ustar debug flags khronos deprecated-in-utest private debian/patches/vector0000644000000000000000000125452012175724113012056 0ustar Description: 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 --- 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: , Bug: Bug-Debian: http://bugs.debian.org/ Bug-Ubuntu: https://launchpad.net/bugs/ Forwarded: Reviewed-By: Last-Update: --- /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) + + debian/patches/private0000644000000000000000000000354512221454501012215 0ustar Description: Install as private library Author: Simon Richter Last-Update: 2013-05-21 Index: beignet-0.2+git20130928+187c17e/backend/src/CMakeLists.txt =================================================================== --- beignet-0.2+git20130928+187c17e.orig/backend/src/CMakeLists.txt 2013-09-26 10:55:59.000000000 +0200 +++ beignet-0.2+git20130928+187c17e/backend/src/CMakeLists.txt 2013-09-28 06:20:45.396509466 +0200 @@ -159,11 +159,11 @@ ADD_EXECUTABLE(gbe_bin_generater gbe_bin_generater.cpp) TARGET_LINK_LIBRARIES(gbe_bin_generater gbe) -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) -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+git20130928+187c17e/src/CMakeLists.txt =================================================================== --- beignet-0.2+git20130928+187c17e.orig/src/CMakeLists.txt 2013-09-26 10:55:59.000000000 +0200 +++ beignet-0.2+git20130928+187c17e/src/CMakeLists.txt 2013-09-28 06:21:15.052511187 +0200 @@ -47,6 +47,8 @@ SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic,--allow-shlib-undefined") +SET(CMAKE_INSTALL_RPATH /usr/lib/beignet) + link_directories (${LLVM_LIBRARY_DIR}) add_library(cl SHARED ${OPENCL_SRC}) target_link_libraries( @@ -59,4 +61,4 @@ ${DRM_LIBRARY} ${OPENGL_LIBRARIES} ${OPTIONAL_EGL_LIBRARY}) -install (TARGETS cl LIBRARY DESTINATION lib) +install (TARGETS cl LIBRARY DESTINATION lib/beignet) debian/patches/khronos0000644000000000000000000071635112160400302012224 0ustar Description: Use Khronos Group headers Author: Simon Richter Last-Update: 2013-05-21 Index: beignet-0.1+git20130619+42967d2/include/CL/cl_ext.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl_ext.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl_ext.h 2013-06-19 21:04:33.466666953 +0200 @@ -1,213 +1 @@ -/******************************************************************************* - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11928 $ on $Date: 2010-07-13 09:04:56 -0700 (Tue, 13 Jul 2010) $ */ - -/* cl_ext.h contains OpenCL extensions which don't have external */ -/* (OpenGL, D3D) dependencies. */ - -#ifndef __CL_EXT_H -#define __CL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include - #include -#else - #include -#endif - -/* cl_khr_fp64 extension - no extension #define since it has no functions */ -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 - -/* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 - -/* Memory object destruction - * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR - * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. - * - * The application may not call CL api's with the cl_mem object passed to the pfn_notify. - * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - */ -#define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/* Context Logging Functions - * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. - * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger - */ -#define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - -/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; - - -/************************ -* cl_khr_icd extension * -************************/ -#define cl_khr_icd 1 - -/* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 - -/* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 - -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); - - -/****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ -/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 - - -/********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 - - -#ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) - - - -#endif /* CL_VERSION_1_1 */ - -#ifdef __cplusplus -} -#endif - - -#endif /* __CL_EXT_H */ +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/opencl.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/opencl.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/opencl.h 2013-06-19 21:04:33.466666953 +0200 @@ -1,54 +1 @@ -/******************************************************************************* - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_H -#define __OPENCL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - -#include -#include -#include -#include - -#else - -#include -#include -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_H */ - +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl_d3d10.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl_d3d10.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl_d3d10.h 2013-06-19 21:04:33.470666953 +0200 @@ -1,126 +1 @@ -/********************************************************************************** - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -#ifndef __OPENCL_CL_D3D10_H -#define __OPENCL_CL_D3D10_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * cl_khr_d3d10_sharing */ -#define cl_khr_d3d10_sharing 1 - -typedef cl_uint cl_d3d10_device_source_khr; -typedef cl_uint cl_d3d10_device_set_khr; - -/******************************************************************************/ - -// Error Codes -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 - -// cl_d3d10_device_source_nv -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 - -// cl_d3d10_device_set_nv -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 - -// cl_context_info -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 -#define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C - -// cl_mem_info -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 - -// cl_image_info -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 - -// cl_command_type -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 - -/******************************************************************************/ - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif // __OPENCL_CL_D3D10_H - +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl.h 2013-06-19 21:04:33.474666953 +0200 @@ -1,998 +1 @@ -/******************************************************************************* - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/* $Revision: 11985 $ on $Date: 2010-07-15 11:16:06 -0700 (Thu, 15 Jul 2010) $ */ - -#ifndef __OPENCL_CL_H -#define __OPENCL_CL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ - -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; - -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_command_queue_properties; - -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; - -typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; -} cl_image_format; - - -typedef struct _cl_buffer_region { - size_t origin; - size_t size; -} cl_buffer_region; - -/******************************************************************************/ - -/* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 -#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 - -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 - -/* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 - -/* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 - -/* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 - -/* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF - -/* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -/* 0x1032 reserved for CL_DEVICE_DOUBLE_FP_CONFIG */ -/* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D - -/* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) - -/* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 - -/* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 - -/* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) - -/* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) - -/* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 - -/* cl_context_info + cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 - -/* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 - -/* cl_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) - -/* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC - -/* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE - -/* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 - -/* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 - -/* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 - -/* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 - -/* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 - -/* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 - -/* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) - -/* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 - -/* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 - -/* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 - -/* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 - -/* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 -#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 - -/* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 - -/* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 - -/* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 - -/* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 - -/* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 - -/********************************************************************************************************/ - -/* Platform API */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Context APIs */ -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Command Queue APIs */ -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS -#warning CL_USE_DEPRECATED_OPENCL_1_0_APIS is defined. These APIs are unsupported and untested in OpenCL 1.1! -/* - * WARNING: - * This API introduces mutable state into the OpenCL implementation. It has been REMOVED - * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the - * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably. - * It is likely to be non-performant. Use of this API is not advised. Use at your own risk. - * - * Software developers previously relying on this API are instructed to set the command queue - * properties when creating the queue, instead. - */ -extern CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty(cl_command_queue /* command_queue */, - cl_command_queue_properties /* properties */, - cl_bool /* enable */, - cl_command_queue_properties * /* old_properties */) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; -#endif /* CL_USE_DEPRECATED_OPENCL_1_0_APIS */ - -/* Memory Object APIs */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback( cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; - -/* Sampler APIs */ -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Kernel Object APIs */ -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; - -/* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -/* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* cb */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_origin */, - const size_t * /* host_origin */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* cb */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_origin */, - const size_t * /* host_origin */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* cb */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* cb */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK *user_func)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -/* Extension function access - * - * Returns the extension function address for the given function name, - * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or - * calling the returned function address. - */ -extern CL_API_ENTRY void * CL_API_CALL clGetExtensionFunctionAddress(const char * /* func_name */) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_H */ - +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl_platform.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl_platform.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl_platform.h 2013-06-19 21:04:33.478666953 +0200 @@ -1,1198 +1 @@ -/********************************************************************************** - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11803 $ on $Date: 2010-06-25 10:02:12 -0700 (Fri, 25 Jun 2010) $ */ - -#ifndef __CL_PLATFORM_H -#define __CL_PLATFORM_H - -#ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall -#else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK -#endif - -#ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER -#else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED -#endif - -#if (defined (_WIN32) && defined(_MSC_VER)) - -/* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; - -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#else - -#include - -/* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); - -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); - -/* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 0x1.fffffep127f -#define CL_FLT_MIN 0x1.0p-126f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 0x1.fffffffffffffp1023 -#define CL_DBL_MIN 0x1.0p-1022 -#define CL_DBL_EPSILON 0x1.0p-52 - -#define CL_M_E 2.718281828459045090796 -#define CL_M_LOG2E 1.442695040888963387005 -#define CL_M_LOG10E 0.434294481903251816668 -#define CL_M_LN2 0.693147180559945286227 -#define CL_M_LN10 2.302585092994045901094 -#define CL_M_PI 3.141592653589793115998 -#define CL_M_PI_2 1.570796326794896557999 -#define CL_M_PI_4 0.785398163397448278999 -#define CL_M_1_PI 0.318309886183790691216 -#define CL_M_2_PI 0.636619772367581382433 -#define CL_M_2_SQRTPI 1.128379167095512558561 -#define CL_M_SQRT2 1.414213562373095145475 -#define CL_M_SQRT1_2 0.707106781186547572737 - -#define CL_M_E_F 2.71828174591064f -#define CL_M_LOG2E_F 1.44269502162933f -#define CL_M_LOG10E_F 0.43429449200630f -#define CL_M_LN2_F 0.69314718246460f -#define CL_M_LN10_F 2.30258512496948f -#define CL_M_PI_F 3.14159274101257f -#define CL_M_PI_2_F 1.57079637050629f -#define CL_M_PI_4_F 0.78539818525314f -#define CL_M_1_PI_F 0.31830987334251f -#define CL_M_2_PI_F 0.63661974668503f -#define CL_M_2_SQRTPI_F 1.12837922573090f -#define CL_M_SQRT2_F 1.41421353816986f -#define CL_M_SQRT1_2_F 0.70710676908493f - -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) -#else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) -#endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF - -#endif - -#include - -/* Mirror types to GL types. Mirror types allow us to avoid deciding which headers to load based on whether we are using GL or GLES here. */ -typedef unsigned int cl_GLuint; -typedef int cl_GLint; -typedef unsigned int cl_GLenum; - -/* - * Vector types - * - * Note: OpenCL requires that all types be naturally aligned. - * This means that vector types must be naturally aligned. - * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte - * alignment of the float). The alignment qualifiers here - * will only function properly if your compiler supports them - * and if you don't actively work to defeat them. For example, - * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. - * - * Maintaining proper alignment is the user's responsibility. - */ - -/* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 -#endif - -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 -#endif - -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 -#endif - -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 -#endif - -/* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) -#else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) -#endif - -/* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 -#endif - -/* Define cl_vector types */ - -/* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_char x, y; }; - __extension__ struct{ cl_char s0, s1; }; - __extension__ struct{ cl_char lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; -#endif -}cl_char2; - -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_char x, y, z, w; }; - __extension__ struct{ cl_char s0, s1, s2, s3; }; - __extension__ struct{ cl_char2 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; -#endif -}cl_char4; - -/* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; - -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_char x, y, z, w; }; - __extension__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_char4 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; -#endif -}cl_char8; - -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_char8 lo, hi; }; -#endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; -#endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; -#endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; -#endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; -#endif -}cl_char16; - - -/* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uchar x, y; }; - __extension__ struct{ cl_uchar s0, s1; }; - __extension__ struct{ cl_uchar lo, hi; }; -#endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; -#endif -}cl_uchar2; - -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uchar x, y, z, w; }; - __extension__ struct{ cl_uchar s0, s1, s2, s3; }; - __extension__ struct{ cl_uchar2 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; -#endif -}cl_uchar4; - -/* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; - -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uchar x, y, z, w; }; - __extension__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_uchar4 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; -#endif -}cl_uchar8; - -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_uchar8 lo, hi; }; -#endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; -#endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; -#endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; -#endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; -#endif -}cl_uchar16; - - -/* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_short x, y; }; - __extension__ struct{ cl_short s0, s1; }; - __extension__ struct{ cl_short lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; -#endif -}cl_short2; - -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_short x, y, z, w; }; - __extension__ struct{ cl_short s0, s1, s2, s3; }; - __extension__ struct{ cl_short2 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; -#endif -}cl_short4; - -/* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; - -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_short x, y, z, w; }; - __extension__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_short4 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; -#endif -}cl_short8; - -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_short8 lo, hi; }; -#endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; -#endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; -#endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; -#endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; -#endif -}cl_short16; - - -/* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ushort x, y; }; - __extension__ struct{ cl_ushort s0, s1; }; - __extension__ struct{ cl_ushort lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; -#endif -}cl_ushort2; - -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ushort x, y, z, w; }; - __extension__ struct{ cl_ushort s0, s1, s2, s3; }; - __extension__ struct{ cl_ushort2 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; -#endif -}cl_ushort4; - -/* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; - -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ushort x, y, z, w; }; - __extension__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_ushort4 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; -#endif -}cl_ushort8; - -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_ushort8 lo, hi; }; -#endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; -#endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; -#endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; -#endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; -#endif -}cl_ushort16; - -/* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_int x, y; }; - __extension__ struct{ cl_int s0, s1; }; - __extension__ struct{ cl_int lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2; -#endif -}cl_int2; - -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_int x, y, z, w; }; - __extension__ struct{ cl_int s0, s1, s2, s3; }; - __extension__ struct{ cl_int2 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4; -#endif -}cl_int4; - -/* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; - -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_int x, y, z, w; }; - __extension__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_int4 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; -#endif -}cl_int8; - -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_int8 lo, hi; }; -#endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; -#endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; -#endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; -#endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; -#endif -}cl_int16; - - -/* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uint x, y; }; - __extension__ struct{ cl_uint s0, s1; }; - __extension__ struct{ cl_uint lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; -#endif -}cl_uint2; - -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uint x, y, z, w; }; - __extension__ struct{ cl_uint s0, s1, s2, s3; }; - __extension__ struct{ cl_uint2 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; -#endif -}cl_uint4; - -/* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; - -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uint x, y, z, w; }; - __extension__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_uint4 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; -#endif -}cl_uint8; - -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_uint8 lo, hi; }; -#endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; -#endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; -#endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; -#endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; -#endif -}cl_uint16; - -/* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_long x, y; }; - __extension__ struct{ cl_long s0, s1; }; - __extension__ struct{ cl_long lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2; -#endif -}cl_long2; - -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_long x, y, z, w; }; - __extension__ struct{ cl_long s0, s1, s2, s3; }; - __extension__ struct{ cl_long2 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4; -#endif -}cl_long4; - -/* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; - -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_long x, y, z, w; }; - __extension__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_long4 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; -#endif -}cl_long8; - -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_long8 lo, hi; }; -#endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; -#endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; -#endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; -#endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; -#endif -}cl_long16; - - -/* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ulong x, y; }; - __extension__ struct{ cl_ulong s0, s1; }; - __extension__ struct{ cl_ulong lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; -#endif -}cl_ulong2; - -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ulong x, y, z, w; }; - __extension__ struct{ cl_ulong s0, s1, s2, s3; }; - __extension__ struct{ cl_ulong2 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; -#endif -}cl_ulong4; - -/* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; - -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ulong x, y, z, w; }; - __extension__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_ulong4 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; -#endif -}cl_ulong8; - -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_ulong8 lo, hi; }; -#endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; -#endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; -#endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; -#endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; -#endif -}cl_ulong16; - - -/* --- cl_floatn ---- */ - -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_float x, y; }; - __extension__ struct{ cl_float s0, s1; }; - __extension__ struct{ cl_float lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; -#endif -}cl_float2; - -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_float x, y, z, w; }; - __extension__ struct{ cl_float s0, s1, s2, s3; }; - __extension__ struct{ cl_float2 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; -#endif -}cl_float4; - -/* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; - -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_float x, y, z, w; }; - __extension__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_float4 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; -#endif -}cl_float8; - -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_float8 lo, hi; }; -#endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; -#endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; -#endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; -#endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; -#endif -}cl_float16; - -/* --- cl_doublen ---- */ - -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_double x, y; }; - __extension__ struct{ cl_double s0, s1; }; - __extension__ struct{ cl_double lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; -#endif -}cl_double2; - -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_double x, y, z, w; }; - __extension__ struct{ cl_double s0, s1, s2, s3; }; - __extension__ struct{ cl_double2 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; -#endif -}cl_double4; - -/* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; - -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_double x, y, z, w; }; - __extension__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __extension__ struct{ cl_double4 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; -#endif -}cl_double8; - -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; -#if defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) - __extension__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __extension__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __extension__ struct{ cl_double8 lo, hi; }; -#endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; -#endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; -#endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; -#endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; -#endif -}cl_double16; - -/* Macro to facilitate debugging - * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. - * The first line ends with: CL_PROGRAM_STRING_BEGIN \" - * Each line thereafter of OpenCL C source must end with: \n\ - * The last line ends in "; - * - * Example: - * - * const char *my_program = CL_PROGRAM_STRING_BEGIN "\ - * kernel void foo( int a, float * b ) \n\ - * { \n\ - * // my comment \n\ - * *b[ get_global_id(0)] = a; \n\ - * } \n\ - * "; - * - * This should correctly set up the line, (column) and file information for your source - * string so you can do source level debugging. - */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - -#ifdef __cplusplus -} -#endif - -#endif /* __CL_PLATFORM_H */ +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl_gl.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl_gl.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl_gl.h 2013-06-19 21:04:33.478666953 +0200 @@ -1,155 +1 @@ -/********************************************************************************** - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -/* - * cl_gl.h contains Khronos-approved (KHR) OpenCL extensions which have - * OpenGL dependencies. The application is responsible for #including - * OpenGL or OpenGL ES headers before #including cl_gl.h. - */ - -#ifndef __OPENCL_CL_GL_H -#define __OPENCL_CL_GL_H - -#ifdef __APPLE__ -#include -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; - -/* cl_gl_object_type */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 - -/* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -/* cl_khr_gl_sharing extension */ - -#define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - -/* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - -/* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - -/* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_H */ +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl_gl_ext.h =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl_gl_ext.h 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl_gl_ext.h 2013-06-19 21:04:33.478666953 +0200 @@ -1,69 +1 @@ -/********************************************************************************** - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ - -/* cl_gl_ext.h contains vendor (non-KHR) OpenCL extensions which have */ -/* OpenGL dependencies. */ - -#ifndef __OPENCL_CL_GL_EXT_H -#define __OPENCL_CL_GL_EXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __APPLE__ - #include -#else - #include -#endif - -/* - * For each extension, follow this template - * /* cl_VEN_extname extension */ -/* #define cl_VEN_extname 1 - * ... define new types, if any - * ... define new tokens, if any - * ... define new APIs, if any - * - * If you need GLtypes here, mirror them with a cl_GLtype, rather than including a GL header - * This allows us to avoid having to decide whether to include GL headers or GLES here. - */ - -/* - * cl_khr_gl_event extension - * See section 9.9 in the OpenCL 1.1 spec for more information - */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D - -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; - -#ifdef __cplusplus -} -#endif - -#endif /* __OPENCL_CL_GL_EXT_H */ +#include_next Index: beignet-0.1+git20130619+42967d2/include/CL/cl.hpp =================================================================== --- beignet-0.1+git20130619+42967d2.orig/include/CL/cl.hpp 2013-06-19 21:04:24.122667370 +0200 +++ beignet-0.1+git20130619+42967d2/include/CL/cl.hpp 2013-06-19 21:04:33.482666952 +0200 @@ -1,4011 +1 @@ -/******************************************************************************* - * Copyright (c) 2008-2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -/*! \file - * - * \brief C++ bindings for OpenCL 1.0 (rev 48) and OpenCL 1.1 (rev 33) - * \author Benedict R. Gaster and Laurent Morichetti - * - * Additions and fixes from Brian Cole, March 3rd 2010. - * - * \version 1.1 - * \date June 2010 - * - * Optional extension support - * - * cl - * cl_ext_device_fission - * #define USE_CL_DEVICE_FISSION - */ - -/*! \mainpage - * \section intro Introduction - * For many large applications C++ is the language of choice and so it seems - * reasonable to define C++ bindings for OpenCL. - * - * - * The interface is contained with a single C++ header file \em cl.hpp and all - * definitions are contained within the namespace \em cl. There is no additional - * requirement to include \em cl.h and to use either the C++ or original C - * bindings it is enough to simply include \em cl.hpp. - * - * The bindings themselves are lightweight and correspond closely to the - * underlying C API. Using the C++ bindings introduces no additional execution - * overhead. - * - * For detail documentation on the bindings see: - * - * The OpenCL C++ Wrapper API 1.1 (revision 04) - * http://www.khronos.org/registry/cl/specs/opencl-cplusplus-1.1.pdf - * - * \section example Example - * - * The following example shows a general use case for the C++ - * bindings, including support for the optional exception feature and - * also the supplied vector and string classes, see following sections for - * decriptions of these features. - * - * \code - * #define __CL_ENABLE_EXCEPTIONS - * - * #if defined(__APPLE__) || defined(__MACOSX) - * #include - * #else - * #include - * #endif - * #include - * #include - * #include - * - * const char * helloStr = "__kernel void " - * "hello(void) " - * "{ " - * " " - * "} "; - * - * int - * main(void) - * { - * cl_int err = CL_SUCCESS; - * try { - * - * std::vector platforms; - * cl::Platform::get(&platforms); - * if (platforms.size() == 0) { - * std::cout << "Platform size 0\n"; - * return -1; - * } - * - * cl_context_properties properties[] = - * { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; - * cl::Context context(CL_DEVICE_TYPE_CPU, properties); - * - * std::vector devices = context.getInfo(); - * - * cl::Program::Sources source(1, - * std::make_pair(helloStr,strlen(helloStr))); - * cl::Program program_ = cl::Program(context, source); - * program_.build(devices); - * - * cl::Kernel kernel(program_, "hello", &err); - * - * cl::Event event; - * cl::CommandQueue queue(context, devices[0], 0, &err); - * queue.enqueueNDRangeKernel( - * kernel, - * cl::NullRange, - * cl::NDRange(4,4), - * cl::NullRange, - * NULL, - * &event); - * - * event.wait(); - * } - * catch (cl::Error err) { - * std::cerr - * << "ERROR: " - * << err.what() - * << "(" - * << err.err() - * << ")" - * << std::endl; - * } - * - * return EXIT_SUCCESS; - * } - * - * \endcode - * - */ -#ifndef CL_HPP_ -#define CL_HPP_ - -#ifdef _WIN32 -#include -#include -#if defined(USE_DX_INTEROP) -#include -#endif -#endif // _WIN32 - -// -#if defined(USE_CL_DEVICE_FISSION) -#include -#endif - -#if defined(__APPLE__) || defined(__MACOSX) -#include -#include -#else -#include -#include -#endif // !__APPLE__ - -#if !defined(CL_CALLBACK) -#define CL_CALLBACK -#endif //CL_CALLBACK - -#include - -#if !defined(__NO_STD_VECTOR) -#include -#endif - -#if !defined(__NO_STD_STRING) -#include -#endif - -#if defined(linux) || defined(__APPLE__) || defined(__MACOSX) -# include -#endif // linux - -#include - -/*! \namespace cl - * - * \brief The OpenCL C++ bindings are defined within this namespace. - * - */ -namespace cl { - -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } - -class Program; -class Device; -class Context; -class CommandQueue; -class Memory; - -#if defined(__CL_ENABLE_EXCEPTIONS) -#include -/*! \class Error - * \brief Exception class - */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! Create a new CL error exception for a given error code - * and corresponding message. - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} - - ~Error() throw() {} - - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } - - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - const cl_int err(void) const { return err_; } -}; - -#define __ERR_STR(x) #x -#else -#define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS - -//! \cond DOXYGEN_DETAIL -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clgetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) - -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) - -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) -#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) - -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) - -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) - -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) - -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) - -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) - -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) - -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS -//! \endcond - -/*! \class string - * \brief Simple string class, that provides a limited subset of std::string - * functionality but avoids many of the issues that come with that class. - */ -class string -{ -private: - ::size_t size_; - char * str_; -public: - string(void) : size_(0), str_(NULL) - { - } - - string(char * str, ::size_t size) : - size_(size), - str_(NULL) - { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } - - string(char * str) : - str_(NULL) - { - size_= ::strlen(str); - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - size_ = 0; - str_ = NULL; - } - else { - size_ = rhs.size_; - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - string(const string& rhs) - { - *this = rhs; - } - - ~string() - { - if (str_ != NULL) { - delete[] str_; - } - } - - ::size_t size(void) const { return size_; } - ::size_t length(void) const { return size(); } - - const char * c_str(void) const { return (str_) ? str_ : "";} -}; - -#if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) -#include -typedef std::string STRING_CLASS; -#elif !defined(__USE_DEV_STRING) -typedef cl::string STRING_CLASS; -#endif - -#if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) -#include -#define VECTOR_CLASS std::vector -#elif !defined(__USE_DEV_VECTOR) -#define VECTOR_CLASS cl::vector -#endif - -#if !defined(__MAX_DEFAULT_VECTOR_SIZE) -#define __MAX_DEFAULT_VECTOR_SIZE 10 -#endif - -/*! \class vector - * \brief Fixed sized vector implementation that mirroring - * std::vector functionality. - */ -template -class vector -{ -private: - T data_[N]; - unsigned int size_; - bool empty_; -public: - vector() : - size_(-1), - empty_(true) - {} - - ~vector() {} - - unsigned int size(void) const - { - return size_ + 1; - } - - void clear() - { - size_ = -1; - empty_ = true; - } - - void push_back (const T& x) - { - if (size() < N) { - size_++; - data_[size_] = x; - empty_ = false; - } - } - - void pop_back(void) - { - if (!empty_) { - data_[size_].~T(); - size_--; - if (size_ == -1) { - empty_ = true; - } - } - } - - vector(const vector& vec) : - size_(vec.size_), - empty_(vec.empty_) - { - if (!empty_) { - memcpy(&data_[0], &vec.data_[0], size() * sizeof(T)); - } - } - - vector(unsigned int size, const T& val = T()) : - size_(-1), - empty_(true) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } - } - - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - size_ = rhs.size_; - empty_ = rhs.empty_; - - if (!empty_) { - memcpy(&data_[0], &rhs.data_[0], size() * sizeof(T)); - } - - return *this; - } - - bool operator==(vector &vec) - { - if (empty_ && vec.empty_) { - return true; - } - - if (size() != vec.size()) { - return false; - } - - return memcmp(&data_[0], &vec.data_[0], size() * sizeof(T)) == 0 ? true : false; - } - - operator T* () { return data_; } - operator const T* () const { return data_; } - - bool empty (void) const - { - return empty_; - } - - unsigned int max_size (void) const - { - return N; - } - - unsigned int capacity () const - { - return sizeof(T) * N; - } - - T& operator[](int index) - { - return data_[index]; - } - - T operator[](int index) const - { - return data_[index]; - } - - template - void assign(I start, I end) - { - clear(); - while(start < end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Iterator class for vectors - */ - class iterator - { - private: - vector vec_; - int index_; - bool initialized_; - public: - iterator(void) : - index_(-1), - initialized_(false) - { - index_ = -1; - initialized_ = false; - } - - ~iterator(void) {} - - static iterator begin(vector &vec) - { - iterator i; - - if (!vec.empty()) { - i.index_ = 0; - } - - i.vec_ = vec; - i.initialized_ = true; - return i; - } - - static iterator end(vector &vec) - { - iterator i; - - if (!vec.empty()) { - i.index_ = vec.size(); - } - i.vec_ = vec; - i.initialized_ = true; - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_) && - (initialized_ == i.initialized_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - void operator++() - { - index_++; - } - - void operator++(int x) - { - index_ += x; - } - - void operator--() - { - index_--; - } - - void operator--(int x) - { - index_ -= x; - } - - T operator *() - { - return vec_[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_]; - } -}; - -/*! - * \brief size_t class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, who's - * size is known statically. - */ -template -struct size_t : public cl::vector< ::size_t, N> { }; - -namespace detail { - -// GetInfo help struct -template -struct GetInfoHelper -{ - static cl_int - get(Functor f, cl_uint name, T* param) - { - return f(name, sizeof(T), param, NULL); - } -}; - -// Specialized GetInfoHelper for VECTOR_CLASS params -template -struct GetInfoHelper > -{ - static cl_int get(Func f, cl_uint name, VECTOR_CLASS* param) - { - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; - } -}; - -// Specialized for getInfo -template -struct GetInfoHelper > -{ - static cl_int - get(Func f, cl_uint name, VECTOR_CLASS* param) - { - cl_uint err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } - - return CL_SUCCESS; - } -}; - -// Specialized GetInfoHelper for STRING_CLASS params -template -struct GetInfoHelper -{ - static cl_int get(Func f, cl_uint name, STRING_CLASS* param) - { - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - - char* value = (char*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } - - *param = value; - return CL_SUCCESS; - } -}; - -#define __GET_INFO_HELPER_WITH_RETAIN(CPP_TYPE) \ -namespace detail { \ -template \ -struct GetInfoHelper \ -{ \ - static cl_int get(Func f, cl_uint name, CPP_TYPE* param) \ - { \ - cl_uint err = f(name, sizeof(CPP_TYPE), param, NULL); \ - if (err != CL_SUCCESS) { \ - return err; \ - } \ - \ - return ReferenceHandler::retain((*param)()); \ - } \ -}; \ -} - - -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_bitfield) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_uint) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_filter_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_bool) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) - -#if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 - -#if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION - -template -struct param_traits {}; - -#define __DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; - -__PARAM_NAME_INFO_1_0(__DECLARE_PARAM_TRAITS); -#if defined(CL_VERSION_1_1) -__PARAM_NAME_INFO_1_1(__DECLARE_PARAM_TRAITS); -#endif // CL_VERSION_1_1 - -#if defined(USE_CL_DEVICE_FISSION) -__PARAM_NAME_DEVICE_FISSION(__DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION - -#undef __DECLARE_PARAM_TRAITS - -// Convenience functions - -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return GetInfoHelper::get(f, name, param); -} - -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } -}; - -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } -}; - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return GetInfoHelper, T> - ::get(f0, name, param); -} - -template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return GetInfoHelper, T> - ::get(f0, name, param); -} - -template -struct ReferenceHandler -{ }; - -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_INVALID_DEVICE; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_INVALID_DEVICE; } -}; - -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_INVALID_PLATFORM; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_INVALID_PLATFORM; } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } -}; - -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } -}; - -template -class Wrapper -{ -public: - typedef T cl_type; - -protected: - cl_type object_; - -public: - Wrapper() : object_(NULL) { } - - ~Wrapper() - { - if (object_ != NULL) { release(); } - } - - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { retain(); } - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (object_ != NULL) { release(); } - object_ = rhs.object_; - if (object_ != NULL) { retain(); } - return *this; - } - - cl_type operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - -protected: - - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } - - cl_int release() const - { - return ReferenceHandler::release(object_); - } -}; - -#if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) throw(Error) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; -} -#else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - return err; -} -#endif // __CL_ENABLE_EXCEPTIONS - -} // namespace detail -//! \endcond - -/*! \stuct ImageFormat - * \brief ImageFormat interface fro cl_image_format. - */ -struct ImageFormat : public cl_image_format -{ - ImageFormat(){} - - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } - - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; - } -}; - -/*! \class Device - * \brief Device interface for cl_device_id. - */ -class Device : public detail::Wrapper -{ -public: - Device(cl_device_id device) { object_ = device; } - - Device() : detail::Wrapper() { } - - Device(const Device& device) : detail::Wrapper(device) { } - - Device& operator = (const Device& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif -}; - -/*! \class Platform - * \brief Platform interface. - */ -class Platform : public detail::Wrapper -{ -public: - static const Platform null(); - - Platform(cl_platform_id platform) { object_ = platform; } - - Platform() : detail::Wrapper() { } - - Platform(const Platform& platform) : detail::Wrapper(platform) { } - - Platform& operator = (const Platform& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } - -#if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR(clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -#endif - - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } -}; - -static inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} - -class Context : public detail::Wrapper -{ -public: - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateContext( - properties, (cl_uint) devices.size(), - (cl_device_id*) &devices.front(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - Context() : detail::Wrapper() { } - - Context(const Context& context) : detail::Wrapper(context) { } - - Context& operator = (const Context& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*) value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - return CL_SUCCESS; - } -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Context) - -/*! \class Event - * \brief Event interface for cl_event. - */ -class Event : public detail::Wrapper -{ -public: - Event() : detail::Wrapper() { } - - Event(const Event& event) : detail::Wrapper(event) { } - - Event& operator = (const Event& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } - -#if defined(CL_VERSION_1_1) - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif - - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (cl_event*)&events.front()), - __WAIT_FOR_EVENTS_ERR); - } -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Event) - -#if defined(CL_VERSION_1_1) -/*! \class UserEvent - * \brief User event interface for cl_event. - */ -class UserEvent : public Event -{ -public: - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); - - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } - } - - UserEvent() : Event() { } - - UserEvent(const UserEvent& event) : Event(event) { } - - UserEvent& operator = (const UserEvent& rhs) - { - if (this != &rhs) { - Event::operator=(rhs); - } - return *this; - } - - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } -}; -#endif - -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (cl_event*)&events.front()), - __WAIT_FOR_EVENTS_ERR); -} - -/*! \class Memory - * \brief Memory interface for cl_mem. - */ -class Memory : public detail::Wrapper -{ -public: - Memory() : detail::Wrapper() { } - - Memory(const Memory& memory) : detail::Wrapper(memory) { } - - Memory& operator = (const Memory& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - -#if defined(CL_VERSION_1_1) - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif - -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Memory) - -/*! \class Buffer - * \brief Memory buffer interface. - */ -class Buffer : public Memory -{ -public: - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - Buffer() : Memory() { } - - Buffer(const Buffer& buffer) : Memory(buffer) { } - - Buffer& operator = (const Buffer& rhs) - { - if (this != &rhs) { - Memory::operator=(rhs); - } - return *this; - } - -#if defined(CL_VERSION_1_1) - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); - - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; - } -#endif -}; - -#if defined (USE_DX_INTEROP) -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); - - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - BufferD3D10() : Buffer() { } - - BufferD3D10(const BufferD3D10& buffer) : Buffer(buffer) { } - - BufferD3D10& operator = (const BufferD3D10& rhs) - { - if (this != &rhs) { - Buffer::operator=(rhs); - } - return *this; - } -}; -#endif - -/*! \class BufferGL - * \brief Memory buffer interface for GL interop. - */ -class BufferGL : public Buffer -{ -public: - BufferGL( - const Context& context, - cl_mem_flags flags, - GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - BufferGL() : Buffer() { } - - BufferGL(const BufferGL& buffer) : Buffer(buffer) { } - - BufferGL& operator = (const BufferGL& rhs) - { - if (this != &rhs) { - Buffer::operator=(rhs); - } - return *this; - } - - cl_int getObjectInfo( - cl_gl_object_type *type, - GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \class BufferRenderGL - * \brief Memory buffer interface for GL interop with renderbuffer. - */ -class BufferRenderGL : public Buffer -{ -public: - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - BufferRenderGL() : Buffer() { } - - BufferRenderGL(const BufferGL& buffer) : Buffer(buffer) { } - - BufferRenderGL& operator = (const BufferRenderGL& rhs) - { - if (this != &rhs) { - Buffer::operator=(rhs); - } - return *this; - } - - cl_int getObjectInfo( - cl_gl_object_type *type, - GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } -}; - -/*! \class Image - * \brief Base class interface for all images. - */ -class Image : public Memory -{ -protected: - Image() : Memory() { } - - Image(const Image& image) : Memory(image) { } - - Image& operator = (const Image& rhs) - { - if (this != &rhs) { - Memory::operator=(rhs); - } - return *this; - } -public: - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -/*! \class Image2D - * \brief Image interface for 2D images. - */ -class Image2D : public Image -{ -public: - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2D() { } - - Image2D(const Image2D& image2D) : Image(image2D) { } - - Image2D& operator = (const Image2D& rhs) - { - if (this != &rhs) { - Image::operator=(rhs); - } - return *this; - } -}; - -/*! \class Image2DGL - * \brief 2D image interface for GL interop. - */ -class Image2DGL : public Image2D -{ -public: - Image2DGL( - const Context& context, - cl_mem_flags flags, - GLenum target, - GLint miplevel, - GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - Image2DGL() : Image2D() { } - - Image2DGL(const Image2DGL& image) : Image2D(image) { } - - Image2DGL& operator = (const Image2DGL& rhs) - { - if (this != &rhs) { - Image2D::operator=(rhs); - } - return *this; - } -}; - -/*! \class Image3D - * \brief Image interface for 3D images. - */ -class Image3D : public Image -{ -public: - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } - - Image3D() { } - - Image3D(const Image3D& image3D) : Image(image3D) { } - - Image3D& operator = (const Image3D& rhs) - { - if (this != &rhs) { - Image::operator=(rhs); - } - return *this; - } -}; - -/*! \class Image2DGL - * \brief 2D image interface for GL interop. - */ -class Image3DGL : public Image3D -{ -public: - Image3DGL( - const Context& context, - cl_mem_flags flags, - GLenum target, - GLint miplevel, - GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } - - Image3DGL() : Image3D() { } - - Image3DGL(const Image3DGL& image) : Image3D(image) { } - - Image3DGL& operator = (const Image3DGL& rhs) - { - if (this != &rhs) { - Image3D::operator=(rhs); - } - return *this; - } -}; - -/*! \class Sampler - * \brief Sampler interface for cl_sampler. - */ -class Sampler : public detail::Wrapper -{ -public: - Sampler() { } - - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); - - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } - } - - Sampler(const Sampler& sampler) : detail::Wrapper(sampler) { } - - Sampler& operator = (const Sampler& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Sampler) - -class Program; -class CommandQueue; -class Kernel; - -/*! \class NDRange - * \brief NDRange interface - */ -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; - -public: - NDRange() - : dimensions_(0) - { } - - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_.push_back(size0); - } - - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_.push_back(size0); - sizes_.push_back(size1); - } - - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_.push_back(size0); - sizes_.push_back(size1); - sizes_.push_back(size2); - } - - operator const ::size_t*() const { return (const ::size_t*) sizes_; } - ::size_t dimensions() const { return dimensions_; } -}; - -static const NDRange NullRange; - -/*! - * \struct LocalSpaceArg - * \brief Local address raper for use with Kernel::setArg - */ -struct LocalSpaceArg -{ - ::size_t size_; -}; - -namespace detail { - -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static T* ptr(T& value) { return &value; } -}; - -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static void* ptr(LocalSpaceArg&) { return NULL; } -}; - -} -//! \endcond - -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; -} - -class KernelFunctor; - -/*! \class Kernel - * \brief Kernel interface that implements cl_kernel - */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - - Kernel() { } - - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) { } - - Kernel& operator = (const Kernel& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int setArg(cl_uint index, T value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } - - cl_int setArg(cl_uint index, ::size_t size, void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } - - KernelFunctor bind( - const CommandQueue& queue, - const NDRange& offset, - const NDRange& global, - const NDRange& local); - - KernelFunctor bind( - const CommandQueue& queue, - const NDRange& global, - const NDRange& local); -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Kernel) - -/*! \class Program - * \brief Program interface that implements cl_program. - */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; - - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); - - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } - } - - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; - const ::size_t n = binaries.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(n * sizeof(const void*)); - - for (::size_t i = 0; i < n; ++i) { - images[i] = (const unsigned char*)binaries[(int)i].first; - lengths[i] = binaries[(int)i].second; - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - (cl_device_id*)&devices.front(), - lengths, images, binaryStatus != NULL - ? (cl_int*) &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - } - - Program() { } - - Program(const Program& program) : detail::Wrapper(program) { } - - Program& operator = (const Program& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - (cl_device_id*)&devices.front(), - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } - - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::Program) - -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; - - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } - -} - -/*! \class CommandQueue - * \brief CommandQueue interface for cl_command_queue. - */ -class CommandQueue : public detail::Wrapper -{ -public: - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } - - CommandQueue() { } - - CommandQueue(const CommandQueue& commandQueue) : detail::Wrapper(commandQueue) { } - - CommandQueue& operator = (const CommandQueue& rhs) - { - if (this != &rhs) { - detail::Wrapper::operator=(rhs); - } - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_READ_BUFFER_ERR); - } - - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_WRITE_BUFFER_ERR); - } - - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQEUE_COPY_BUFFER_ERR); - } - -#if defined(CL_VERSION_1_1) - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_READ_BUFFER_RECT_ERR); - } - - - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); - } - - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQEUE_COPY_BUFFER_RECT_ERR); - } -#endif - - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_READ_IMAGE_ERR); - } - - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_WRITE_IMAGE_ERR); - } - - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_COPY_IMAGE_ERR); - } - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_NDRANGE_KERNEL_ERR); - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_TASK_ERR); - } - - cl_int enqueueNativeKernel( - void (*userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - return detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_NATIVE_KERNEL); - } - - cl_int enqueueMarker(Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueMarker(object_, (cl_event*) event), - __ENQUEUE_MARKER_ERR); - } - - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - (const cl_event*) &events.front()), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } - - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_ACQUIRE_GL_ERR); - } - - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - return detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_RELEASE_GL_ERR); - } - -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); - - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); - - return detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_ACQUIRE_GL_ERR); - } - - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); - - return detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (cl_event*) event), - __ENQUEUE_RELEASE_GL_ERR); - } -#endif - - cl_int enqueueBarrier() const - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } - - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } - - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; - -__GET_INFO_HELPER_WITH_RETAIN(cl::CommandQueue) - -/*! \class KernelFunctor - * \brief Kernel functor interface - * - * \note Currently only functors of zero to ten arguments are supported. It - * is straightforward to add more and a more general solution, similar to - * Boost.Lambda could be followed if required in the future. - */ -class KernelFunctor -{ -private: - Kernel kernel_; - CommandQueue queue_; - NDRange offset_; - NDRange global_; - NDRange local_; - - cl_int err_; -public: - KernelFunctor() { } - - KernelFunctor( - const Kernel& kernel, - const CommandQueue& queue, - const NDRange& offset, - const NDRange& global, - const NDRange& local) : - kernel_(kernel), - queue_(queue), - offset_(offset), - global_(global), - local_(local), - err_(CL_SUCCESS) - {} - - KernelFunctor& operator=(const KernelFunctor& rhs); - - KernelFunctor(const KernelFunctor& rhs); - - cl_int getError() { return err_; } - - inline Event operator()(const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const A14& a14, - const VECTOR_CLASS* events = NULL); - - template - inline Event operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const A14& a14, - const A15& a15, - const VECTOR_CLASS* events = NULL); -}; - -inline KernelFunctor Kernel::bind( - const CommandQueue& queue, - const NDRange& offset, - const NDRange& global, - const NDRange& local) -{ - return KernelFunctor(*this,queue,offset,global,local); -} - -inline KernelFunctor Kernel::bind( - const CommandQueue& queue, - const NDRange& global, - const NDRange& local) -{ - return KernelFunctor(*this,queue,NullRange,global,local); -} - -inline KernelFunctor& KernelFunctor::operator=(const KernelFunctor& rhs) -{ - if (this == &rhs) { - return *this; - } - - kernel_ = rhs.kernel_; - queue_ = rhs.queue_; - offset_ = rhs.offset_; - global_ = rhs.global_; - local_ = rhs.local_; - - return *this; -} - -inline KernelFunctor::KernelFunctor(const KernelFunctor& rhs) : - kernel_(rhs.kernel_), - queue_(rhs.queue_), - offset_(rhs.offset_), - global_(rhs.global_), - local_(rhs.local_) -{ -} - -Event KernelFunctor::operator()(const VECTOR_CLASS* events) -{ - Event event; - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - kernel_.setArg(10,a11); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - kernel_.setArg(10,a11); - kernel_.setArg(11,a12); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - kernel_.setArg(10,a11); - kernel_.setArg(11,a12); - kernel_.setArg(12,a13); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const A14& a14, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - kernel_.setArg(10,a11); - kernel_.setArg(11,a12); - kernel_.setArg(12,a13); - kernel_.setArg(13,a14); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -template -Event KernelFunctor::operator()( - const A1& a1, - const A2& a2, - const A3& a3, - const A4& a4, - const A5& a5, - const A6& a6, - const A7& a7, - const A8& a8, - const A9& a9, - const A10& a10, - const A11& a11, - const A12& a12, - const A13& a13, - const A14& a14, - const A15& a15, - const VECTOR_CLASS* events) -{ - Event event; - - kernel_.setArg(0,a1); - kernel_.setArg(1,a2); - kernel_.setArg(2,a3); - kernel_.setArg(3,a4); - kernel_.setArg(4,a5); - kernel_.setArg(5,a6); - kernel_.setArg(6,a7); - kernel_.setArg(7,a8); - kernel_.setArg(8,a9); - kernel_.setArg(9,a10); - kernel_.setArg(10,a11); - kernel_.setArg(11,a12); - kernel_.setArg(12,a13); - kernel_.setArg(13,a14); - kernel_.setArg(14,a15); - - err_ = queue_.enqueueNDRangeKernel( - kernel_, - offset_, - global_, - local_, - NULL, // bgaster_fixme - do we want to allow wait event lists? - &event); - - return event; -} - -#undef __ERR_STR -#if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#undef __GET_DEVICE_INFO_ERR -#undef __GET_PLATFORM_INFO_ERR -#undef __GET_DEVICE_IDS_ERR -#undef __GET_CONTEXT_INFO_ERR -#undef __GET_EVENT_INFO_ERR -#undef __GET_EVENT_PROFILE_INFO_ERR -#undef __GET_MEM_OBJECT_INFO_ERR -#undef __GET_IMAGE_INFO_ERR -#undef __GET_SAMPLER_INFO_ERR -#undef __GET_KERNEL_INFO_ERR -#undef __GET_KERNEL_WORK_GROUP_INFO_ERR -#undef __GET_PROGRAM_INFO_ERR -#undef __GET_PROGRAM_BUILD_INFO_ERR -#undef __GET_COMMAND_QUEUE_INFO_ERR - -#undef __CREATE_CONTEXT_FROM_TYPE_ERR -#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR - -#undef __CREATE_BUFFER_ERR -#undef __CREATE_SUBBUFFER_ERR -#undef __CREATE_IMAGE2D_ERR -#undef __CREATE_IMAGE3D_ERR -#undef __CREATE_SAMPLER_ERR -#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR - -#undef __CREATE_USER_EVENT_ERR -#undef __SET_USER_EVENT_STATUS_ERR -#undef __SET_EVENT_CALLBACK_ERR - -#undef __WAIT_FOR_EVENTS_ERR - -#undef __CREATE_KERNEL_ERR -#undef __SET_KERNEL_ARGS_ERR -#undef __CREATE_PROGRAM_WITH_SOURCE_ERR -#undef __CREATE_PROGRAM_WITH_BINARY_ERR -#undef __BUILD_PROGRAM_ERR -#undef __CREATE_KERNELS_IN_PROGRAM_ERR - -#undef __CREATE_COMMAND_QUEUE_ERR -#undef __SET_COMMAND_QUEUE_PROPERTY_ERR -#undef __ENQUEUE_READ_BUFFER_ERR -#undef __ENQUEUE_WRITE_BUFFER_ERR -#undef __ENQUEUE_READ_BUFFER_RECT_ERR -#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR -#undef __ENQEUE_COPY_BUFFER_ERR -#undef __ENQEUE_COPY_BUFFER_RECT_ERR -#undef __ENQUEUE_READ_IMAGE_ERR -#undef __ENQUEUE_WRITE_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_ERR -#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR -#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR -#undef __ENQUEUE_MAP_BUFFER_ERR -#undef __ENQUEUE_MAP_IMAGE_ERR -#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR -#undef __ENQUEUE_NDRANGE_KERNEL_ERR -#undef __ENQUEUE_TASK_ERR -#undef __ENQUEUE_NATIVE_KERNEL - -#undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS - -#undef __GET_INFO_HELPER_WITH_RETAIN - -// Extensions -#undef __INIT_CL_EXT_FCN_PTR -#undef __CREATE_SUB_DEVICES - -#if defined(USE_CL_DEVICE_FISSION) -#undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION - -} // namespace cl - -#endif // CL_HPP_ +#include_next debian/patches/flags0000644000000000000000000001272012175723461011646 0ustar Description: Debian compliant compiler flags handling Author: Simon Richter Last-Update: 2013-05-21 Index: beignet-0.2+git20130730+da26376/CMakeLists.txt =================================================================== --- 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}) -SET(CMAKE_VERBOSE_MAKEFILE "false") 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.2+git20130730+da26376/backend/CMakeLists.txt =================================================================== --- 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}") - set (CMAKE_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -Wno-invalid-offsetof -fno-rtti -std=c++0x") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -Wno-invalid-offsetof -fno-rtti -std=c++0x") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_DEBUG_MEMORY_FLAG}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_COMPILE_UTESTS_FLAG}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-E") - set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${LLVM_LFLAGS}") - set (CMAKE_CXX_FLAGS_DEBUG "-g -DGBE_DEBUG=1") - set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1") - set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG -DGBE_DEBUG=0") - set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DGBE_DEBUG=0") - set (CMAKE_C_FLAGS "${CMAKE_C_CXX_FLAGS}") + set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined ${LLVM_LFLAGS}") + set (CMAKE_CXX_FLAGS_DEBUG "-DGBE_DEBUG=1") + set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DGBE_DEBUG=1") + set (CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_CXX_FLAGS}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GBE_DEBUG_MEMORY_FLAG}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GBE_COMPILE_UTESTS_FLAG}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-E") - set (CMAKE_C_FLAGS_DEBUG "-g -DGBE_DEBUG=1") - set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1") - set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG -DGBE_DEBUG=0") - set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_C_FLAGS_DEBUG "-DGBE_DEBUG=1") + set (CMAKE_C_FLAGS_RELWITHDEBINFO "-DGBE_DEBUG=1") + set (CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_C_FLAGS_RELEASE "-DNDEBUG -DGBE_DEBUG=0") elseif (COMPILER STREQUAL "CLANG") set (CMAKE_C_COMPILER "clang") set (CMAKE_C_FLAGS "-Wall -std=c99") - set (CMAKE_C_FLAGS_DEBUG "-g -DGBE_DEBUG=1") - set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1") - set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG -DGBE_DEBUG=0") - set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_C_FLAGS_DEBUG "-DGBE_DEBUG=1") + set (CMAKE_C_FLAGS_RELWITHDEBINFO "-DGBE_DEBUG=1") + set (CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_C_FLAGS_RELEASE "-DNDEBUG -DGBE_DEBUG=0") set (CMAKE_CXX_COMPILER "clang++") set (CMAKE_CXX_FLAGS "-fstrict-aliasing -msse2 -fPIC -Wall -Wno-format-security -Wno-invalid-offsetof -std=c++0x") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_DEBUG_MEMORY_FLAG}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GBE_COMPILE_UTESTS_FLAG}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VISIBILITY_FLAG}") - set (CMAKE_CXX_FLAGS_DEBUG "-g -DGBE_DEBUG=1") - set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1") - set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG -DGBE_DEBUG=0") - set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_CXX_FLAGS_DEBUG "-DGBE_DEBUG=1") + set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DGBE_DEBUG=1") + set (CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -DGBE_DEBUG=0") + set (CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -DGBE_DEBUG=0") set (CMAKE_AR "/usr/bin/llvm-ar") set (CMAKE_LINKER "/usr/bin/llvm-ld") set (CMAKE_NM "/usr/bin/llvm-nm") @@ -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}") - set (CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DGBE_DEBUG=1") - set (CCMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2 -DGBE_DEBUG=1") - set (CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2 -DGBE_DEBUG=0") - set (CCMAKE_CXX_FLAGS_MINSIZEREL "-Os -DGBE_DEBUG=0") + set (CMAKE_CXX_FLAGS_DEBUG "-DGBE_DEBUG=1") + set (CCMAKE_CXX_FLAGS_RELWITHDEBINFO "-DGBE_DEBUG=1") + set (CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -DGBE_DEBUG=0") + set (CCMAKE_CXX_FLAGS_MINSIZEREL "-DGBE_DEBUG=0") set (CMAKE_EXE_LINKER_FLAGS "") endif () include_directories (${CMAKE_CURRENT_BINARY_DIR}) debian/intel.icd0000644000000000000000000000003212146620762010763 0ustar /usr/lib/beignet/libcl.so debian/beignet.install0000644000000000000000000000026012175724062012177 0ustar 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