clang  19.0.0git
opencl-c.h
Go to the documentation of this file.
1 //===--- opencl-c.h - OpenCL C language builtin function header -----------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef _OPENCL_H_
10 #define _OPENCL_H_
11 
12 #include "opencl-c-base.h"
13 
14 #if defined(__opencl_c_images)
15 #ifndef cl_khr_depth_images
16 #define cl_khr_depth_images
17 #endif //cl_khr_depth_images
18 #endif //defined(__opencl_c_images)
19 
20 #if __OPENCL_C_VERSION__ < CL_VERSION_2_0
21 #ifdef cl_khr_3d_image_writes
22 #pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable
23 #endif //cl_khr_3d_image_writes
24 #endif //__OPENCL_C_VERSION__ < CL_VERSION_2_0
25 
26 #if (defined(__OPENCL_CPP_VERSION__) || \
27  (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)) && \
28  (defined(__SPIR__) || defined(__SPIRV__))
29 #pragma OPENCL EXTENSION cl_intel_planar_yuv : begin
30 #pragma OPENCL EXTENSION cl_intel_planar_yuv : end
31 #endif // (defined(__OPENCL_CPP_VERSION__) ||
32  // (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)) &&
33  // (defined(__SPIR__) || defined(__SPIRV__))
34 
35 #define __ovld __attribute__((overloadable))
36 #define __conv __attribute__((convergent))
37 
38 // Optimizations
39 #define __purefn __attribute__((pure))
40 #define __cnfn __attribute__((const))
41 
42 
43 // OpenCL v1.1/1.2/2.0 s6.2.3 - Explicit conversions
44 
225 
849 char2 __ovld __cnfn convert_char2(ushort2);
919 uchar2 __ovld __cnfn convert_uchar2(uchar2);
929 uchar2 __ovld __cnfn convert_uchar2(short2);
939 uchar2 __ovld __cnfn convert_uchar2(ushort2);
979 uchar2 __ovld __cnfn convert_uchar2(ulong2);
1029 short2 __ovld __cnfn convert_short2(ushort2);
1119 ushort2 __ovld __cnfn convert_ushort2(ushort2);
1389 long2 __ovld __cnfn convert_long2(ushort2);
1479 ulong2 __ovld __cnfn convert_ulong2(ushort2);
1614 char3 __ovld __cnfn convert_char3(ushort3);
1704 uchar3 __ovld __cnfn convert_uchar3(ushort3);
1794 short3 __ovld __cnfn convert_short3(ushort3);
1884 ushort3 __ovld __cnfn convert_ushort3(ushort3);
2154 long3 __ovld __cnfn convert_long3(ushort3);
2244 ulong3 __ovld __cnfn convert_ulong3(ushort3);
2379 char4 __ovld __cnfn convert_char4(ushort4);
2469 uchar4 __ovld __cnfn convert_uchar4(ushort4);
2559 short4 __ovld __cnfn convert_short4(ushort4);
2649 ushort4 __ovld __cnfn convert_ushort4(ushort4);
2919 long4 __ovld __cnfn convert_long4(ushort4);
3009 ulong4 __ovld __cnfn convert_ulong4(ushort4);
3144 char8 __ovld __cnfn convert_char8(ushort8);
3234 uchar8 __ovld __cnfn convert_uchar8(ushort8);
3324 short8 __ovld __cnfn convert_short8(ushort8);
3414 ushort8 __ovld __cnfn convert_ushort8(ushort8);
3594 uint8 __ovld __cnfn convert_uint8(ushort8);
3684 long8 __ovld __cnfn convert_long8(ushort8);
3774 ulong8 __ovld __cnfn convert_ulong8(ushort8);
3845 float8 __ovld __cnfn convert_float8(ushort8);
3889 char16 __ovld __cnfn convert_char16(uchar16);
3899 char16 __ovld __cnfn convert_char16(short16);
3909 char16 __ovld __cnfn convert_char16(ushort16);
3949 char16 __ovld __cnfn convert_char16(ulong16);
3959 char16 __ovld __cnfn convert_char16(float16);
3979 uchar16 __ovld __cnfn convert_uchar16(uchar16);
3989 uchar16 __ovld __cnfn convert_uchar16(short16);
3999 uchar16 __ovld __cnfn convert_uchar16(ushort16);
4039 uchar16 __ovld __cnfn convert_uchar16(ulong16);
4049 uchar16 __ovld __cnfn convert_uchar16(float16);
4069 short16 __ovld __cnfn convert_short16(uchar16);
4079 short16 __ovld __cnfn convert_short16(short16);
4089 short16 __ovld __cnfn convert_short16(ushort16);
4129 short16 __ovld __cnfn convert_short16(ulong16);
4139 short16 __ovld __cnfn convert_short16(float16);
4149 ushort16 __ovld __cnfn convert_ushort16(char16);
4159 ushort16 __ovld __cnfn convert_ushort16(uchar16);
4169 ushort16 __ovld __cnfn convert_ushort16(short16);
4179 ushort16 __ovld __cnfn convert_ushort16(ushort16);
4199 ushort16 __ovld __cnfn convert_ushort16(uint16);
4209 ushort16 __ovld __cnfn convert_ushort16(long16);
4219 ushort16 __ovld __cnfn convert_ushort16(ulong16);
4229 ushort16 __ovld __cnfn convert_ushort16(float16);
4249 int16 __ovld __cnfn convert_int16(uchar16);
4259 int16 __ovld __cnfn convert_int16(short16);
4269 int16 __ovld __cnfn convert_int16(ushort16);
4309 int16 __ovld __cnfn convert_int16(ulong16);
4319 int16 __ovld __cnfn convert_int16(float16);
4339 uint16 __ovld __cnfn convert_uint16(uchar16);
4349 uint16 __ovld __cnfn convert_uint16(short16);
4359 uint16 __ovld __cnfn convert_uint16(ushort16);
4399 uint16 __ovld __cnfn convert_uint16(ulong16);
4409 uint16 __ovld __cnfn convert_uint16(float16);
4429 long16 __ovld __cnfn convert_long16(uchar16);
4439 long16 __ovld __cnfn convert_long16(short16);
4449 long16 __ovld __cnfn convert_long16(ushort16);
4489 long16 __ovld __cnfn convert_long16(ulong16);
4499 long16 __ovld __cnfn convert_long16(float16);
4519 ulong16 __ovld __cnfn convert_ulong16(uchar16);
4529 ulong16 __ovld __cnfn convert_ulong16(short16);
4539 ulong16 __ovld __cnfn convert_ulong16(ushort16);
4579 ulong16 __ovld __cnfn convert_ulong16(ulong16);
4589 ulong16 __ovld __cnfn convert_ulong16(float16);
4600 float16 __ovld __cnfn convert_float16(uchar16);
4605 float16 __ovld __cnfn convert_float16(short16);
4610 float16 __ovld __cnfn convert_float16(ushort16);
4630 float16 __ovld __cnfn convert_float16(ulong16);
4635 float16 __ovld __cnfn convert_float16(float16);
4636 
4637 // Conversions with double data type parameters or return value.
4638 
4639 #ifdef cl_khr_fp64
4640 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
4641 char __ovld __cnfn convert_char(double);
4642 char __ovld __cnfn convert_char_rte(double);
4643 char __ovld __cnfn convert_char_rtn(double);
4644 char __ovld __cnfn convert_char_rtp(double);
4645 char __ovld __cnfn convert_char_rtz(double);
4646 char __ovld __cnfn convert_char_sat(double);
4647 char __ovld __cnfn convert_char_sat_rte(double);
4648 char __ovld __cnfn convert_char_sat_rtn(double);
4649 char __ovld __cnfn convert_char_sat_rtp(double);
4650 char __ovld __cnfn convert_char_sat_rtz(double);
4681 char8 __ovld __cnfn convert_char8(double8);
4682 char8 __ovld __cnfn convert_char8_rte(double8);
4683 char8 __ovld __cnfn convert_char8_rtn(double8);
4684 char8 __ovld __cnfn convert_char8_rtp(double8);
4685 char8 __ovld __cnfn convert_char8_rtz(double8);
4686 char8 __ovld __cnfn convert_char8_sat(double8);
4687 char8 __ovld __cnfn convert_char8_sat_rte(double8);
4688 char8 __ovld __cnfn convert_char8_sat_rtn(double8);
4689 char8 __ovld __cnfn convert_char8_sat_rtp(double8);
4690 char8 __ovld __cnfn convert_char8_sat_rtz(double8);
4691 char16 __ovld __cnfn convert_char16(double16);
4692 char16 __ovld __cnfn convert_char16_rte(double16);
4693 char16 __ovld __cnfn convert_char16_rtn(double16);
4694 char16 __ovld __cnfn convert_char16_rtp(double16);
4695 char16 __ovld __cnfn convert_char16_rtz(double16);
4696 char16 __ovld __cnfn convert_char16_sat(double16);
4697 char16 __ovld __cnfn convert_char16_sat_rte(double16);
4698 char16 __ovld __cnfn convert_char16_sat_rtn(double16);
4699 char16 __ovld __cnfn convert_char16_sat_rtp(double16);
4700 char16 __ovld __cnfn convert_char16_sat_rtz(double16);
4701 
4742 uchar8 __ovld __cnfn convert_uchar8(double8);
4743 uchar8 __ovld __cnfn convert_uchar8_rte(double8);
4744 uchar8 __ovld __cnfn convert_uchar8_rtn(double8);
4745 uchar8 __ovld __cnfn convert_uchar8_rtp(double8);
4746 uchar8 __ovld __cnfn convert_uchar8_rtz(double8);
4747 uchar8 __ovld __cnfn convert_uchar8_sat(double8);
4748 uchar8 __ovld __cnfn convert_uchar8_sat_rte(double8);
4749 uchar8 __ovld __cnfn convert_uchar8_sat_rtn(double8);
4750 uchar8 __ovld __cnfn convert_uchar8_sat_rtp(double8);
4751 uchar8 __ovld __cnfn convert_uchar8_sat_rtz(double8);
4752 uchar16 __ovld __cnfn convert_uchar16(double16);
4753 uchar16 __ovld __cnfn convert_uchar16_rte(double16);
4754 uchar16 __ovld __cnfn convert_uchar16_rtn(double16);
4755 uchar16 __ovld __cnfn convert_uchar16_rtp(double16);
4756 uchar16 __ovld __cnfn convert_uchar16_rtz(double16);
4757 uchar16 __ovld __cnfn convert_uchar16_sat(double16);
4758 uchar16 __ovld __cnfn convert_uchar16_sat_rte(double16);
4759 uchar16 __ovld __cnfn convert_uchar16_sat_rtn(double16);
4760 uchar16 __ovld __cnfn convert_uchar16_sat_rtp(double16);
4761 uchar16 __ovld __cnfn convert_uchar16_sat_rtz(double16);
4762 
4763 short __ovld __cnfn convert_short(double);
4764 short __ovld __cnfn convert_short_rte(double);
4765 short __ovld __cnfn convert_short_rtn(double);
4766 short __ovld __cnfn convert_short_rtp(double);
4767 short __ovld __cnfn convert_short_rtz(double);
4768 short __ovld __cnfn convert_short_sat(double);
4769 short __ovld __cnfn convert_short_sat_rte(double);
4770 short __ovld __cnfn convert_short_sat_rtn(double);
4771 short __ovld __cnfn convert_short_sat_rtp(double);
4772 short __ovld __cnfn convert_short_sat_rtz(double);
4803 short8 __ovld __cnfn convert_short8(double8);
4804 short8 __ovld __cnfn convert_short8_rte(double8);
4805 short8 __ovld __cnfn convert_short8_rtn(double8);
4806 short8 __ovld __cnfn convert_short8_rtp(double8);
4807 short8 __ovld __cnfn convert_short8_rtz(double8);
4808 short8 __ovld __cnfn convert_short8_sat(double8);
4809 short8 __ovld __cnfn convert_short8_sat_rte(double8);
4810 short8 __ovld __cnfn convert_short8_sat_rtn(double8);
4811 short8 __ovld __cnfn convert_short8_sat_rtp(double8);
4812 short8 __ovld __cnfn convert_short8_sat_rtz(double8);
4813 short16 __ovld __cnfn convert_short16(double16);
4814 short16 __ovld __cnfn convert_short16_rte(double16);
4815 short16 __ovld __cnfn convert_short16_rtn(double16);
4816 short16 __ovld __cnfn convert_short16_rtp(double16);
4817 short16 __ovld __cnfn convert_short16_rtz(double16);
4818 short16 __ovld __cnfn convert_short16_sat(double16);
4819 short16 __ovld __cnfn convert_short16_sat_rte(double16);
4820 short16 __ovld __cnfn convert_short16_sat_rtn(double16);
4821 short16 __ovld __cnfn convert_short16_sat_rtp(double16);
4822 short16 __ovld __cnfn convert_short16_sat_rtz(double16);
4823 
4864 ushort8 __ovld __cnfn convert_ushort8(double8);
4865 ushort8 __ovld __cnfn convert_ushort8_rte(double8);
4866 ushort8 __ovld __cnfn convert_ushort8_rtn(double8);
4867 ushort8 __ovld __cnfn convert_ushort8_rtp(double8);
4868 ushort8 __ovld __cnfn convert_ushort8_rtz(double8);
4869 ushort8 __ovld __cnfn convert_ushort8_sat(double8);
4870 ushort8 __ovld __cnfn convert_ushort8_sat_rte(double8);
4871 ushort8 __ovld __cnfn convert_ushort8_sat_rtn(double8);
4872 ushort8 __ovld __cnfn convert_ushort8_sat_rtp(double8);
4873 ushort8 __ovld __cnfn convert_ushort8_sat_rtz(double8);
4874 ushort16 __ovld __cnfn convert_ushort16(double16);
4875 ushort16 __ovld __cnfn convert_ushort16_rte(double16);
4876 ushort16 __ovld __cnfn convert_ushort16_rtn(double16);
4877 ushort16 __ovld __cnfn convert_ushort16_rtp(double16);
4878 ushort16 __ovld __cnfn convert_ushort16_rtz(double16);
4879 ushort16 __ovld __cnfn convert_ushort16_sat(double16);
4880 ushort16 __ovld __cnfn convert_ushort16_sat_rte(double16);
4881 ushort16 __ovld __cnfn convert_ushort16_sat_rtn(double16);
4882 ushort16 __ovld __cnfn convert_ushort16_sat_rtp(double16);
4883 ushort16 __ovld __cnfn convert_ushort16_sat_rtz(double16);
4884 
4885 int __ovld __cnfn convert_int(double);
4886 int __ovld __cnfn convert_int_rte(double);
4887 int __ovld __cnfn convert_int_rtn(double);
4888 int __ovld __cnfn convert_int_rtp(double);
4889 int __ovld __cnfn convert_int_rtz(double);
4890 int __ovld __cnfn convert_int_sat(double);
4891 int __ovld __cnfn convert_int_sat_rte(double);
4892 int __ovld __cnfn convert_int_sat_rtn(double);
4893 int __ovld __cnfn convert_int_sat_rtp(double);
4894 int __ovld __cnfn convert_int_sat_rtz(double);
4925 int8 __ovld __cnfn convert_int8(double8);
4926 int8 __ovld __cnfn convert_int8_rte(double8);
4927 int8 __ovld __cnfn convert_int8_rtn(double8);
4928 int8 __ovld __cnfn convert_int8_rtp(double8);
4929 int8 __ovld __cnfn convert_int8_rtz(double8);
4930 int8 __ovld __cnfn convert_int8_sat(double8);
4931 int8 __ovld __cnfn convert_int8_sat_rte(double8);
4932 int8 __ovld __cnfn convert_int8_sat_rtn(double8);
4933 int8 __ovld __cnfn convert_int8_sat_rtp(double8);
4934 int8 __ovld __cnfn convert_int8_sat_rtz(double8);
4935 int16 __ovld __cnfn convert_int16(double16);
4936 int16 __ovld __cnfn convert_int16_rte(double16);
4937 int16 __ovld __cnfn convert_int16_rtn(double16);
4938 int16 __ovld __cnfn convert_int16_rtp(double16);
4939 int16 __ovld __cnfn convert_int16_rtz(double16);
4940 int16 __ovld __cnfn convert_int16_sat(double16);
4941 int16 __ovld __cnfn convert_int16_sat_rte(double16);
4942 int16 __ovld __cnfn convert_int16_sat_rtn(double16);
4943 int16 __ovld __cnfn convert_int16_sat_rtp(double16);
4944 int16 __ovld __cnfn convert_int16_sat_rtz(double16);
4945 
4946 uint __ovld __cnfn convert_uint(double);
4986 uint8 __ovld __cnfn convert_uint8(double8);
4987 uint8 __ovld __cnfn convert_uint8_rte(double8);
4988 uint8 __ovld __cnfn convert_uint8_rtn(double8);
4989 uint8 __ovld __cnfn convert_uint8_rtp(double8);
4990 uint8 __ovld __cnfn convert_uint8_rtz(double8);
4991 uint8 __ovld __cnfn convert_uint8_sat(double8);
4992 uint8 __ovld __cnfn convert_uint8_sat_rte(double8);
4993 uint8 __ovld __cnfn convert_uint8_sat_rtn(double8);
4994 uint8 __ovld __cnfn convert_uint8_sat_rtp(double8);
4995 uint8 __ovld __cnfn convert_uint8_sat_rtz(double8);
4996 uint16 __ovld __cnfn convert_uint16(double16);
4997 uint16 __ovld __cnfn convert_uint16_rte(double16);
4998 uint16 __ovld __cnfn convert_uint16_rtn(double16);
4999 uint16 __ovld __cnfn convert_uint16_rtp(double16);
5000 uint16 __ovld __cnfn convert_uint16_rtz(double16);
5001 uint16 __ovld __cnfn convert_uint16_sat(double16);
5002 uint16 __ovld __cnfn convert_uint16_sat_rte(double16);
5003 uint16 __ovld __cnfn convert_uint16_sat_rtn(double16);
5004 uint16 __ovld __cnfn convert_uint16_sat_rtp(double16);
5005 uint16 __ovld __cnfn convert_uint16_sat_rtz(double16);
5006 
5007 long __ovld __cnfn convert_long(double);
5008 long __ovld __cnfn convert_long_rte(double);
5009 long __ovld __cnfn convert_long_rtn(double);
5010 long __ovld __cnfn convert_long_rtp(double);
5011 long __ovld __cnfn convert_long_rtz(double);
5012 long __ovld __cnfn convert_long_sat(double);
5013 long __ovld __cnfn convert_long_sat_rte(double);
5014 long __ovld __cnfn convert_long_sat_rtn(double);
5015 long __ovld __cnfn convert_long_sat_rtp(double);
5016 long __ovld __cnfn convert_long_sat_rtz(double);
5047 long8 __ovld __cnfn convert_long8(double8);
5048 long8 __ovld __cnfn convert_long8_rte(double8);
5049 long8 __ovld __cnfn convert_long8_rtn(double8);
5050 long8 __ovld __cnfn convert_long8_rtp(double8);
5051 long8 __ovld __cnfn convert_long8_rtz(double8);
5052 long8 __ovld __cnfn convert_long8_sat(double8);
5053 long8 __ovld __cnfn convert_long8_sat_rte(double8);
5054 long8 __ovld __cnfn convert_long8_sat_rtn(double8);
5055 long8 __ovld __cnfn convert_long8_sat_rtp(double8);
5056 long8 __ovld __cnfn convert_long8_sat_rtz(double8);
5057 long16 __ovld __cnfn convert_long16(double16);
5058 long16 __ovld __cnfn convert_long16_rte(double16);
5059 long16 __ovld __cnfn convert_long16_rtn(double16);
5060 long16 __ovld __cnfn convert_long16_rtp(double16);
5061 long16 __ovld __cnfn convert_long16_rtz(double16);
5062 long16 __ovld __cnfn convert_long16_sat(double16);
5063 long16 __ovld __cnfn convert_long16_sat_rte(double16);
5064 long16 __ovld __cnfn convert_long16_sat_rtn(double16);
5065 long16 __ovld __cnfn convert_long16_sat_rtp(double16);
5066 long16 __ovld __cnfn convert_long16_sat_rtz(double16);
5067 
5108 ulong8 __ovld __cnfn convert_ulong8(double8);
5109 ulong8 __ovld __cnfn convert_ulong8_rte(double8);
5110 ulong8 __ovld __cnfn convert_ulong8_rtn(double8);
5111 ulong8 __ovld __cnfn convert_ulong8_rtp(double8);
5112 ulong8 __ovld __cnfn convert_ulong8_rtz(double8);
5113 ulong8 __ovld __cnfn convert_ulong8_sat(double8);
5114 ulong8 __ovld __cnfn convert_ulong8_sat_rte(double8);
5115 ulong8 __ovld __cnfn convert_ulong8_sat_rtn(double8);
5116 ulong8 __ovld __cnfn convert_ulong8_sat_rtp(double8);
5117 ulong8 __ovld __cnfn convert_ulong8_sat_rtz(double8);
5118 ulong16 __ovld __cnfn convert_ulong16(double16);
5119 ulong16 __ovld __cnfn convert_ulong16_rte(double16);
5120 ulong16 __ovld __cnfn convert_ulong16_rtn(double16);
5121 ulong16 __ovld __cnfn convert_ulong16_rtp(double16);
5122 ulong16 __ovld __cnfn convert_ulong16_rtz(double16);
5123 ulong16 __ovld __cnfn convert_ulong16_sat(double16);
5124 ulong16 __ovld __cnfn convert_ulong16_sat_rte(double16);
5125 ulong16 __ovld __cnfn convert_ulong16_sat_rtn(double16);
5126 ulong16 __ovld __cnfn convert_ulong16_sat_rtp(double16);
5127 ulong16 __ovld __cnfn convert_ulong16_sat_rtz(double16);
5128 
5129 float __ovld __cnfn convert_float(double);
5130 float __ovld __cnfn convert_float_rte(double);
5131 float __ovld __cnfn convert_float_rtn(double);
5132 float __ovld __cnfn convert_float_rtp(double);
5133 float __ovld __cnfn convert_float_rtz(double);
5149 float8 __ovld __cnfn convert_float8(double8);
5150 float8 __ovld __cnfn convert_float8_rte(double8);
5151 float8 __ovld __cnfn convert_float8_rtn(double8);
5152 float8 __ovld __cnfn convert_float8_rtp(double8);
5153 float8 __ovld __cnfn convert_float8_rtz(double8);
5154 float16 __ovld __cnfn convert_float16(double16);
5155 float16 __ovld __cnfn convert_float16_rte(double16);
5156 float16 __ovld __cnfn convert_float16_rtn(double16);
5157 float16 __ovld __cnfn convert_float16_rtp(double16);
5158 float16 __ovld __cnfn convert_float16_rtz(double16);
5159 
5160 double __ovld __cnfn convert_double(char);
5161 double __ovld __cnfn convert_double(double);
5162 double __ovld __cnfn convert_double(float);
5163 double __ovld __cnfn convert_double(int);
5164 double __ovld __cnfn convert_double(long);
5165 double __ovld __cnfn convert_double(short);
5166 double __ovld __cnfn convert_double(uchar);
5167 double __ovld __cnfn convert_double(uint);
5168 double __ovld __cnfn convert_double(ulong);
5169 double __ovld __cnfn convert_double(ushort);
5170 double __ovld __cnfn convert_double_rte(char);
5171 double __ovld __cnfn convert_double_rte(double);
5172 double __ovld __cnfn convert_double_rte(float);
5173 double __ovld __cnfn convert_double_rte(int);
5174 double __ovld __cnfn convert_double_rte(long);
5175 double __ovld __cnfn convert_double_rte(short);
5176 double __ovld __cnfn convert_double_rte(uchar);
5177 double __ovld __cnfn convert_double_rte(uint);
5178 double __ovld __cnfn convert_double_rte(ulong);
5179 double __ovld __cnfn convert_double_rte(ushort);
5180 double __ovld __cnfn convert_double_rtn(char);
5181 double __ovld __cnfn convert_double_rtn(double);
5182 double __ovld __cnfn convert_double_rtn(float);
5183 double __ovld __cnfn convert_double_rtn(int);
5184 double __ovld __cnfn convert_double_rtn(long);
5185 double __ovld __cnfn convert_double_rtn(short);
5186 double __ovld __cnfn convert_double_rtn(uchar);
5187 double __ovld __cnfn convert_double_rtn(uint);
5188 double __ovld __cnfn convert_double_rtn(ulong);
5189 double __ovld __cnfn convert_double_rtn(ushort);
5190 double __ovld __cnfn convert_double_rtp(char);
5191 double __ovld __cnfn convert_double_rtp(double);
5192 double __ovld __cnfn convert_double_rtp(float);
5193 double __ovld __cnfn convert_double_rtp(int);
5194 double __ovld __cnfn convert_double_rtp(long);
5195 double __ovld __cnfn convert_double_rtp(short);
5196 double __ovld __cnfn convert_double_rtp(uchar);
5197 double __ovld __cnfn convert_double_rtp(uint);
5198 double __ovld __cnfn convert_double_rtp(ulong);
5199 double __ovld __cnfn convert_double_rtp(ushort);
5200 double __ovld __cnfn convert_double_rtz(char);
5201 double __ovld __cnfn convert_double_rtz(double);
5202 double __ovld __cnfn convert_double_rtz(float);
5203 double __ovld __cnfn convert_double_rtz(int);
5204 double __ovld __cnfn convert_double_rtz(long);
5205 double __ovld __cnfn convert_double_rtz(short);
5206 double __ovld __cnfn convert_double_rtz(uchar);
5207 double __ovld __cnfn convert_double_rtz(uint);
5208 double __ovld __cnfn convert_double_rtz(ulong);
5209 double __ovld __cnfn convert_double_rtz(ushort);
5210 double2 __ovld __cnfn convert_double2(char2);
5211 double2 __ovld __cnfn convert_double2(double2);
5212 double2 __ovld __cnfn convert_double2(float2);
5213 double2 __ovld __cnfn convert_double2(int2);
5214 double2 __ovld __cnfn convert_double2(long2);
5215 double2 __ovld __cnfn convert_double2(short2);
5216 double2 __ovld __cnfn convert_double2(uchar2);
5217 double2 __ovld __cnfn convert_double2(uint2);
5218 double2 __ovld __cnfn convert_double2(ulong2);
5219 double2 __ovld __cnfn convert_double2(ushort2);
5220 double2 __ovld __cnfn convert_double2_rte(char2);
5221 double2 __ovld __cnfn convert_double2_rte(double2);
5222 double2 __ovld __cnfn convert_double2_rte(float2);
5223 double2 __ovld __cnfn convert_double2_rte(int2);
5224 double2 __ovld __cnfn convert_double2_rte(long2);
5225 double2 __ovld __cnfn convert_double2_rte(short2);
5226 double2 __ovld __cnfn convert_double2_rte(uchar2);
5227 double2 __ovld __cnfn convert_double2_rte(uint2);
5228 double2 __ovld __cnfn convert_double2_rte(ulong2);
5229 double2 __ovld __cnfn convert_double2_rte(ushort2);
5230 double2 __ovld __cnfn convert_double2_rtn(char2);
5231 double2 __ovld __cnfn convert_double2_rtn(double2);
5232 double2 __ovld __cnfn convert_double2_rtn(float2);
5233 double2 __ovld __cnfn convert_double2_rtn(int2);
5234 double2 __ovld __cnfn convert_double2_rtn(long2);
5235 double2 __ovld __cnfn convert_double2_rtn(short2);
5236 double2 __ovld __cnfn convert_double2_rtn(uchar2);
5237 double2 __ovld __cnfn convert_double2_rtn(uint2);
5238 double2 __ovld __cnfn convert_double2_rtn(ulong2);
5239 double2 __ovld __cnfn convert_double2_rtn(ushort2);
5240 double2 __ovld __cnfn convert_double2_rtp(char2);
5241 double2 __ovld __cnfn convert_double2_rtp(double2);
5242 double2 __ovld __cnfn convert_double2_rtp(float2);
5243 double2 __ovld __cnfn convert_double2_rtp(int2);
5244 double2 __ovld __cnfn convert_double2_rtp(long2);
5245 double2 __ovld __cnfn convert_double2_rtp(short2);
5246 double2 __ovld __cnfn convert_double2_rtp(uchar2);
5247 double2 __ovld __cnfn convert_double2_rtp(uint2);
5248 double2 __ovld __cnfn convert_double2_rtp(ulong2);
5249 double2 __ovld __cnfn convert_double2_rtp(ushort2);
5250 double2 __ovld __cnfn convert_double2_rtz(char2);
5251 double2 __ovld __cnfn convert_double2_rtz(double2);
5252 double2 __ovld __cnfn convert_double2_rtz(float2);
5253 double2 __ovld __cnfn convert_double2_rtz(int2);
5254 double2 __ovld __cnfn convert_double2_rtz(long2);
5255 double2 __ovld __cnfn convert_double2_rtz(short2);
5256 double2 __ovld __cnfn convert_double2_rtz(uchar2);
5257 double2 __ovld __cnfn convert_double2_rtz(uint2);
5258 double2 __ovld __cnfn convert_double2_rtz(ulong2);
5259 double2 __ovld __cnfn convert_double2_rtz(ushort2);
5260 double3 __ovld __cnfn convert_double3(char3);
5261 double3 __ovld __cnfn convert_double3(double3);
5262 double3 __ovld __cnfn convert_double3(float3);
5263 double3 __ovld __cnfn convert_double3(int3);
5264 double3 __ovld __cnfn convert_double3(long3);
5265 double3 __ovld __cnfn convert_double3(short3);
5266 double3 __ovld __cnfn convert_double3(uchar3);
5267 double3 __ovld __cnfn convert_double3(uint3);
5268 double3 __ovld __cnfn convert_double3(ulong3);
5269 double3 __ovld __cnfn convert_double3(ushort3);
5270 double3 __ovld __cnfn convert_double3_rte(char3);
5271 double3 __ovld __cnfn convert_double3_rte(double3);
5272 double3 __ovld __cnfn convert_double3_rte(float3);
5273 double3 __ovld __cnfn convert_double3_rte(int3);
5274 double3 __ovld __cnfn convert_double3_rte(long3);
5275 double3 __ovld __cnfn convert_double3_rte(short3);
5276 double3 __ovld __cnfn convert_double3_rte(uchar3);
5277 double3 __ovld __cnfn convert_double3_rte(uint3);
5278 double3 __ovld __cnfn convert_double3_rte(ulong3);
5279 double3 __ovld __cnfn convert_double3_rte(ushort3);
5280 double3 __ovld __cnfn convert_double3_rtn(char3);
5281 double3 __ovld __cnfn convert_double3_rtn(double3);
5282 double3 __ovld __cnfn convert_double3_rtn(float3);
5283 double3 __ovld __cnfn convert_double3_rtn(int3);
5284 double3 __ovld __cnfn convert_double3_rtn(long3);
5285 double3 __ovld __cnfn convert_double3_rtn(short3);
5286 double3 __ovld __cnfn convert_double3_rtn(uchar3);
5287 double3 __ovld __cnfn convert_double3_rtn(uint3);
5288 double3 __ovld __cnfn convert_double3_rtn(ulong3);
5289 double3 __ovld __cnfn convert_double3_rtn(ushort3);
5290 double3 __ovld __cnfn convert_double3_rtp(char3);
5291 double3 __ovld __cnfn convert_double3_rtp(double3);
5292 double3 __ovld __cnfn convert_double3_rtp(float3);
5293 double3 __ovld __cnfn convert_double3_rtp(int3);
5294 double3 __ovld __cnfn convert_double3_rtp(long3);
5295 double3 __ovld __cnfn convert_double3_rtp(short3);
5296 double3 __ovld __cnfn convert_double3_rtp(uchar3);
5297 double3 __ovld __cnfn convert_double3_rtp(uint3);
5298 double3 __ovld __cnfn convert_double3_rtp(ulong3);
5299 double3 __ovld __cnfn convert_double3_rtp(ushort3);
5300 double3 __ovld __cnfn convert_double3_rtz(char3);
5301 double3 __ovld __cnfn convert_double3_rtz(double3);
5302 double3 __ovld __cnfn convert_double3_rtz(float3);
5303 double3 __ovld __cnfn convert_double3_rtz(int3);
5304 double3 __ovld __cnfn convert_double3_rtz(long3);
5305 double3 __ovld __cnfn convert_double3_rtz(short3);
5306 double3 __ovld __cnfn convert_double3_rtz(uchar3);
5307 double3 __ovld __cnfn convert_double3_rtz(uint3);
5308 double3 __ovld __cnfn convert_double3_rtz(ulong3);
5309 double3 __ovld __cnfn convert_double3_rtz(ushort3);
5310 double4 __ovld __cnfn convert_double4(char4);
5311 double4 __ovld __cnfn convert_double4(double4);
5312 double4 __ovld __cnfn convert_double4(float4);
5313 double4 __ovld __cnfn convert_double4(int4);
5314 double4 __ovld __cnfn convert_double4(long4);
5315 double4 __ovld __cnfn convert_double4(short4);
5316 double4 __ovld __cnfn convert_double4(uchar4);
5317 double4 __ovld __cnfn convert_double4(uint4);
5318 double4 __ovld __cnfn convert_double4(ulong4);
5319 double4 __ovld __cnfn convert_double4(ushort4);
5320 double4 __ovld __cnfn convert_double4_rte(char4);
5321 double4 __ovld __cnfn convert_double4_rte(double4);
5322 double4 __ovld __cnfn convert_double4_rte(float4);
5323 double4 __ovld __cnfn convert_double4_rte(int4);
5324 double4 __ovld __cnfn convert_double4_rte(long4);
5325 double4 __ovld __cnfn convert_double4_rte(short4);
5326 double4 __ovld __cnfn convert_double4_rte(uchar4);
5327 double4 __ovld __cnfn convert_double4_rte(uint4);
5328 double4 __ovld __cnfn convert_double4_rte(ulong4);
5329 double4 __ovld __cnfn convert_double4_rte(ushort4);
5330 double4 __ovld __cnfn convert_double4_rtn(char4);
5331 double4 __ovld __cnfn convert_double4_rtn(double4);
5332 double4 __ovld __cnfn convert_double4_rtn(float4);
5333 double4 __ovld __cnfn convert_double4_rtn(int4);
5334 double4 __ovld __cnfn convert_double4_rtn(long4);
5335 double4 __ovld __cnfn convert_double4_rtn(short4);
5336 double4 __ovld __cnfn convert_double4_rtn(uchar4);
5337 double4 __ovld __cnfn convert_double4_rtn(uint4);
5338 double4 __ovld __cnfn convert_double4_rtn(ulong4);
5339 double4 __ovld __cnfn convert_double4_rtn(ushort4);
5340 double4 __ovld __cnfn convert_double4_rtp(char4);
5341 double4 __ovld __cnfn convert_double4_rtp(double4);
5342 double4 __ovld __cnfn convert_double4_rtp(float4);
5343 double4 __ovld __cnfn convert_double4_rtp(int4);
5344 double4 __ovld __cnfn convert_double4_rtp(long4);
5345 double4 __ovld __cnfn convert_double4_rtp(short4);
5346 double4 __ovld __cnfn convert_double4_rtp(uchar4);
5347 double4 __ovld __cnfn convert_double4_rtp(uint4);
5348 double4 __ovld __cnfn convert_double4_rtp(ulong4);
5349 double4 __ovld __cnfn convert_double4_rtp(ushort4);
5350 double4 __ovld __cnfn convert_double4_rtz(char4);
5351 double4 __ovld __cnfn convert_double4_rtz(double4);
5352 double4 __ovld __cnfn convert_double4_rtz(float4);
5353 double4 __ovld __cnfn convert_double4_rtz(int4);
5354 double4 __ovld __cnfn convert_double4_rtz(long4);
5355 double4 __ovld __cnfn convert_double4_rtz(short4);
5356 double4 __ovld __cnfn convert_double4_rtz(uchar4);
5357 double4 __ovld __cnfn convert_double4_rtz(uint4);
5358 double4 __ovld __cnfn convert_double4_rtz(ulong4);
5359 double4 __ovld __cnfn convert_double4_rtz(ushort4);
5360 double8 __ovld __cnfn convert_double8(char8);
5361 double8 __ovld __cnfn convert_double8(double8);
5362 double8 __ovld __cnfn convert_double8(float8);
5363 double8 __ovld __cnfn convert_double8(int8);
5364 double8 __ovld __cnfn convert_double8(long8);
5365 double8 __ovld __cnfn convert_double8(short8);
5366 double8 __ovld __cnfn convert_double8(uchar8);
5367 double8 __ovld __cnfn convert_double8(uint8);
5368 double8 __ovld __cnfn convert_double8(ulong8);
5369 double8 __ovld __cnfn convert_double8(ushort8);
5370 double8 __ovld __cnfn convert_double8_rte(char8);
5371 double8 __ovld __cnfn convert_double8_rte(double8);
5372 double8 __ovld __cnfn convert_double8_rte(float8);
5373 double8 __ovld __cnfn convert_double8_rte(int8);
5374 double8 __ovld __cnfn convert_double8_rte(long8);
5375 double8 __ovld __cnfn convert_double8_rte(short8);
5376 double8 __ovld __cnfn convert_double8_rte(uchar8);
5377 double8 __ovld __cnfn convert_double8_rte(uint8);
5378 double8 __ovld __cnfn convert_double8_rte(ulong8);
5379 double8 __ovld __cnfn convert_double8_rte(ushort8);
5380 double8 __ovld __cnfn convert_double8_rtn(char8);
5381 double8 __ovld __cnfn convert_double8_rtn(double8);
5382 double8 __ovld __cnfn convert_double8_rtn(float8);
5383 double8 __ovld __cnfn convert_double8_rtn(int8);
5384 double8 __ovld __cnfn convert_double8_rtn(long8);
5385 double8 __ovld __cnfn convert_double8_rtn(short8);
5386 double8 __ovld __cnfn convert_double8_rtn(uchar8);
5387 double8 __ovld __cnfn convert_double8_rtn(uint8);
5388 double8 __ovld __cnfn convert_double8_rtn(ulong8);
5389 double8 __ovld __cnfn convert_double8_rtn(ushort8);
5390 double8 __ovld __cnfn convert_double8_rtp(char8);
5391 double8 __ovld __cnfn convert_double8_rtp(double8);
5392 double8 __ovld __cnfn convert_double8_rtp(float8);
5393 double8 __ovld __cnfn convert_double8_rtp(int8);
5394 double8 __ovld __cnfn convert_double8_rtp(long8);
5395 double8 __ovld __cnfn convert_double8_rtp(short8);
5396 double8 __ovld __cnfn convert_double8_rtp(uchar8);
5397 double8 __ovld __cnfn convert_double8_rtp(uint8);
5398 double8 __ovld __cnfn convert_double8_rtp(ulong8);
5399 double8 __ovld __cnfn convert_double8_rtp(ushort8);
5400 double8 __ovld __cnfn convert_double8_rtz(char8);
5401 double8 __ovld __cnfn convert_double8_rtz(double8);
5402 double8 __ovld __cnfn convert_double8_rtz(float8);
5403 double8 __ovld __cnfn convert_double8_rtz(int8);
5404 double8 __ovld __cnfn convert_double8_rtz(long8);
5405 double8 __ovld __cnfn convert_double8_rtz(short8);
5406 double8 __ovld __cnfn convert_double8_rtz(uchar8);
5407 double8 __ovld __cnfn convert_double8_rtz(uint8);
5408 double8 __ovld __cnfn convert_double8_rtz(ulong8);
5409 double8 __ovld __cnfn convert_double8_rtz(ushort8);
5410 double16 __ovld __cnfn convert_double16(char16);
5411 double16 __ovld __cnfn convert_double16(double16);
5412 double16 __ovld __cnfn convert_double16(float16);
5413 double16 __ovld __cnfn convert_double16(int16);
5414 double16 __ovld __cnfn convert_double16(long16);
5415 double16 __ovld __cnfn convert_double16(short16);
5416 double16 __ovld __cnfn convert_double16(uchar16);
5417 double16 __ovld __cnfn convert_double16(uint16);
5418 double16 __ovld __cnfn convert_double16(ulong16);
5419 double16 __ovld __cnfn convert_double16(ushort16);
5420 double16 __ovld __cnfn convert_double16_rte(char16);
5421 double16 __ovld __cnfn convert_double16_rte(double16);
5422 double16 __ovld __cnfn convert_double16_rte(float16);
5423 double16 __ovld __cnfn convert_double16_rte(int16);
5424 double16 __ovld __cnfn convert_double16_rte(long16);
5425 double16 __ovld __cnfn convert_double16_rte(short16);
5426 double16 __ovld __cnfn convert_double16_rte(uchar16);
5427 double16 __ovld __cnfn convert_double16_rte(uint16);
5428 double16 __ovld __cnfn convert_double16_rte(ulong16);
5429 double16 __ovld __cnfn convert_double16_rte(ushort16);
5430 double16 __ovld __cnfn convert_double16_rtn(char16);
5431 double16 __ovld __cnfn convert_double16_rtn(double16);
5432 double16 __ovld __cnfn convert_double16_rtn(float16);
5433 double16 __ovld __cnfn convert_double16_rtn(int16);
5434 double16 __ovld __cnfn convert_double16_rtn(long16);
5435 double16 __ovld __cnfn convert_double16_rtn(short16);
5436 double16 __ovld __cnfn convert_double16_rtn(uchar16);
5437 double16 __ovld __cnfn convert_double16_rtn(uint16);
5438 double16 __ovld __cnfn convert_double16_rtn(ulong16);
5439 double16 __ovld __cnfn convert_double16_rtn(ushort16);
5440 double16 __ovld __cnfn convert_double16_rtp(char16);
5441 double16 __ovld __cnfn convert_double16_rtp(double16);
5442 double16 __ovld __cnfn convert_double16_rtp(float16);
5443 double16 __ovld __cnfn convert_double16_rtp(int16);
5444 double16 __ovld __cnfn convert_double16_rtp(long16);
5445 double16 __ovld __cnfn convert_double16_rtp(short16);
5446 double16 __ovld __cnfn convert_double16_rtp(uchar16);
5447 double16 __ovld __cnfn convert_double16_rtp(uint16);
5448 double16 __ovld __cnfn convert_double16_rtp(ulong16);
5449 double16 __ovld __cnfn convert_double16_rtp(ushort16);
5450 double16 __ovld __cnfn convert_double16_rtz(char16);
5451 double16 __ovld __cnfn convert_double16_rtz(double16);
5452 double16 __ovld __cnfn convert_double16_rtz(float16);
5453 double16 __ovld __cnfn convert_double16_rtz(int16);
5454 double16 __ovld __cnfn convert_double16_rtz(long16);
5455 double16 __ovld __cnfn convert_double16_rtz(short16);
5456 double16 __ovld __cnfn convert_double16_rtz(uchar16);
5457 double16 __ovld __cnfn convert_double16_rtz(uint16);
5458 double16 __ovld __cnfn convert_double16_rtz(ulong16);
5459 double16 __ovld __cnfn convert_double16_rtz(ushort16);
5460 #endif //cl_khr_fp64
5461 
5462 #ifdef cl_khr_fp16
5463 #pragma OPENCL EXTENSION cl_khr_fp16 : enable
5464 // Convert half types to non-double types.
5505 uchar8 __ovld __cnfn convert_uchar8(half8);
5506 uchar8 __ovld __cnfn convert_uchar8_rte(half8);
5507 uchar8 __ovld __cnfn convert_uchar8_rtp(half8);
5508 uchar8 __ovld __cnfn convert_uchar8_rtn(half8);
5509 uchar8 __ovld __cnfn convert_uchar8_rtz(half8);
5510 uchar8 __ovld __cnfn convert_uchar8_sat(half8);
5511 uchar8 __ovld __cnfn convert_uchar8_sat_rte(half8);
5512 uchar8 __ovld __cnfn convert_uchar8_sat_rtp(half8);
5513 uchar8 __ovld __cnfn convert_uchar8_sat_rtn(half8);
5514 uchar8 __ovld __cnfn convert_uchar8_sat_rtz(half8);
5515 uchar16 __ovld __cnfn convert_uchar16(half16);
5516 uchar16 __ovld __cnfn convert_uchar16_rte(half16);
5517 uchar16 __ovld __cnfn convert_uchar16_rtp(half16);
5518 uchar16 __ovld __cnfn convert_uchar16_rtn(half16);
5519 uchar16 __ovld __cnfn convert_uchar16_rtz(half16);
5520 uchar16 __ovld __cnfn convert_uchar16_sat(half16);
5521 uchar16 __ovld __cnfn convert_uchar16_sat_rte(half16);
5522 uchar16 __ovld __cnfn convert_uchar16_sat_rtp(half16);
5523 uchar16 __ovld __cnfn convert_uchar16_sat_rtn(half16);
5524 uchar16 __ovld __cnfn convert_uchar16_sat_rtz(half16);
5565 ushort8 __ovld __cnfn convert_ushort8(half8);
5566 ushort8 __ovld __cnfn convert_ushort8_rte(half8);
5567 ushort8 __ovld __cnfn convert_ushort8_rtp(half8);
5568 ushort8 __ovld __cnfn convert_ushort8_rtn(half8);
5569 ushort8 __ovld __cnfn convert_ushort8_rtz(half8);
5570 ushort8 __ovld __cnfn convert_ushort8_sat(half8);
5571 ushort8 __ovld __cnfn convert_ushort8_sat_rte(half8);
5572 ushort8 __ovld __cnfn convert_ushort8_sat_rtp(half8);
5573 ushort8 __ovld __cnfn convert_ushort8_sat_rtn(half8);
5574 ushort8 __ovld __cnfn convert_ushort8_sat_rtz(half8);
5575 ushort16 __ovld __cnfn convert_ushort16(half16);
5576 ushort16 __ovld __cnfn convert_ushort16_rte(half16);
5577 ushort16 __ovld __cnfn convert_ushort16_rtp(half16);
5578 ushort16 __ovld __cnfn convert_ushort16_rtn(half16);
5579 ushort16 __ovld __cnfn convert_ushort16_rtz(half16);
5580 ushort16 __ovld __cnfn convert_ushort16_sat(half16);
5581 ushort16 __ovld __cnfn convert_ushort16_sat_rte(half16);
5582 ushort16 __ovld __cnfn convert_ushort16_sat_rtp(half16);
5583 ushort16 __ovld __cnfn convert_ushort16_sat_rtn(half16);
5584 ushort16 __ovld __cnfn convert_ushort16_sat_rtz(half16);
5625 uint8 __ovld __cnfn convert_uint8(half8);
5626 uint8 __ovld __cnfn convert_uint8_rte(half8);
5627 uint8 __ovld __cnfn convert_uint8_rtp(half8);
5628 uint8 __ovld __cnfn convert_uint8_rtn(half8);
5629 uint8 __ovld __cnfn convert_uint8_rtz(half8);
5630 uint8 __ovld __cnfn convert_uint8_sat(half8);
5631 uint8 __ovld __cnfn convert_uint8_sat_rte(half8);
5632 uint8 __ovld __cnfn convert_uint8_sat_rtp(half8);
5633 uint8 __ovld __cnfn convert_uint8_sat_rtn(half8);
5634 uint8 __ovld __cnfn convert_uint8_sat_rtz(half8);
5635 uint16 __ovld __cnfn convert_uint16(half16);
5636 uint16 __ovld __cnfn convert_uint16_rte(half16);
5637 uint16 __ovld __cnfn convert_uint16_rtp(half16);
5638 uint16 __ovld __cnfn convert_uint16_rtn(half16);
5639 uint16 __ovld __cnfn convert_uint16_rtz(half16);
5640 uint16 __ovld __cnfn convert_uint16_sat(half16);
5641 uint16 __ovld __cnfn convert_uint16_sat_rte(half16);
5642 uint16 __ovld __cnfn convert_uint16_sat_rtp(half16);
5643 uint16 __ovld __cnfn convert_uint16_sat_rtn(half16);
5644 uint16 __ovld __cnfn convert_uint16_sat_rtz(half16);
5685 ulong8 __ovld __cnfn convert_ulong8(half8);
5686 ulong8 __ovld __cnfn convert_ulong8_rte(half8);
5687 ulong8 __ovld __cnfn convert_ulong8_rtp(half8);
5688 ulong8 __ovld __cnfn convert_ulong8_rtn(half8);
5689 ulong8 __ovld __cnfn convert_ulong8_rtz(half8);
5690 ulong8 __ovld __cnfn convert_ulong8_sat(half8);
5691 ulong8 __ovld __cnfn convert_ulong8_sat_rte(half8);
5692 ulong8 __ovld __cnfn convert_ulong8_sat_rtp(half8);
5693 ulong8 __ovld __cnfn convert_ulong8_sat_rtn(half8);
5694 ulong8 __ovld __cnfn convert_ulong8_sat_rtz(half8);
5695 ulong16 __ovld __cnfn convert_ulong16(half16);
5696 ulong16 __ovld __cnfn convert_ulong16_rte(half16);
5697 ulong16 __ovld __cnfn convert_ulong16_rtp(half16);
5698 ulong16 __ovld __cnfn convert_ulong16_rtn(half16);
5699 ulong16 __ovld __cnfn convert_ulong16_rtz(half16);
5700 ulong16 __ovld __cnfn convert_ulong16_sat(half16);
5701 ulong16 __ovld __cnfn convert_ulong16_sat_rte(half16);
5702 ulong16 __ovld __cnfn convert_ulong16_sat_rtp(half16);
5703 ulong16 __ovld __cnfn convert_ulong16_sat_rtn(half16);
5704 ulong16 __ovld __cnfn convert_ulong16_sat_rtz(half16);
5705 char __ovld __cnfn convert_char(half);
5706 char __ovld __cnfn convert_char_rte(half);
5707 char __ovld __cnfn convert_char_rtp(half);
5708 char __ovld __cnfn convert_char_rtn(half);
5709 char __ovld __cnfn convert_char_rtz(half);
5710 char __ovld __cnfn convert_char_sat(half);
5745 char8 __ovld __cnfn convert_char8(half8);
5746 char8 __ovld __cnfn convert_char8_rte(half8);
5747 char8 __ovld __cnfn convert_char8_rtp(half8);
5748 char8 __ovld __cnfn convert_char8_rtn(half8);
5749 char8 __ovld __cnfn convert_char8_rtz(half8);
5750 char8 __ovld __cnfn convert_char8_sat(half8);
5751 char8 __ovld __cnfn convert_char8_sat_rte(half8);
5752 char8 __ovld __cnfn convert_char8_sat_rtp(half8);
5753 char8 __ovld __cnfn convert_char8_sat_rtn(half8);
5754 char8 __ovld __cnfn convert_char8_sat_rtz(half8);
5755 char16 __ovld __cnfn convert_char16(half16);
5756 char16 __ovld __cnfn convert_char16_rte(half16);
5757 char16 __ovld __cnfn convert_char16_rtp(half16);
5758 char16 __ovld __cnfn convert_char16_rtn(half16);
5759 char16 __ovld __cnfn convert_char16_rtz(half16);
5760 char16 __ovld __cnfn convert_char16_sat(half16);
5761 char16 __ovld __cnfn convert_char16_sat_rte(half16);
5762 char16 __ovld __cnfn convert_char16_sat_rtp(half16);
5763 char16 __ovld __cnfn convert_char16_sat_rtn(half16);
5764 char16 __ovld __cnfn convert_char16_sat_rtz(half16);
5765 short __ovld __cnfn convert_short(half);
5766 short __ovld __cnfn convert_short_rte(half);
5767 short __ovld __cnfn convert_short_rtp(half);
5768 short __ovld __cnfn convert_short_rtn(half);
5769 short __ovld __cnfn convert_short_rtz(half);
5770 short __ovld __cnfn convert_short_sat(half);
5771 short __ovld __cnfn convert_short_sat_rte(half);
5772 short __ovld __cnfn convert_short_sat_rtp(half);
5773 short __ovld __cnfn convert_short_sat_rtn(half);
5774 short __ovld __cnfn convert_short_sat_rtz(half);
5805 short8 __ovld __cnfn convert_short8(half8);
5806 short8 __ovld __cnfn convert_short8_rte(half8);
5807 short8 __ovld __cnfn convert_short8_rtp(half8);
5808 short8 __ovld __cnfn convert_short8_rtn(half8);
5809 short8 __ovld __cnfn convert_short8_rtz(half8);
5810 short8 __ovld __cnfn convert_short8_sat(half8);
5811 short8 __ovld __cnfn convert_short8_sat_rte(half8);
5812 short8 __ovld __cnfn convert_short8_sat_rtp(half8);
5813 short8 __ovld __cnfn convert_short8_sat_rtn(half8);
5814 short8 __ovld __cnfn convert_short8_sat_rtz(half8);
5815 short16 __ovld __cnfn convert_short16(half16);
5816 short16 __ovld __cnfn convert_short16_rte(half16);
5817 short16 __ovld __cnfn convert_short16_rtp(half16);
5818 short16 __ovld __cnfn convert_short16_rtn(half16);
5819 short16 __ovld __cnfn convert_short16_rtz(half16);
5820 short16 __ovld __cnfn convert_short16_sat(half16);
5821 short16 __ovld __cnfn convert_short16_sat_rte(half16);
5822 short16 __ovld __cnfn convert_short16_sat_rtp(half16);
5823 short16 __ovld __cnfn convert_short16_sat_rtn(half16);
5824 short16 __ovld __cnfn convert_short16_sat_rtz(half16);
5825 int __ovld __cnfn convert_int(half);
5826 int __ovld __cnfn convert_int_rte(half);
5827 int __ovld __cnfn convert_int_rtp(half);
5828 int __ovld __cnfn convert_int_rtn(half);
5829 int __ovld __cnfn convert_int_rtz(half);
5830 int __ovld __cnfn convert_int_sat(half);
5865 int8 __ovld __cnfn convert_int8(half8);
5866 int8 __ovld __cnfn convert_int8_rte(half8);
5867 int8 __ovld __cnfn convert_int8_rtp(half8);
5868 int8 __ovld __cnfn convert_int8_rtn(half8);
5869 int8 __ovld __cnfn convert_int8_rtz(half8);
5870 int8 __ovld __cnfn convert_int8_sat(half8);
5871 int8 __ovld __cnfn convert_int8_sat_rte(half8);
5872 int8 __ovld __cnfn convert_int8_sat_rtp(half8);
5873 int8 __ovld __cnfn convert_int8_sat_rtn(half8);
5874 int8 __ovld __cnfn convert_int8_sat_rtz(half8);
5875 int16 __ovld __cnfn convert_int16(half16);
5876 int16 __ovld __cnfn convert_int16_rte(half16);
5877 int16 __ovld __cnfn convert_int16_rtp(half16);
5878 int16 __ovld __cnfn convert_int16_rtn(half16);
5879 int16 __ovld __cnfn convert_int16_rtz(half16);
5880 int16 __ovld __cnfn convert_int16_sat(half16);
5881 int16 __ovld __cnfn convert_int16_sat_rte(half16);
5882 int16 __ovld __cnfn convert_int16_sat_rtp(half16);
5883 int16 __ovld __cnfn convert_int16_sat_rtn(half16);
5884 int16 __ovld __cnfn convert_int16_sat_rtz(half16);
5885 long __ovld __cnfn convert_long(half);
5886 long __ovld __cnfn convert_long_rte(half);
5887 long __ovld __cnfn convert_long_rtp(half);
5888 long __ovld __cnfn convert_long_rtn(half);
5889 long __ovld __cnfn convert_long_rtz(half);
5890 long __ovld __cnfn convert_long_sat(half);
5925 long8 __ovld __cnfn convert_long8(half8);
5926 long8 __ovld __cnfn convert_long8_rte(half8);
5927 long8 __ovld __cnfn convert_long8_rtp(half8);
5928 long8 __ovld __cnfn convert_long8_rtn(half8);
5929 long8 __ovld __cnfn convert_long8_rtz(half8);
5930 long8 __ovld __cnfn convert_long8_sat(half8);
5931 long8 __ovld __cnfn convert_long8_sat_rte(half8);
5932 long8 __ovld __cnfn convert_long8_sat_rtp(half8);
5933 long8 __ovld __cnfn convert_long8_sat_rtn(half8);
5934 long8 __ovld __cnfn convert_long8_sat_rtz(half8);
5935 long16 __ovld __cnfn convert_long16(half16);
5936 long16 __ovld __cnfn convert_long16_rte(half16);
5937 long16 __ovld __cnfn convert_long16_rtp(half16);
5938 long16 __ovld __cnfn convert_long16_rtn(half16);
5939 long16 __ovld __cnfn convert_long16_rtz(half16);
5940 long16 __ovld __cnfn convert_long16_sat(half16);
5941 long16 __ovld __cnfn convert_long16_sat_rte(half16);
5942 long16 __ovld __cnfn convert_long16_sat_rtp(half16);
5943 long16 __ovld __cnfn convert_long16_sat_rtn(half16);
5944 long16 __ovld __cnfn convert_long16_sat_rtz(half16);
5945 float __ovld __cnfn convert_float(half);
5946 float __ovld __cnfn convert_float_rte(half);
5947 float __ovld __cnfn convert_float_rtp(half);
5948 float __ovld __cnfn convert_float_rtn(half);
5949 float __ovld __cnfn convert_float_rtz(half);
5965 float8 __ovld __cnfn convert_float8(half8);
5966 float8 __ovld __cnfn convert_float8_rte(half8);
5967 float8 __ovld __cnfn convert_float8_rtp(half8);
5968 float8 __ovld __cnfn convert_float8_rtn(half8);
5969 float8 __ovld __cnfn convert_float8_rtz(half8);
5970 float16 __ovld __cnfn convert_float16(half16);
5971 float16 __ovld __cnfn convert_float16_rte(half16);
5972 float16 __ovld __cnfn convert_float16_rtp(half16);
5973 float16 __ovld __cnfn convert_float16_rtn(half16);
5974 float16 __ovld __cnfn convert_float16_rtz(half16);
5975 
5976 // Convert non-double types to half types.
5977 half __ovld __cnfn convert_half(uchar);
5978 half __ovld __cnfn convert_half(ushort);
5979 half __ovld __cnfn convert_half(uint);
5980 half __ovld __cnfn convert_half(ulong);
5981 half __ovld __cnfn convert_half(char);
5982 half __ovld __cnfn convert_half(short);
5983 half __ovld __cnfn convert_half(int);
5984 half __ovld __cnfn convert_half(long);
5985 half __ovld __cnfn convert_half(float);
5986 half __ovld __cnfn convert_half(half);
5987 half __ovld __cnfn convert_half_rte(uchar);
5988 half __ovld __cnfn convert_half_rte(ushort);
5989 half __ovld __cnfn convert_half_rte(uint);
5990 half __ovld __cnfn convert_half_rte(ulong);
5991 half __ovld __cnfn convert_half_rte(char);
5992 half __ovld __cnfn convert_half_rte(short);
5993 half __ovld __cnfn convert_half_rte(int);
5994 half __ovld __cnfn convert_half_rte(long);
5995 half __ovld __cnfn convert_half_rte(float);
5996 half __ovld __cnfn convert_half_rte(half);
5997 half __ovld __cnfn convert_half_rtp(uchar);
5998 half __ovld __cnfn convert_half_rtp(ushort);
5999 half __ovld __cnfn convert_half_rtp(uint);
6000 half __ovld __cnfn convert_half_rtp(ulong);
6001 half __ovld __cnfn convert_half_rtp(char);
6002 half __ovld __cnfn convert_half_rtp(short);
6003 half __ovld __cnfn convert_half_rtp(int);
6004 half __ovld __cnfn convert_half_rtp(long);
6005 half __ovld __cnfn convert_half_rtp(float);
6006 half __ovld __cnfn convert_half_rtp(half);
6007 half __ovld __cnfn convert_half_rtn(uchar);
6008 half __ovld __cnfn convert_half_rtn(ushort);
6009 half __ovld __cnfn convert_half_rtn(uint);
6010 half __ovld __cnfn convert_half_rtn(ulong);
6011 half __ovld __cnfn convert_half_rtn(char);
6012 half __ovld __cnfn convert_half_rtn(short);
6013 half __ovld __cnfn convert_half_rtn(int);
6014 half __ovld __cnfn convert_half_rtn(long);
6015 half __ovld __cnfn convert_half_rtn(float);
6016 half __ovld __cnfn convert_half_rtn(half);
6017 half __ovld __cnfn convert_half_rtz(uchar);
6018 half __ovld __cnfn convert_half_rtz(ushort);
6019 half __ovld __cnfn convert_half_rtz(uint);
6020 half __ovld __cnfn convert_half_rtz(ulong);
6021 half __ovld __cnfn convert_half_rtz(char);
6022 half __ovld __cnfn convert_half_rtz(short);
6023 half __ovld __cnfn convert_half_rtz(int);
6024 half __ovld __cnfn convert_half_rtz(long);
6025 half __ovld __cnfn convert_half_rtz(float);
6026 half __ovld __cnfn convert_half_rtz(half);
6027 half2 __ovld __cnfn convert_half2(char2);
6028 half2 __ovld __cnfn convert_half2(uchar2);
6029 half2 __ovld __cnfn convert_half2(short2);
6030 half2 __ovld __cnfn convert_half2(ushort2);
6031 half2 __ovld __cnfn convert_half2(int2);
6032 half2 __ovld __cnfn convert_half2(uint2);
6033 half2 __ovld __cnfn convert_half2(long2);
6034 half2 __ovld __cnfn convert_half2(ulong2);
6035 half2 __ovld __cnfn convert_half2(float2);
6036 half2 __ovld __cnfn convert_half2(half2);
6037 half2 __ovld __cnfn convert_half2_rte(char2);
6038 half2 __ovld __cnfn convert_half2_rte(uchar2);
6039 half2 __ovld __cnfn convert_half2_rte(short2);
6040 half2 __ovld __cnfn convert_half2_rte(ushort2);
6041 half2 __ovld __cnfn convert_half2_rte(int2);
6042 half2 __ovld __cnfn convert_half2_rte(uint2);
6043 half2 __ovld __cnfn convert_half2_rte(long2);
6044 half2 __ovld __cnfn convert_half2_rte(ulong2);
6045 half2 __ovld __cnfn convert_half2_rte(float2);
6046 half2 __ovld __cnfn convert_half2_rte(half2);
6047 half2 __ovld __cnfn convert_half2_rtp(char2);
6048 half2 __ovld __cnfn convert_half2_rtp(uchar2);
6049 half2 __ovld __cnfn convert_half2_rtp(short2);
6050 half2 __ovld __cnfn convert_half2_rtp(ushort2);
6051 half2 __ovld __cnfn convert_half2_rtp(int2);
6052 half2 __ovld __cnfn convert_half2_rtp(uint2);
6053 half2 __ovld __cnfn convert_half2_rtp(long2);
6054 half2 __ovld __cnfn convert_half2_rtp(ulong2);
6055 half2 __ovld __cnfn convert_half2_rtp(float2);
6056 half2 __ovld __cnfn convert_half2_rtp(half2);
6057 half2 __ovld __cnfn convert_half2_rtn(char2);
6058 half2 __ovld __cnfn convert_half2_rtn(uchar2);
6059 half2 __ovld __cnfn convert_half2_rtn(short2);
6060 half2 __ovld __cnfn convert_half2_rtn(ushort2);
6061 half2 __ovld __cnfn convert_half2_rtn(int2);
6062 half2 __ovld __cnfn convert_half2_rtn(uint2);
6063 half2 __ovld __cnfn convert_half2_rtn(long2);
6064 half2 __ovld __cnfn convert_half2_rtn(ulong2);
6065 half2 __ovld __cnfn convert_half2_rtn(float2);
6066 half2 __ovld __cnfn convert_half2_rtn(half2);
6067 half2 __ovld __cnfn convert_half2_rtz(char2);
6068 half2 __ovld __cnfn convert_half2_rtz(uchar2);
6069 half2 __ovld __cnfn convert_half2_rtz(short2);
6070 half2 __ovld __cnfn convert_half2_rtz(ushort2);
6071 half2 __ovld __cnfn convert_half2_rtz(int2);
6072 half2 __ovld __cnfn convert_half2_rtz(uint2);
6073 half2 __ovld __cnfn convert_half2_rtz(long2);
6074 half2 __ovld __cnfn convert_half2_rtz(ulong2);
6075 half2 __ovld __cnfn convert_half2_rtz(float2);
6076 half2 __ovld __cnfn convert_half2_rtz(half2);
6077 half3 __ovld __cnfn convert_half3(char3);
6078 half3 __ovld __cnfn convert_half3(uchar3);
6079 half3 __ovld __cnfn convert_half3(short3);
6080 half3 __ovld __cnfn convert_half3(ushort3);
6081 half3 __ovld __cnfn convert_half3(int3);
6082 half3 __ovld __cnfn convert_half3(uint3);
6083 half3 __ovld __cnfn convert_half3(long3);
6084 half3 __ovld __cnfn convert_half3(ulong3);
6085 half3 __ovld __cnfn convert_half3(float3);
6086 half3 __ovld __cnfn convert_half3(half3);
6087 half3 __ovld __cnfn convert_half3_rte(char3);
6088 half3 __ovld __cnfn convert_half3_rte(uchar3);
6089 half3 __ovld __cnfn convert_half3_rte(short3);
6090 half3 __ovld __cnfn convert_half3_rte(ushort3);
6091 half3 __ovld __cnfn convert_half3_rte(int3);
6092 half3 __ovld __cnfn convert_half3_rte(uint3);
6093 half3 __ovld __cnfn convert_half3_rte(long3);
6094 half3 __ovld __cnfn convert_half3_rte(ulong3);
6095 half3 __ovld __cnfn convert_half3_rte(float3);
6096 half3 __ovld __cnfn convert_half3_rte(half3);
6097 half3 __ovld __cnfn convert_half3_rtp(char3);
6098 half3 __ovld __cnfn convert_half3_rtp(uchar3);
6099 half3 __ovld __cnfn convert_half3_rtp(short3);
6100 half3 __ovld __cnfn convert_half3_rtp(ushort3);
6101 half3 __ovld __cnfn convert_half3_rtp(int3);
6102 half3 __ovld __cnfn convert_half3_rtp(uint3);
6103 half3 __ovld __cnfn convert_half3_rtp(long3);
6104 half3 __ovld __cnfn convert_half3_rtp(ulong3);
6105 half3 __ovld __cnfn convert_half3_rtp(float3);
6106 half3 __ovld __cnfn convert_half3_rtp(half3);
6107 half3 __ovld __cnfn convert_half3_rtn(char3);
6108 half3 __ovld __cnfn convert_half3_rtn(uchar3);
6109 half3 __ovld __cnfn convert_half3_rtn(short3);
6110 half3 __ovld __cnfn convert_half3_rtn(ushort3);
6111 half3 __ovld __cnfn convert_half3_rtn(int3);
6112 half3 __ovld __cnfn convert_half3_rtn(uint3);
6113 half3 __ovld __cnfn convert_half3_rtn(long3);
6114 half3 __ovld __cnfn convert_half3_rtn(ulong3);
6115 half3 __ovld __cnfn convert_half3_rtn(float3);
6116 half3 __ovld __cnfn convert_half3_rtn(half3);
6117 half3 __ovld __cnfn convert_half3_rtz(char3);
6118 half3 __ovld __cnfn convert_half3_rtz(uchar3);
6119 half3 __ovld __cnfn convert_half3_rtz(short3);
6120 half3 __ovld __cnfn convert_half3_rtz(ushort3);
6121 half3 __ovld __cnfn convert_half3_rtz(int3);
6122 half3 __ovld __cnfn convert_half3_rtz(uint3);
6123 half3 __ovld __cnfn convert_half3_rtz(long3);
6124 half3 __ovld __cnfn convert_half3_rtz(ulong3);
6125 half3 __ovld __cnfn convert_half3_rtz(float3);
6126 half3 __ovld __cnfn convert_half3_rtz(half3);
6127 half4 __ovld __cnfn convert_half4(char4);
6128 half4 __ovld __cnfn convert_half4(uchar4);
6129 half4 __ovld __cnfn convert_half4(short4);
6130 half4 __ovld __cnfn convert_half4(ushort4);
6131 half4 __ovld __cnfn convert_half4(int4);
6132 half4 __ovld __cnfn convert_half4(uint4);
6133 half4 __ovld __cnfn convert_half4(long4);
6134 half4 __ovld __cnfn convert_half4(ulong4);
6135 half4 __ovld __cnfn convert_half4(float4);
6136 half4 __ovld __cnfn convert_half4(half4);
6137 half4 __ovld __cnfn convert_half4_rte(char4);
6138 half4 __ovld __cnfn convert_half4_rte(uchar4);
6139 half4 __ovld __cnfn convert_half4_rte(short4);
6140 half4 __ovld __cnfn convert_half4_rte(ushort4);
6141 half4 __ovld __cnfn convert_half4_rte(int4);
6142 half4 __ovld __cnfn convert_half4_rte(uint4);
6143 half4 __ovld __cnfn convert_half4_rte(long4);
6144 half4 __ovld __cnfn convert_half4_rte(ulong4);
6145 half4 __ovld __cnfn convert_half4_rte(float4);
6146 half4 __ovld __cnfn convert_half4_rte(half4);
6147 half4 __ovld __cnfn convert_half4_rtp(char4);
6148 half4 __ovld __cnfn convert_half4_rtp(uchar4);
6149 half4 __ovld __cnfn convert_half4_rtp(short4);
6150 half4 __ovld __cnfn convert_half4_rtp(ushort4);
6151 half4 __ovld __cnfn convert_half4_rtp(int4);
6152 half4 __ovld __cnfn convert_half4_rtp(uint4);
6153 half4 __ovld __cnfn convert_half4_rtp(long4);
6154 half4 __ovld __cnfn convert_half4_rtp(ulong4);
6155 half4 __ovld __cnfn convert_half4_rtp(float4);
6156 half4 __ovld __cnfn convert_half4_rtp(half4);
6157 half4 __ovld __cnfn convert_half4_rtn(char4);
6158 half4 __ovld __cnfn convert_half4_rtn(uchar4);
6159 half4 __ovld __cnfn convert_half4_rtn(short4);
6160 half4 __ovld __cnfn convert_half4_rtn(ushort4);
6161 half4 __ovld __cnfn convert_half4_rtn(int4);
6162 half4 __ovld __cnfn convert_half4_rtn(uint4);
6163 half4 __ovld __cnfn convert_half4_rtn(long4);
6164 half4 __ovld __cnfn convert_half4_rtn(ulong4);
6165 half4 __ovld __cnfn convert_half4_rtn(float4);
6166 half4 __ovld __cnfn convert_half4_rtn(half4);
6167 half4 __ovld __cnfn convert_half4_rtz(char4);
6168 half4 __ovld __cnfn convert_half4_rtz(uchar4);
6169 half4 __ovld __cnfn convert_half4_rtz(short4);
6170 half4 __ovld __cnfn convert_half4_rtz(ushort4);
6171 half4 __ovld __cnfn convert_half4_rtz(int4);
6172 half4 __ovld __cnfn convert_half4_rtz(uint4);
6173 half4 __ovld __cnfn convert_half4_rtz(long4);
6174 half4 __ovld __cnfn convert_half4_rtz(ulong4);
6175 half4 __ovld __cnfn convert_half4_rtz(float4);
6176 half4 __ovld __cnfn convert_half4_rtz(half4);
6177 half8 __ovld __cnfn convert_half8(char8);
6178 half8 __ovld __cnfn convert_half8(uchar8);
6179 half8 __ovld __cnfn convert_half8(short8);
6180 half8 __ovld __cnfn convert_half8(ushort8);
6181 half8 __ovld __cnfn convert_half8(int8);
6182 half8 __ovld __cnfn convert_half8(uint8);
6183 half8 __ovld __cnfn convert_half8(long8);
6184 half8 __ovld __cnfn convert_half8(ulong8);
6185 half8 __ovld __cnfn convert_half8(float8);
6186 half8 __ovld __cnfn convert_half8(half8);
6187 half8 __ovld __cnfn convert_half8_rte(char8);
6188 half8 __ovld __cnfn convert_half8_rte(uchar8);
6189 half8 __ovld __cnfn convert_half8_rte(short8);
6190 half8 __ovld __cnfn convert_half8_rte(ushort8);
6191 half8 __ovld __cnfn convert_half8_rte(int8);
6192 half8 __ovld __cnfn convert_half8_rte(uint8);
6193 half8 __ovld __cnfn convert_half8_rte(long8);
6194 half8 __ovld __cnfn convert_half8_rte(ulong8);
6195 half8 __ovld __cnfn convert_half8_rte(float8);
6196 half8 __ovld __cnfn convert_half8_rte(half8);
6197 half8 __ovld __cnfn convert_half8_rtp(char8);
6198 half8 __ovld __cnfn convert_half8_rtp(uchar8);
6199 half8 __ovld __cnfn convert_half8_rtp(short8);
6200 half8 __ovld __cnfn convert_half8_rtp(ushort8);
6201 half8 __ovld __cnfn convert_half8_rtp(int8);
6202 half8 __ovld __cnfn convert_half8_rtp(uint8);
6203 half8 __ovld __cnfn convert_half8_rtp(long8);
6204 half8 __ovld __cnfn convert_half8_rtp(ulong8);
6205 half8 __ovld __cnfn convert_half8_rtp(float8);
6206 half8 __ovld __cnfn convert_half8_rtp(half8);
6207 half8 __ovld __cnfn convert_half8_rtn(char8);
6208 half8 __ovld __cnfn convert_half8_rtn(uchar8);
6209 half8 __ovld __cnfn convert_half8_rtn(short8);
6210 half8 __ovld __cnfn convert_half8_rtn(ushort8);
6211 half8 __ovld __cnfn convert_half8_rtn(int8);
6212 half8 __ovld __cnfn convert_half8_rtn(uint8);
6213 half8 __ovld __cnfn convert_half8_rtn(long8);
6214 half8 __ovld __cnfn convert_half8_rtn(ulong8);
6215 half8 __ovld __cnfn convert_half8_rtn(float8);
6216 half8 __ovld __cnfn convert_half8_rtn(half8);
6217 half8 __ovld __cnfn convert_half8_rtz(char8);
6218 half8 __ovld __cnfn convert_half8_rtz(uchar8);
6219 half8 __ovld __cnfn convert_half8_rtz(short8);
6220 half8 __ovld __cnfn convert_half8_rtz(ushort8);
6221 half8 __ovld __cnfn convert_half8_rtz(int8);
6222 half8 __ovld __cnfn convert_half8_rtz(uint8);
6223 half8 __ovld __cnfn convert_half8_rtz(long8);
6224 half8 __ovld __cnfn convert_half8_rtz(ulong8);
6225 half8 __ovld __cnfn convert_half8_rtz(float8);
6226 half8 __ovld __cnfn convert_half8_rtz(half8);
6227 half16 __ovld __cnfn convert_half16(char16);
6228 half16 __ovld __cnfn convert_half16(uchar16);
6229 half16 __ovld __cnfn convert_half16(short16);
6230 half16 __ovld __cnfn convert_half16(ushort16);
6231 half16 __ovld __cnfn convert_half16(int16);
6232 half16 __ovld __cnfn convert_half16(uint16);
6233 half16 __ovld __cnfn convert_half16(long16);
6234 half16 __ovld __cnfn convert_half16(ulong16);
6235 half16 __ovld __cnfn convert_half16(float16);
6236 half16 __ovld __cnfn convert_half16(half16);
6237 half16 __ovld __cnfn convert_half16_rte(char16);
6238 half16 __ovld __cnfn convert_half16_rte(uchar16);
6239 half16 __ovld __cnfn convert_half16_rte(short16);
6240 half16 __ovld __cnfn convert_half16_rte(ushort16);
6241 half16 __ovld __cnfn convert_half16_rte(int16);
6242 half16 __ovld __cnfn convert_half16_rte(uint16);
6243 half16 __ovld __cnfn convert_half16_rte(long16);
6244 half16 __ovld __cnfn convert_half16_rte(ulong16);
6245 half16 __ovld __cnfn convert_half16_rte(float16);
6246 half16 __ovld __cnfn convert_half16_rte(half16);
6247 half16 __ovld __cnfn convert_half16_rtp(char16);
6248 half16 __ovld __cnfn convert_half16_rtp(uchar16);
6249 half16 __ovld __cnfn convert_half16_rtp(short16);
6250 half16 __ovld __cnfn convert_half16_rtp(ushort16);
6251 half16 __ovld __cnfn convert_half16_rtp(int16);
6252 half16 __ovld __cnfn convert_half16_rtp(uint16);
6253 half16 __ovld __cnfn convert_half16_rtp(long16);
6254 half16 __ovld __cnfn convert_half16_rtp(ulong16);
6255 half16 __ovld __cnfn convert_half16_rtp(float16);
6256 half16 __ovld __cnfn convert_half16_rtp(half16);
6257 half16 __ovld __cnfn convert_half16_rtn(char16);
6258 half16 __ovld __cnfn convert_half16_rtn(uchar16);
6259 half16 __ovld __cnfn convert_half16_rtn(short16);
6260 half16 __ovld __cnfn convert_half16_rtn(ushort16);
6261 half16 __ovld __cnfn convert_half16_rtn(int16);
6262 half16 __ovld __cnfn convert_half16_rtn(uint16);
6263 half16 __ovld __cnfn convert_half16_rtn(long16);
6264 half16 __ovld __cnfn convert_half16_rtn(ulong16);
6265 half16 __ovld __cnfn convert_half16_rtn(float16);
6266 half16 __ovld __cnfn convert_half16_rtn(half16);
6267 half16 __ovld __cnfn convert_half16_rtz(char16);
6268 half16 __ovld __cnfn convert_half16_rtz(uchar16);
6269 half16 __ovld __cnfn convert_half16_rtz(short16);
6270 half16 __ovld __cnfn convert_half16_rtz(ushort16);
6271 half16 __ovld __cnfn convert_half16_rtz(int16);
6272 half16 __ovld __cnfn convert_half16_rtz(uint16);
6273 half16 __ovld __cnfn convert_half16_rtz(long16);
6274 half16 __ovld __cnfn convert_half16_rtz(ulong16);
6275 half16 __ovld __cnfn convert_half16_rtz(float16);
6276 half16 __ovld __cnfn convert_half16_rtz(half16);
6277 
6278 // Convert half types to double types.
6279 #ifdef cl_khr_fp64
6280 double __ovld __cnfn convert_double(half);
6281 double __ovld __cnfn convert_double_rte(half);
6282 double __ovld __cnfn convert_double_rtp(half);
6283 double __ovld __cnfn convert_double_rtn(half);
6284 double __ovld __cnfn convert_double_rtz(half);
6285 double2 __ovld __cnfn convert_double2(half2);
6286 double2 __ovld __cnfn convert_double2_rte(half2);
6287 double2 __ovld __cnfn convert_double2_rtp(half2);
6288 double2 __ovld __cnfn convert_double2_rtn(half2);
6289 double2 __ovld __cnfn convert_double2_rtz(half2);
6290 double3 __ovld __cnfn convert_double3(half3);
6291 double3 __ovld __cnfn convert_double3_rte(half3);
6292 double3 __ovld __cnfn convert_double3_rtp(half3);
6293 double3 __ovld __cnfn convert_double3_rtn(half3);
6294 double3 __ovld __cnfn convert_double3_rtz(half3);
6295 double4 __ovld __cnfn convert_double4(half4);
6296 double4 __ovld __cnfn convert_double4_rte(half4);
6297 double4 __ovld __cnfn convert_double4_rtp(half4);
6298 double4 __ovld __cnfn convert_double4_rtn(half4);
6299 double4 __ovld __cnfn convert_double4_rtz(half4);
6300 double8 __ovld __cnfn convert_double8(half8);
6301 double8 __ovld __cnfn convert_double8_rte(half8);
6302 double8 __ovld __cnfn convert_double8_rtp(half8);
6303 double8 __ovld __cnfn convert_double8_rtn(half8);
6304 double8 __ovld __cnfn convert_double8_rtz(half8);
6305 double16 __ovld __cnfn convert_double16(half16);
6306 double16 __ovld __cnfn convert_double16_rte(half16);
6307 double16 __ovld __cnfn convert_double16_rtp(half16);
6308 double16 __ovld __cnfn convert_double16_rtn(half16);
6309 double16 __ovld __cnfn convert_double16_rtz(half16);
6310 
6311 // Convert double types to half types.
6312 half __ovld __cnfn convert_half(double);
6313 half __ovld __cnfn convert_half_rte(double);
6314 half __ovld __cnfn convert_half_rtp(double);
6315 half __ovld __cnfn convert_half_rtn(double);
6316 half __ovld __cnfn convert_half_rtz(double);
6317 half2 __ovld __cnfn convert_half2(double2);
6318 half2 __ovld __cnfn convert_half2_rte(double2);
6319 half2 __ovld __cnfn convert_half2_rtp(double2);
6320 half2 __ovld __cnfn convert_half2_rtn(double2);
6321 half2 __ovld __cnfn convert_half2_rtz(double2);
6322 half3 __ovld __cnfn convert_half3(double3);
6323 half3 __ovld __cnfn convert_half3_rte(double3);
6324 half3 __ovld __cnfn convert_half3_rtp(double3);
6325 half3 __ovld __cnfn convert_half3_rtn(double3);
6326 half3 __ovld __cnfn convert_half3_rtz(double3);
6327 half4 __ovld __cnfn convert_half4(double4);
6328 half4 __ovld __cnfn convert_half4_rte(double4);
6329 half4 __ovld __cnfn convert_half4_rtp(double4);
6330 half4 __ovld __cnfn convert_half4_rtn(double4);
6331 half4 __ovld __cnfn convert_half4_rtz(double4);
6332 half8 __ovld __cnfn convert_half8(double8);
6333 half8 __ovld __cnfn convert_half8_rte(double8);
6334 half8 __ovld __cnfn convert_half8_rtp(double8);
6335 half8 __ovld __cnfn convert_half8_rtn(double8);
6336 half8 __ovld __cnfn convert_half8_rtz(double8);
6337 half16 __ovld __cnfn convert_half16(double16);
6338 half16 __ovld __cnfn convert_half16_rte(double16);
6339 half16 __ovld __cnfn convert_half16_rtp(double16);
6340 half16 __ovld __cnfn convert_half16_rtn(double16);
6341 half16 __ovld __cnfn convert_half16_rtz(double16);
6342 #endif //cl_khr_fp64
6343 
6344 #endif // cl_khr_fp16
6345 
6346 // OpenCL v1.1 s6.11.1, v1.2 s6.12.1, v2.0 s6.13.1 - Work-item Functions
6347 
6348 /**
6349  * Returns the number of dimensions in use. This is the
6350  * value given to the work_dim argument specified in
6351  * clEnqueueNDRangeKernel.
6352  * For clEnqueueTask, this returns 1.
6353  */
6355 
6356 /**
6357  * Returns the number of global work-items specified for
6358  * dimension identified by dimindx. This value is given by
6359  * the global_work_size argument to
6360  * clEnqueueNDRangeKernel. Valid values of dimindx
6361  * are 0 to get_work_dim() - 1. For other values of
6362  * dimindx, get_global_size() returns 1.
6363  * For clEnqueueTask, this always returns 1.
6364  */
6366 
6367 /**
6368  * Returns the unique global work-item ID value for
6369  * dimension identified by dimindx. The global work-item
6370  * ID specifies the work-item ID based on the number of
6371  * global work-items specified to execute the kernel. Valid
6372  * values of dimindx are 0 to get_work_dim() - 1. For
6373  * other values of dimindx, get_global_id() returns 0.
6374  * For clEnqueueTask, this returns 0.
6375  */
6377 
6378 /**
6379  * Returns the number of local work-items specified in
6380  * dimension identified by dimindx. This value is given by
6381  * the local_work_size argument to
6382  * clEnqueueNDRangeKernel if local_work_size is not
6383  * NULL; otherwise the OpenCL implementation chooses
6384  * an appropriate local_work_size value which is returned
6385  * by this function. Valid values of dimindx are 0 to
6386  * get_work_dim() - 1. For other values of dimindx,
6387  * get_local_size() returns 1.
6388  * For clEnqueueTask, this always returns 1.
6389  */
6391 
6392 /**
6393  * Returns the unique local work-item ID i.e. a work-item
6394  * within a specific work-group for dimension identified by
6395  * dimindx. Valid values of dimindx are 0 to
6396  * get_work_dim() - 1. For other values of dimindx,
6397  * get_local_id() returns 0.
6398  * For clEnqueueTask, this returns 0.
6399  */
6401 
6402 /**
6403  * Returns the number of work-groups that will execute a
6404  * kernel for dimension identified by dimindx.
6405  * Valid values of dimindx are 0 to get_work_dim() - 1.
6406  * For other values of dimindx, get_num_groups() returns 1.
6407  * For clEnqueueTask, this always returns 1.
6408  */
6410 
6411 /**
6412  * get_group_id returns the work-group ID which is a
6413  * number from 0 .. get_num_groups(dimindx) - 1.
6414  * Valid values of dimindx are 0 to get_work_dim() - 1.
6415  * For other values, get_group_id() returns 0.
6416  * For clEnqueueTask, this returns 0.
6417  */
6419 
6420 /**
6421  * get_global_offset returns the offset values specified in
6422  * global_work_offset argument to
6423  * clEnqueueNDRangeKernel.
6424  * Valid values of dimindx are 0 to get_work_dim() - 1.
6425  * For other values, get_global_offset() returns 0.
6426  * For clEnqueueTask, this returns 0.
6427  */
6429 
6430 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
6434 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
6435 
6436 // OpenCL v1.1 s6.11.2, v1.2 s6.12.2, v2.0 s6.13.2 - Math functions
6437 
6438 /**
6439  * Arc cosine function.
6440  */
6441 float __ovld __cnfn acos(float);
6445 float8 __ovld __cnfn acos(float8);
6446 float16 __ovld __cnfn acos(float16);
6447 #ifdef cl_khr_fp64
6448 double __ovld __cnfn acos(double);
6452 double8 __ovld __cnfn acos(double8);
6453 double16 __ovld __cnfn acos(double16);
6454 #endif //cl_khr_fp64
6455 #ifdef cl_khr_fp16
6456 half __ovld __cnfn acos(half);
6460 half8 __ovld __cnfn acos(half8);
6461 half16 __ovld __cnfn acos(half16);
6462 #endif //cl_khr_fp16
6463 
6464 /**
6465  * Inverse hyperbolic cosine.
6466  */
6467 float __ovld __cnfn acosh(float);
6471 float8 __ovld __cnfn acosh(float8);
6472 float16 __ovld __cnfn acosh(float16);
6473 #ifdef cl_khr_fp64
6474 double __ovld __cnfn acosh(double);
6478 double8 __ovld __cnfn acosh(double8);
6479 double16 __ovld __cnfn acosh(double16);
6480 #endif //cl_khr_fp64
6481 #ifdef cl_khr_fp16
6482 half __ovld __cnfn acosh(half);
6486 half8 __ovld __cnfn acosh(half8);
6487 half16 __ovld __cnfn acosh(half16);
6488 #endif //cl_khr_fp16
6489 
6490 /**
6491  * Compute acos (x) / PI.
6492  */
6493 float __ovld __cnfn acospi(float);
6497 float8 __ovld __cnfn acospi(float8);
6498 float16 __ovld __cnfn acospi(float16);
6499 #ifdef cl_khr_fp64
6500 double __ovld __cnfn acospi(double);
6504 double8 __ovld __cnfn acospi(double8);
6505 double16 __ovld __cnfn acospi(double16);
6506 #endif //cl_khr_fp64
6507 #ifdef cl_khr_fp16
6508 half __ovld __cnfn acospi(half);
6512 half8 __ovld __cnfn acospi(half8);
6513 half16 __ovld __cnfn acospi(half16);
6514 #endif //cl_khr_fp16
6515 
6516 /**
6517  * Arc sine function.
6518  */
6519 float __ovld __cnfn asin(float);
6523 float8 __ovld __cnfn asin(float8);
6524 float16 __ovld __cnfn asin(float16);
6525 #ifdef cl_khr_fp64
6526 double __ovld __cnfn asin(double);
6530 double8 __ovld __cnfn asin(double8);
6531 double16 __ovld __cnfn asin(double16);
6532 #endif //cl_khr_fp64
6533 #ifdef cl_khr_fp16
6534 half __ovld __cnfn asin(half);
6538 half8 __ovld __cnfn asin(half8);
6539 half16 __ovld __cnfn asin(half16);
6540 #endif //cl_khr_fp16
6541 
6542 /**
6543  * Inverse hyperbolic sine.
6544  */
6545 float __ovld __cnfn asinh(float);
6549 float8 __ovld __cnfn asinh(float8);
6550 float16 __ovld __cnfn asinh(float16);
6551 #ifdef cl_khr_fp64
6552 double __ovld __cnfn asinh(double);
6556 double8 __ovld __cnfn asinh(double8);
6557 double16 __ovld __cnfn asinh(double16);
6558 #endif //cl_khr_fp64
6559 #ifdef cl_khr_fp16
6560 half __ovld __cnfn asinh(half);
6564 half8 __ovld __cnfn asinh(half8);
6565 half16 __ovld __cnfn asinh(half16);
6566 #endif //cl_khr_fp16
6567 
6568 /**
6569  * Compute asin (x) / PI.
6570  */
6571 float __ovld __cnfn asinpi(float);
6575 float8 __ovld __cnfn asinpi(float8);
6576 float16 __ovld __cnfn asinpi(float16);
6577 #ifdef cl_khr_fp64
6578 double __ovld __cnfn asinpi(double);
6582 double8 __ovld __cnfn asinpi(double8);
6583 double16 __ovld __cnfn asinpi(double16);
6584 #endif //cl_khr_fp64
6585 #ifdef cl_khr_fp16
6586 half __ovld __cnfn asinpi(half);
6590 half8 __ovld __cnfn asinpi(half8);
6591 half16 __ovld __cnfn asinpi(half16);
6592 #endif //cl_khr_fp16
6593 
6594 /**
6595  * Arc tangent function.
6596  */
6597 float __ovld __cnfn atan(float);
6601 float8 __ovld __cnfn atan(float8);
6602 float16 __ovld __cnfn atan(float16);
6603 #ifdef cl_khr_fp64
6604 double __ovld __cnfn atan(double);
6608 double8 __ovld __cnfn atan(double8);
6609 double16 __ovld __cnfn atan(double16);
6610 #endif //cl_khr_fp64
6611 #ifdef cl_khr_fp16
6612 half __ovld __cnfn atan(half);
6616 half8 __ovld __cnfn atan(half8);
6617 half16 __ovld __cnfn atan(half16);
6618 #endif //cl_khr_fp16
6619 
6620 /**
6621  * Arc tangent of y / x.
6622  */
6623 float __ovld __cnfn atan2(float, float);
6627 float8 __ovld __cnfn atan2(float8, float8);
6628 float16 __ovld __cnfn atan2(float16, float16);
6629 #ifdef cl_khr_fp64
6630 double __ovld __cnfn atan2(double, double);
6634 double8 __ovld __cnfn atan2(double8, double8);
6635 double16 __ovld __cnfn atan2(double16, double16);
6636 #endif //cl_khr_fp64
6637 #ifdef cl_khr_fp16
6638 half __ovld __cnfn atan2(half, half);
6642 half8 __ovld __cnfn atan2(half8, half8);
6643 half16 __ovld __cnfn atan2(half16, half16);
6644 #endif //cl_khr_fp16
6645 
6646 /**
6647  * Hyperbolic arc tangent.
6648  */
6649 float __ovld __cnfn atanh(float);
6653 float8 __ovld __cnfn atanh(float8);
6654 float16 __ovld __cnfn atanh(float16);
6655 #ifdef cl_khr_fp64
6656 double __ovld __cnfn atanh(double);
6660 double8 __ovld __cnfn atanh(double8);
6661 double16 __ovld __cnfn atanh(double16);
6662 #endif //cl_khr_fp64
6663 #ifdef cl_khr_fp16
6664 half __ovld __cnfn atanh(half);
6668 half8 __ovld __cnfn atanh(half8);
6669 half16 __ovld __cnfn atanh(half16);
6670 #endif //cl_khr_fp16
6671 
6672 /**
6673  * Compute atan (x) / PI.
6674  */
6675 float __ovld __cnfn atanpi(float);
6679 float8 __ovld __cnfn atanpi(float8);
6680 float16 __ovld __cnfn atanpi(float16);
6681 #ifdef cl_khr_fp64
6682 double __ovld __cnfn atanpi(double);
6686 double8 __ovld __cnfn atanpi(double8);
6687 double16 __ovld __cnfn atanpi(double16);
6688 #endif //cl_khr_fp64
6689 #ifdef cl_khr_fp16
6690 half __ovld __cnfn atanpi(half);
6694 half8 __ovld __cnfn atanpi(half8);
6695 half16 __ovld __cnfn atanpi(half16);
6696 #endif //cl_khr_fp16
6697 
6698 /**
6699  * Compute atan2 (y, x) / PI.
6700  */
6701 float __ovld __cnfn atan2pi(float, float);
6705 float8 __ovld __cnfn atan2pi(float8, float8);
6706 float16 __ovld __cnfn atan2pi(float16, float16);
6707 #ifdef cl_khr_fp64
6708 double __ovld __cnfn atan2pi(double, double);
6712 double8 __ovld __cnfn atan2pi(double8, double8);
6713 double16 __ovld __cnfn atan2pi(double16, double16);
6714 #endif //cl_khr_fp64
6715 #ifdef cl_khr_fp16
6716 half __ovld __cnfn atan2pi(half, half);
6720 half8 __ovld __cnfn atan2pi(half8, half8);
6721 half16 __ovld __cnfn atan2pi(half16, half16);
6722 #endif //cl_khr_fp16
6723 
6724 /**
6725  * Compute cube-root.
6726  */
6727 float __ovld __cnfn cbrt(float);
6731 float8 __ovld __cnfn cbrt(float8);
6732 float16 __ovld __cnfn cbrt(float16);
6733 #ifdef cl_khr_fp64
6734 double __ovld __cnfn cbrt(double);
6738 double8 __ovld __cnfn cbrt(double8);
6739 double16 __ovld __cnfn cbrt(double16);
6740 #endif //cl_khr_fp64
6741 #ifdef cl_khr_fp16
6742 half __ovld __cnfn cbrt(half);
6746 half8 __ovld __cnfn cbrt(half8);
6747 half16 __ovld __cnfn cbrt(half16);
6748 #endif //cl_khr_fp16
6749 
6750 /**
6751  * Round to integral value using the round to positive
6752  * infinity rounding mode.
6753  */
6754 float __ovld __cnfn ceil(float);
6758 float8 __ovld __cnfn ceil(float8);
6759 float16 __ovld __cnfn ceil(float16);
6760 #ifdef cl_khr_fp64
6761 double __ovld __cnfn ceil(double);
6765 double8 __ovld __cnfn ceil(double8);
6766 double16 __ovld __cnfn ceil(double16);
6767 #endif //cl_khr_fp64
6768 #ifdef cl_khr_fp16
6769 half __ovld __cnfn ceil(half);
6773 half8 __ovld __cnfn ceil(half8);
6774 half16 __ovld __cnfn ceil(half16);
6775 #endif //cl_khr_fp16
6776 
6777 /**
6778  * Returns x with its sign changed to match the sign of y.
6779  */
6780 float __ovld __cnfn copysign(float, float);
6784 float8 __ovld __cnfn copysign(float8, float8);
6785 float16 __ovld __cnfn copysign(float16, float16);
6786 #ifdef cl_khr_fp64
6787 double __ovld __cnfn copysign(double, double);
6791 double8 __ovld __cnfn copysign(double8, double8);
6792 double16 __ovld __cnfn copysign(double16, double16);
6793 #endif //cl_khr_fp64
6794 #ifdef cl_khr_fp16
6795 half __ovld __cnfn copysign(half, half);
6799 half8 __ovld __cnfn copysign(half8, half8);
6800 half16 __ovld __cnfn copysign(half16, half16);
6801 #endif //cl_khr_fp16
6802 
6803 /**
6804  * Compute cosine.
6805  */
6806 float __ovld __cnfn cos(float);
6810 float8 __ovld __cnfn cos(float8);
6811 float16 __ovld __cnfn cos(float16);
6812 #ifdef cl_khr_fp64
6813 double __ovld __cnfn cos(double);
6817 double8 __ovld __cnfn cos(double8);
6818 double16 __ovld __cnfn cos(double16);
6819 #endif //cl_khr_fp64
6820 #ifdef cl_khr_fp16
6821 half __ovld __cnfn cos(half);
6825 half8 __ovld __cnfn cos(half8);
6826 half16 __ovld __cnfn cos(half16);
6827 #endif //cl_khr_fp16
6828 
6829 /**
6830  * Compute hyperbolic cosine.
6831  */
6832 float __ovld __cnfn cosh(float);
6836 float8 __ovld __cnfn cosh(float8);
6837 float16 __ovld __cnfn cosh(float16);
6838 #ifdef cl_khr_fp64
6839 double __ovld __cnfn cosh(double);
6843 double8 __ovld __cnfn cosh(double8);
6844 double16 __ovld __cnfn cosh(double16);
6845 #endif //cl_khr_fp64
6846 #ifdef cl_khr_fp16
6847 half __ovld __cnfn cosh(half);
6851 half8 __ovld __cnfn cosh(half8);
6852 half16 __ovld __cnfn cosh(half16);
6853 #endif //cl_khr_fp16
6854 
6855 /**
6856  * Compute cos (PI * x).
6857  */
6858 float __ovld __cnfn cospi(float);
6862 float8 __ovld __cnfn cospi(float8);
6863 float16 __ovld __cnfn cospi(float16);
6864 #ifdef cl_khr_fp64
6865 double __ovld __cnfn cospi(double);
6869 double8 __ovld __cnfn cospi(double8);
6870 double16 __ovld __cnfn cospi(double16);
6871 #endif //cl_khr_fp64
6872 #ifdef cl_khr_fp16
6873 half __ovld __cnfn cospi(half);
6877 half8 __ovld __cnfn cospi(half8);
6878 half16 __ovld __cnfn cospi(half16);
6879 #endif //cl_khr_fp16
6880 
6881 /**
6882  * Complementary error function.
6883  */
6884 float __ovld __cnfn erfc(float);
6888 float8 __ovld __cnfn erfc(float8);
6889 float16 __ovld __cnfn erfc(float16);
6890 #ifdef cl_khr_fp64
6891 double __ovld __cnfn erfc(double);
6895 double8 __ovld __cnfn erfc(double8);
6896 double16 __ovld __cnfn erfc(double16);
6897 #endif //cl_khr_fp64
6898 #ifdef cl_khr_fp16
6899 half __ovld __cnfn erfc(half);
6903 half8 __ovld __cnfn erfc(half8);
6904 half16 __ovld __cnfn erfc(half16);
6905 #endif //cl_khr_fp16
6906 
6907 /**
6908  * Error function encountered in integrating the
6909  * normal distribution.
6910  */
6911 float __ovld __cnfn erf(float);
6915 float8 __ovld __cnfn erf(float8);
6916 float16 __ovld __cnfn erf(float16);
6917 #ifdef cl_khr_fp64
6918 double __ovld __cnfn erf(double);
6922 double8 __ovld __cnfn erf(double8);
6923 double16 __ovld __cnfn erf(double16);
6924 #endif //cl_khr_fp64
6925 #ifdef cl_khr_fp16
6926 half __ovld __cnfn erf(half);
6930 half8 __ovld __cnfn erf(half8);
6931 half16 __ovld __cnfn erf(half16);
6932 #endif //cl_khr_fp16
6933 
6934 /**
6935  * Compute the base e exponential function of x.
6936  */
6937 float __ovld __cnfn exp(float);
6941 float8 __ovld __cnfn exp(float8);
6942 float16 __ovld __cnfn exp(float16);
6943 #ifdef cl_khr_fp64
6944 double __ovld __cnfn exp(double);
6948 double8 __ovld __cnfn exp(double8);
6949 double16 __ovld __cnfn exp(double16);
6950 #endif //cl_khr_fp64
6951 #ifdef cl_khr_fp16
6952 half __ovld __cnfn exp(half);
6956 half8 __ovld __cnfn exp(half8);
6957 half16 __ovld __cnfn exp(half16);
6958 #endif //cl_khr_fp16
6959 
6960 /**
6961  * Exponential base 2 function.
6962  */
6963 float __ovld __cnfn exp2(float);
6967 float8 __ovld __cnfn exp2(float8);
6968 float16 __ovld __cnfn exp2(float16);
6969 #ifdef cl_khr_fp64
6970 double __ovld __cnfn exp2(double);
6974 double8 __ovld __cnfn exp2(double8);
6975 double16 __ovld __cnfn exp2(double16);
6976 #endif //cl_khr_fp64
6977 #ifdef cl_khr_fp16
6978 half __ovld __cnfn exp2(half);
6982 half8 __ovld __cnfn exp2(half8);
6983 half16 __ovld __cnfn exp2(half16);
6984 #endif //cl_khr_fp16
6985 
6986 /**
6987  * Exponential base 10 function.
6988  */
6989 float __ovld __cnfn exp10(float);
6993 float8 __ovld __cnfn exp10(float8);
6994 float16 __ovld __cnfn exp10(float16);
6995 #ifdef cl_khr_fp64
6996 double __ovld __cnfn exp10(double);
7000 double8 __ovld __cnfn exp10(double8);
7001 double16 __ovld __cnfn exp10(double16);
7002 #endif //cl_khr_fp64
7003 #ifdef cl_khr_fp16
7004 half __ovld __cnfn exp10(half);
7008 half8 __ovld __cnfn exp10(half8);
7009 half16 __ovld __cnfn exp10(half16);
7010 #endif //cl_khr_fp16
7011 
7012 /**
7013  * Compute e^x- 1.0.
7014  */
7015 float __ovld __cnfn expm1(float);
7019 float8 __ovld __cnfn expm1(float8);
7020 float16 __ovld __cnfn expm1(float16);
7021 #ifdef cl_khr_fp64
7022 double __ovld __cnfn expm1(double);
7026 double8 __ovld __cnfn expm1(double8);
7027 double16 __ovld __cnfn expm1(double16);
7028 #endif //cl_khr_fp64
7029 #ifdef cl_khr_fp16
7030 half __ovld __cnfn expm1(half);
7034 half8 __ovld __cnfn expm1(half8);
7035 half16 __ovld __cnfn expm1(half16);
7036 #endif //cl_khr_fp16
7037 
7038 /**
7039  * Compute absolute value of a floating-point number.
7040  */
7041 float __ovld __cnfn fabs(float);
7045 float8 __ovld __cnfn fabs(float8);
7046 float16 __ovld __cnfn fabs(float16);
7047 #ifdef cl_khr_fp64
7048 double __ovld __cnfn fabs(double);
7052 double8 __ovld __cnfn fabs(double8);
7053 double16 __ovld __cnfn fabs(double16);
7054 #endif //cl_khr_fp64
7055 #ifdef cl_khr_fp16
7056 half __ovld __cnfn fabs(half);
7060 half8 __ovld __cnfn fabs(half8);
7061 half16 __ovld __cnfn fabs(half16);
7062 #endif //cl_khr_fp16
7063 
7064 /**
7065  * x - y if x > y, +0 if x is less than or equal to y.
7066  */
7067 float __ovld __cnfn fdim(float, float);
7071 float8 __ovld __cnfn fdim(float8, float8);
7072 float16 __ovld __cnfn fdim(float16, float16);
7073 #ifdef cl_khr_fp64
7074 double __ovld __cnfn fdim(double, double);
7078 double8 __ovld __cnfn fdim(double8, double8);
7079 double16 __ovld __cnfn fdim(double16, double16);
7080 #endif //cl_khr_fp64
7081 #ifdef cl_khr_fp16
7082 half __ovld __cnfn fdim(half, half);
7086 half8 __ovld __cnfn fdim(half8, half8);
7087 half16 __ovld __cnfn fdim(half16, half16);
7088 #endif //cl_khr_fp16
7089 
7090 /**
7091  * Round to integral value using the round to -ve
7092  * infinity rounding mode.
7093  */
7094 float __ovld __cnfn floor(float);
7098 float8 __ovld __cnfn floor(float8);
7099 float16 __ovld __cnfn floor(float16);
7100 #ifdef cl_khr_fp64
7101 double __ovld __cnfn floor(double);
7105 double8 __ovld __cnfn floor(double8);
7106 double16 __ovld __cnfn floor(double16);
7107 #endif //cl_khr_fp64
7108 #ifdef cl_khr_fp16
7109 half __ovld __cnfn floor(half);
7113 half8 __ovld __cnfn floor(half8);
7114 half16 __ovld __cnfn floor(half16);
7115 #endif //cl_khr_fp16
7116 
7117 /**
7118  * Returns the correctly rounded floating-point
7119  * representation of the sum of c with the infinitely
7120  * precise product of a and b. Rounding of
7121  * intermediate products shall not occur. Edge case
7122  * behavior is per the IEEE 754-2008 standard.
7123  */
7124 float __ovld __cnfn fma(float, float, float);
7128 float8 __ovld __cnfn fma(float8, float8, float8);
7129 float16 __ovld __cnfn fma(float16, float16, float16);
7130 #ifdef cl_khr_fp64
7131 double __ovld __cnfn fma(double, double, double);
7135 double8 __ovld __cnfn fma(double8, double8, double8);
7136 double16 __ovld __cnfn fma(double16, double16, double16);
7137 #endif //cl_khr_fp64
7138 #ifdef cl_khr_fp16
7139 half __ovld __cnfn fma(half, half, half);
7143 half8 __ovld __cnfn fma(half8, half8, half8);
7144 half16 __ovld __cnfn fma(half16, half16, half16);
7145 #endif //cl_khr_fp16
7146 
7147 /**
7148  * Returns y if x < y, otherwise it returns x. If one
7149  * argument is a NaN, fmax() returns the other
7150  * argument. If both arguments are NaNs, fmax()
7151  * returns a NaN.
7152  */
7153 float __ovld __cnfn fmax(float, float);
7157 float8 __ovld __cnfn fmax(float8, float8);
7158 float16 __ovld __cnfn fmax(float16, float16);
7162 float8 __ovld __cnfn fmax(float8, float);
7163 float16 __ovld __cnfn fmax(float16, float);
7164 #ifdef cl_khr_fp64
7165 double __ovld __cnfn fmax(double, double);
7169 double8 __ovld __cnfn fmax(double8, double8);
7170 double16 __ovld __cnfn fmax(double16, double16);
7171 double2 __ovld __cnfn fmax(double2, double);
7172 double3 __ovld __cnfn fmax(double3, double);
7173 double4 __ovld __cnfn fmax(double4, double);
7174 double8 __ovld __cnfn fmax(double8, double);
7175 double16 __ovld __cnfn fmax(double16, double);
7176 #endif //cl_khr_fp64
7177 #ifdef cl_khr_fp16
7178 half __ovld __cnfn fmax(half, half);
7182 half8 __ovld __cnfn fmax(half8, half8);
7183 half16 __ovld __cnfn fmax(half16, half16);
7184 half2 __ovld __cnfn fmax(half2, half);
7185 half3 __ovld __cnfn fmax(half3, half);
7186 half4 __ovld __cnfn fmax(half4, half);
7187 half8 __ovld __cnfn fmax(half8, half);
7188 half16 __ovld __cnfn fmax(half16, half);
7189 #endif //cl_khr_fp16
7190 
7191 /**
7192  * Returns y if y < x, otherwise it returns x. If one
7193  * argument is a NaN, fmin() returns the other
7194  * argument. If both arguments are NaNs, fmin()
7195  * returns a NaN.
7196  */
7197 float __ovld __cnfn fmin(float, float);
7201 float8 __ovld __cnfn fmin(float8, float8);
7202 float16 __ovld __cnfn fmin(float16, float16);
7206 float8 __ovld __cnfn fmin(float8, float);
7207 float16 __ovld __cnfn fmin(float16, float);
7208 #ifdef cl_khr_fp64
7209 double __ovld __cnfn fmin(double, double);
7213 double8 __ovld __cnfn fmin(double8, double8);
7214 double16 __ovld __cnfn fmin(double16, double16);
7215 double2 __ovld __cnfn fmin(double2, double);
7216 double3 __ovld __cnfn fmin(double3, double);
7217 double4 __ovld __cnfn fmin(double4, double);
7218 double8 __ovld __cnfn fmin(double8, double);
7219 double16 __ovld __cnfn fmin(double16, double);
7220 #endif //cl_khr_fp64
7221 #ifdef cl_khr_fp16
7222 half __ovld __cnfn fmin(half, half);
7226 half8 __ovld __cnfn fmin(half8, half8);
7227 half16 __ovld __cnfn fmin(half16, half16);
7228 half2 __ovld __cnfn fmin(half2, half);
7229 half3 __ovld __cnfn fmin(half3, half);
7230 half4 __ovld __cnfn fmin(half4, half);
7231 half8 __ovld __cnfn fmin(half8, half);
7232 half16 __ovld __cnfn fmin(half16, half);
7233 #endif //cl_khr_fp16
7234 
7235 /**
7236  * Modulus. Returns x - y * trunc (x/y).
7237  */
7238 float __ovld __cnfn fmod(float, float);
7242 float8 __ovld __cnfn fmod(float8, float8);
7243 float16 __ovld __cnfn fmod(float16, float16);
7244 #ifdef cl_khr_fp64
7245 double __ovld __cnfn fmod(double, double);
7249 double8 __ovld __cnfn fmod(double8, double8);
7250 double16 __ovld __cnfn fmod(double16, double16);
7251 #endif //cl_khr_fp64
7252 #ifdef cl_khr_fp16
7253 half __ovld __cnfn fmod(half, half);
7257 half8 __ovld __cnfn fmod(half8, half8);
7258 half16 __ovld __cnfn fmod(half16, half16);
7259 #endif //cl_khr_fp16
7260 
7261 /**
7262  * Returns fmin(x - floor (x), 0x1.fffffep-1f ).
7263  * floor(x) is returned in iptr.
7264  */
7265 #if defined(__opencl_c_generic_address_space)
7266 float __ovld fract(float, float *);
7270 float8 __ovld fract(float8, float8 *);
7271 float16 __ovld fract(float16, float16 *);
7272 #ifdef cl_khr_fp64
7273 double __ovld fract(double, double *);
7277 double8 __ovld fract(double8, double8 *);
7278 double16 __ovld fract(double16, double16 *);
7279 #endif //cl_khr_fp64
7280 #ifdef cl_khr_fp16
7281 half __ovld fract(half, half *);
7285 half8 __ovld fract(half8, half8 *);
7286 half16 __ovld fract(half16, half16 *);
7287 #endif //cl_khr_fp16
7288 #endif //defined(__opencl_c_generic_address_space)
7289 
7290 #if defined(__opencl_c_named_address_space_builtins)
7291 float __ovld fract(float, __global float *);
7295 float8 __ovld fract(float8, __global float8 *);
7296 float16 __ovld fract(float16, __global float16 *);
7297 float __ovld fract(float, __local float *);
7301 float8 __ovld fract(float8, __local float8 *);
7302 float16 __ovld fract(float16, __local float16 *);
7303 float __ovld fract(float, __private float *);
7307 float8 __ovld fract(float8, __private float8 *);
7308 float16 __ovld fract(float16, __private float16 *);
7309 #ifdef cl_khr_fp64
7310 double __ovld fract(double, __global double *);
7311 double2 __ovld fract(double2, __global double2 *);
7312 double3 __ovld fract(double3, __global double3 *);
7313 double4 __ovld fract(double4, __global double4 *);
7314 double8 __ovld fract(double8, __global double8 *);
7315 double16 __ovld fract(double16, __global double16 *);
7316 double __ovld fract(double, __local double *);
7317 double2 __ovld fract(double2, __local double2 *);
7318 double3 __ovld fract(double3, __local double3 *);
7319 double4 __ovld fract(double4, __local double4 *);
7320 double8 __ovld fract(double8, __local double8 *);
7321 double16 __ovld fract(double16, __local double16 *);
7322 double __ovld fract(double, __private double *);
7323 double2 __ovld fract(double2, __private double2 *);
7324 double3 __ovld fract(double3, __private double3 *);
7325 double4 __ovld fract(double4, __private double4 *);
7326 double8 __ovld fract(double8, __private double8 *);
7327 double16 __ovld fract(double16, __private double16 *);
7328 #endif //cl_khr_fp64
7329 #ifdef cl_khr_fp16
7330 half __ovld fract(half, __global half *);
7331 half2 __ovld fract(half2, __global half2 *);
7332 half3 __ovld fract(half3, __global half3 *);
7333 half4 __ovld fract(half4, __global half4 *);
7334 half8 __ovld fract(half8, __global half8 *);
7335 half16 __ovld fract(half16, __global half16 *);
7336 half __ovld fract(half, __local half *);
7337 half2 __ovld fract(half2, __local half2 *);
7338 half3 __ovld fract(half3, __local half3 *);
7339 half4 __ovld fract(half4, __local half4 *);
7340 half8 __ovld fract(half8, __local half8 *);
7341 half16 __ovld fract(half16, __local half16 *);
7342 half __ovld fract(half, __private half *);
7343 half2 __ovld fract(half2, __private half2 *);
7344 half3 __ovld fract(half3, __private half3 *);
7345 half4 __ovld fract(half4, __private half4 *);
7346 half8 __ovld fract(half8, __private half8 *);
7347 half16 __ovld fract(half16, __private half16 *);
7348 #endif //cl_khr_fp16
7349 #endif //defined(__opencl_c_named_address_space_builtins)
7350 
7351 /**
7352  * Extract mantissa and exponent from x. For each
7353  * component the mantissa returned is a float with
7354  * magnitude in the interval [1/2, 1) or 0. Each
7355  * component of x equals mantissa returned * 2^exp.
7356  */
7357 #if defined(__opencl_c_generic_address_space)
7358 float __ovld frexp(float, int *);
7362 float8 __ovld frexp(float8, int8 *);
7363 float16 __ovld frexp(float16, int16 *);
7364 #ifdef cl_khr_fp64
7365 double __ovld frexp(double, int *);
7369 double8 __ovld frexp(double8, int8 *);
7370 double16 __ovld frexp(double16, int16 *);
7371 #endif //cl_khr_fp64
7372 #ifdef cl_khr_fp16
7373 half __ovld frexp(half, int *);
7377 half8 __ovld frexp(half8, int8 *);
7378 half16 __ovld frexp(half16, int16 *);
7379 #endif //cl_khr_fp16
7380 #endif //defined(__opencl_c_generic_address_space)
7381 
7382 #if defined(__opencl_c_named_address_space_builtins)
7383 float __ovld frexp(float, __global int *);
7387 float8 __ovld frexp(float8, __global int8 *);
7388 float16 __ovld frexp(float16, __global int16 *);
7389 float __ovld frexp(float, __local int *);
7393 float8 __ovld frexp(float8, __local int8 *);
7394 float16 __ovld frexp(float16, __local int16 *);
7395 float __ovld frexp(float, __private int *);
7399 float8 __ovld frexp(float8, __private int8 *);
7400 float16 __ovld frexp(float16, __private int16 *);
7401 #ifdef cl_khr_fp64
7402 double __ovld frexp(double, __global int *);
7403 double2 __ovld frexp(double2, __global int2 *);
7404 double3 __ovld frexp(double3, __global int3 *);
7405 double4 __ovld frexp(double4, __global int4 *);
7406 double8 __ovld frexp(double8, __global int8 *);
7407 double16 __ovld frexp(double16, __global int16 *);
7408 double __ovld frexp(double, __local int *);
7409 double2 __ovld frexp(double2, __local int2 *);
7410 double3 __ovld frexp(double3, __local int3 *);
7411 double4 __ovld frexp(double4, __local int4 *);
7412 double8 __ovld frexp(double8, __local int8 *);
7413 double16 __ovld frexp(double16, __local int16 *);
7414 double __ovld frexp(double, __private int *);
7415 double2 __ovld frexp(double2, __private int2 *);
7416 double3 __ovld frexp(double3, __private int3 *);
7417 double4 __ovld frexp(double4, __private int4 *);
7418 double8 __ovld frexp(double8, __private int8 *);
7419 double16 __ovld frexp(double16, __private int16 *);
7420 #endif //cl_khr_fp64
7421 #ifdef cl_khr_fp16
7422 half __ovld frexp(half, __global int *);
7423 half2 __ovld frexp(half2, __global int2 *);
7424 half3 __ovld frexp(half3, __global int3 *);
7425 half4 __ovld frexp(half4, __global int4 *);
7426 half8 __ovld frexp(half8, __global int8 *);
7427 half16 __ovld frexp(half16, __global int16 *);
7428 half __ovld frexp(half, __local int *);
7429 half2 __ovld frexp(half2, __local int2 *);
7430 half3 __ovld frexp(half3, __local int3 *);
7431 half4 __ovld frexp(half4, __local int4 *);
7432 half8 __ovld frexp(half8, __local int8 *);
7433 half16 __ovld frexp(half16, __local int16 *);
7434 half __ovld frexp(half, __private int *);
7435 half2 __ovld frexp(half2, __private int2 *);
7436 half3 __ovld frexp(half3, __private int3 *);
7437 half4 __ovld frexp(half4, __private int4 *);
7438 half8 __ovld frexp(half8, __private int8 *);
7439 half16 __ovld frexp(half16, __private int16 *);
7440 #endif //cl_khr_fp16
7441 #endif //defined(__opencl_c_named_address_space_builtins)
7442 
7443 /**
7444  * Compute the value of the square root of x^2 + y^2
7445  * without undue overflow or underflow.
7446  */
7447 float __ovld __cnfn hypot(float, float);
7451 float8 __ovld __cnfn hypot(float8, float8);
7452 float16 __ovld __cnfn hypot(float16, float16);
7453 #ifdef cl_khr_fp64
7454 double __ovld __cnfn hypot(double, double);
7458 double8 __ovld __cnfn hypot(double8, double8);
7459 double16 __ovld __cnfn hypot(double16, double16);
7460 #endif //cl_khr_fp64
7461 #ifdef cl_khr_fp16
7462 half __ovld __cnfn hypot(half, half);
7466 half8 __ovld __cnfn hypot(half8, half8);
7467 half16 __ovld __cnfn hypot(half16, half16);
7468 #endif //cl_khr_fp16
7469 
7470 /**
7471  * Return the exponent as an integer value.
7472  */
7473 int __ovld __cnfn ilogb(float);
7477 int8 __ovld __cnfn ilogb(float8);
7478 int16 __ovld __cnfn ilogb(float16);
7479 #ifdef cl_khr_fp64
7480 int __ovld __cnfn ilogb(double);
7484 int8 __ovld __cnfn ilogb(double8);
7485 int16 __ovld __cnfn ilogb(double16);
7486 #endif //cl_khr_fp64
7487 #ifdef cl_khr_fp16
7488 int __ovld __cnfn ilogb(half);
7492 int8 __ovld __cnfn ilogb(half8);
7493 int16 __ovld __cnfn ilogb(half16);
7494 #endif //cl_khr_fp16
7495 
7496 /**
7497  * Multiply x by 2 to the power n.
7498  */
7499 float __ovld __cnfn ldexp(float, int);
7503 float8 __ovld __cnfn ldexp(float8, int8);
7504 float16 __ovld __cnfn ldexp(float16, int16);
7508 float8 __ovld __cnfn ldexp(float8, int);
7509 float16 __ovld __cnfn ldexp(float16, int);
7510 #ifdef cl_khr_fp64
7511 double __ovld __cnfn ldexp(double, int);
7515 double8 __ovld __cnfn ldexp(double8, int8);
7516 double16 __ovld __cnfn ldexp(double16, int16);
7520 double8 __ovld __cnfn ldexp(double8, int);
7521 double16 __ovld __cnfn ldexp(double16, int);
7522 #endif //cl_khr_fp64
7523 #ifdef cl_khr_fp16
7524 half __ovld __cnfn ldexp(half, int);
7528 half8 __ovld __cnfn ldexp(half8, int8);
7529 half16 __ovld __cnfn ldexp(half16, int16);
7530 half2 __ovld __cnfn ldexp(half2, int);
7531 half3 __ovld __cnfn ldexp(half3, int);
7532 half4 __ovld __cnfn ldexp(half4, int);
7533 half8 __ovld __cnfn ldexp(half8, int);
7534 half16 __ovld __cnfn ldexp(half16, int);
7535 #endif //cl_khr_fp16
7536 
7537 /**
7538  * Log gamma function. Returns the natural
7539  * logarithm of the absolute value of the gamma
7540  * function. The sign of the gamma function is
7541  * returned in the signp argument of lgamma_r.
7542  */
7543 float __ovld __cnfn lgamma(float);
7547 float8 __ovld __cnfn lgamma(float8);
7548 float16 __ovld __cnfn lgamma(float16);
7549 #ifdef cl_khr_fp64
7550 double __ovld __cnfn lgamma(double);
7554 double8 __ovld __cnfn lgamma(double8);
7555 double16 __ovld __cnfn lgamma(double16);
7556 #endif //cl_khr_fp64
7557 #ifdef cl_khr_fp16
7558 half __ovld __cnfn lgamma(half);
7562 half8 __ovld __cnfn lgamma(half8);
7563 half16 __ovld __cnfn lgamma(half16);
7564 #endif //cl_khr_fp16
7565 
7566 #if defined(__opencl_c_generic_address_space)
7567 float __ovld lgamma_r(float, int *);
7571 float8 __ovld lgamma_r(float8, int8 *);
7572 float16 __ovld lgamma_r(float16, int16 *);
7573 #ifdef cl_khr_fp64
7574 double __ovld lgamma_r(double, int *);
7578 double8 __ovld lgamma_r(double8, int8 *);
7579 double16 __ovld lgamma_r(double16, int16 *);
7580 #endif //cl_khr_fp64
7581 #ifdef cl_khr_fp16
7582 half __ovld lgamma_r(half, int *);
7586 half8 __ovld lgamma_r(half8, int8 *);
7587 half16 __ovld lgamma_r(half16, int16 *);
7588 #endif //cl_khr_fp16
7589 #endif //defined(__opencl_c_generic_address_space)
7590 
7591 #if defined(__opencl_c_named_address_space_builtins)
7592 float __ovld lgamma_r(float, __global int *);
7596 float8 __ovld lgamma_r(float8, __global int8 *);
7597 float16 __ovld lgamma_r(float16, __global int16 *);
7598 float __ovld lgamma_r(float, __local int *);
7602 float8 __ovld lgamma_r(float8, __local int8 *);
7603 float16 __ovld lgamma_r(float16, __local int16 *);
7604 float __ovld lgamma_r(float, __private int *);
7608 float8 __ovld lgamma_r(float8, __private int8 *);
7609 float16 __ovld lgamma_r(float16, __private int16 *);
7610 #ifdef cl_khr_fp64
7611 double __ovld lgamma_r(double, __global int *);
7612 double2 __ovld lgamma_r(double2, __global int2 *);
7613 double3 __ovld lgamma_r(double3, __global int3 *);
7614 double4 __ovld lgamma_r(double4, __global int4 *);
7615 double8 __ovld lgamma_r(double8, __global int8 *);
7616 double16 __ovld lgamma_r(double16, __global int16 *);
7617 double __ovld lgamma_r(double, __local int *);
7618 double2 __ovld lgamma_r(double2, __local int2 *);
7619 double3 __ovld lgamma_r(double3, __local int3 *);
7620 double4 __ovld lgamma_r(double4, __local int4 *);
7621 double8 __ovld lgamma_r(double8, __local int8 *);
7622 double16 __ovld lgamma_r(double16, __local int16 *);
7623 double __ovld lgamma_r(double, __private int *);
7624 double2 __ovld lgamma_r(double2, __private int2 *);
7625 double3 __ovld lgamma_r(double3, __private int3 *);
7626 double4 __ovld lgamma_r(double4, __private int4 *);
7627 double8 __ovld lgamma_r(double8, __private int8 *);
7628 double16 __ovld lgamma_r(double16, __private int16 *);
7629 #endif //cl_khr_fp64
7630 #ifdef cl_khr_fp16
7631 half __ovld lgamma_r(half, __global int *);
7632 half2 __ovld lgamma_r(half2, __global int2 *);
7633 half3 __ovld lgamma_r(half3, __global int3 *);
7634 half4 __ovld lgamma_r(half4, __global int4 *);
7635 half8 __ovld lgamma_r(half8, __global int8 *);
7636 half16 __ovld lgamma_r(half16, __global int16 *);
7637 half __ovld lgamma_r(half, __local int *);
7638 half2 __ovld lgamma_r(half2, __local int2 *);
7639 half3 __ovld lgamma_r(half3, __local int3 *);
7640 half4 __ovld lgamma_r(half4, __local int4 *);
7641 half8 __ovld lgamma_r(half8, __local int8 *);
7642 half16 __ovld lgamma_r(half16, __local int16 *);
7643 half __ovld lgamma_r(half, __private int *);
7644 half2 __ovld lgamma_r(half2, __private int2 *);
7645 half3 __ovld lgamma_r(half3, __private int3 *);
7646 half4 __ovld lgamma_r(half4, __private int4 *);
7647 half8 __ovld lgamma_r(half8, __private int8 *);
7648 half16 __ovld lgamma_r(half16, __private int16 *);
7649 #endif //cl_khr_fp16
7650 #endif //defined(__opencl_c_named_address_space_builtins)
7651 
7652 /**
7653  * Compute natural logarithm.
7654  */
7655 float __ovld __cnfn log(float);
7659 float8 __ovld __cnfn log(float8);
7660 float16 __ovld __cnfn log(float16);
7661 #ifdef cl_khr_fp64
7662 double __ovld __cnfn log(double);
7666 double8 __ovld __cnfn log(double8);
7667 double16 __ovld __cnfn log(double16);
7668 #endif //cl_khr_fp64
7669 #ifdef cl_khr_fp16
7670 half __ovld __cnfn log(half);
7674 half8 __ovld __cnfn log(half8);
7675 half16 __ovld __cnfn log(half16);
7676 #endif //cl_khr_fp16
7677 
7678 /**
7679  * Compute a base 2 logarithm.
7680  */
7681 float __ovld __cnfn log2(float);
7685 float8 __ovld __cnfn log2(float8);
7686 float16 __ovld __cnfn log2(float16);
7687 #ifdef cl_khr_fp64
7688 double __ovld __cnfn log2(double);
7692 double8 __ovld __cnfn log2(double8);
7693 double16 __ovld __cnfn log2(double16);
7694 #endif //cl_khr_fp64
7695 #ifdef cl_khr_fp16
7696 half __ovld __cnfn log2(half);
7700 half8 __ovld __cnfn log2(half8);
7701 half16 __ovld __cnfn log2(half16);
7702 #endif //cl_khr_fp16
7703 
7704 /**
7705  * Compute a base 10 logarithm.
7706  */
7707 float __ovld __cnfn log10(float);
7711 float8 __ovld __cnfn log10(float8);
7712 float16 __ovld __cnfn log10(float16);
7713 #ifdef cl_khr_fp64
7714 double __ovld __cnfn log10(double);
7718 double8 __ovld __cnfn log10(double8);
7719 double16 __ovld __cnfn log10(double16);
7720 #endif //cl_khr_fp64
7721 #ifdef cl_khr_fp16
7722 half __ovld __cnfn log10(half);
7726 half8 __ovld __cnfn log10(half8);
7727 half16 __ovld __cnfn log10(half16);
7728 #endif //cl_khr_fp16
7729 
7730 /**
7731  * Compute a base e logarithm of (1.0 + x).
7732  */
7733 float __ovld __cnfn log1p(float);
7737 float8 __ovld __cnfn log1p(float8);
7738 float16 __ovld __cnfn log1p(float16);
7739 #ifdef cl_khr_fp64
7740 double __ovld __cnfn log1p(double);
7744 double8 __ovld __cnfn log1p(double8);
7745 double16 __ovld __cnfn log1p(double16);
7746 #endif //cl_khr_fp64
7747 #ifdef cl_khr_fp16
7748 half __ovld __cnfn log1p(half);
7752 half8 __ovld __cnfn log1p(half8);
7753 half16 __ovld __cnfn log1p(half16);
7754 #endif //cl_khr_fp16
7755 
7756 /**
7757  * Compute the exponent of x, which is the integral
7758  * part of logr | x |.
7759  */
7760 float __ovld __cnfn logb(float);
7764 float8 __ovld __cnfn logb(float8);
7765 float16 __ovld __cnfn logb(float16);
7766 #ifdef cl_khr_fp64
7767 double __ovld __cnfn logb(double);
7771 double8 __ovld __cnfn logb(double8);
7772 double16 __ovld __cnfn logb(double16);
7773 #endif //cl_khr_fp64
7774 #ifdef cl_khr_fp16
7775 half __ovld __cnfn logb(half);
7779 half8 __ovld __cnfn logb(half8);
7780 half16 __ovld __cnfn logb(half16);
7781 #endif //cl_khr_fp16
7782 
7783 /**
7784  * mad approximates a * b + c. Whether or how the
7785  * product of a * b is rounded and how supernormal or
7786  * subnormal intermediate products are handled is not
7787  * defined. mad is intended to be used where speed is
7788  * preferred over accuracy.
7789  */
7790 float __ovld __cnfn mad(float, float, float);
7794 float8 __ovld __cnfn mad(float8, float8, float8);
7795 float16 __ovld __cnfn mad(float16, float16, float16);
7796 #ifdef cl_khr_fp64
7797 double __ovld __cnfn mad(double, double, double);
7801 double8 __ovld __cnfn mad(double8, double8, double8);
7802 double16 __ovld __cnfn mad(double16, double16, double16);
7803 #endif //cl_khr_fp64
7804 #ifdef cl_khr_fp16
7805 half __ovld __cnfn mad(half, half, half);
7809 half8 __ovld __cnfn mad(half8, half8, half8);
7810 half16 __ovld __cnfn mad(half16, half16, half16);
7811 #endif //cl_khr_fp16
7812 
7813 /**
7814  * Returns x if | x | > | y |, y if | y | > | x |, otherwise
7815  * fmax(x, y).
7816  */
7817 float __ovld __cnfn maxmag(float, float);
7821 float8 __ovld __cnfn maxmag(float8, float8);
7822 float16 __ovld __cnfn maxmag(float16, float16);
7823 #ifdef cl_khr_fp64
7824 double __ovld __cnfn maxmag(double, double);
7828 double8 __ovld __cnfn maxmag(double8, double8);
7829 double16 __ovld __cnfn maxmag(double16, double16);
7830 #endif //cl_khr_fp64
7831 #ifdef cl_khr_fp16
7832 half __ovld __cnfn maxmag(half, half);
7836 half8 __ovld __cnfn maxmag(half8, half8);
7837 half16 __ovld __cnfn maxmag(half16, half16);
7838 #endif //cl_khr_fp16
7839 
7840 /**
7841  * Returns x if | x | < | y |, y if | y | < | x |, otherwise
7842  * fmin(x, y).
7843  */
7844 float __ovld __cnfn minmag(float, float);
7848 float8 __ovld __cnfn minmag(float8, float8);
7849 float16 __ovld __cnfn minmag(float16, float16);
7850 #ifdef cl_khr_fp64
7851 double __ovld __cnfn minmag(double, double);
7855 double8 __ovld __cnfn minmag(double8, double8);
7856 double16 __ovld __cnfn minmag(double16, double16);
7857 #endif //cl_khr_fp64
7858 #ifdef cl_khr_fp16
7859 half __ovld __cnfn minmag(half, half);
7863 half8 __ovld __cnfn minmag(half8, half8);
7864 half16 __ovld __cnfn minmag(half16, half16);
7865 #endif //cl_khr_fp16
7866 
7867 /**
7868  * Decompose a floating-point number. The modf
7869  * function breaks the argument x into integral and
7870  * fractional parts, each of which has the same sign as
7871  * the argument. It stores the integral part in the object
7872  * pointed to by iptr.
7873  */
7874 #if defined(__opencl_c_generic_address_space)
7875 float __ovld modf(float, float *);
7879 float8 __ovld modf(float8, float8 *);
7880 float16 __ovld modf(float16, float16 *);
7881 #ifdef cl_khr_fp64
7882 double __ovld modf(double, double *);
7886 double8 __ovld modf(double8, double8 *);
7887 double16 __ovld modf(double16, double16 *);
7888 #endif //cl_khr_fp64
7889 #ifdef cl_khr_fp16
7890 half __ovld modf(half, half *);
7894 half8 __ovld modf(half8, half8 *);
7895 half16 __ovld modf(half16, half16 *);
7896 #endif //cl_khr_fp16
7897 #endif //defined(__opencl_c_generic_address_space)
7898 
7899 #if defined(__opencl_c_named_address_space_builtins)
7900 float __ovld modf(float, __global float *);
7904 float8 __ovld modf(float8, __global float8 *);
7905 float16 __ovld modf(float16, __global float16 *);
7906 float __ovld modf(float, __local float *);
7910 float8 __ovld modf(float8, __local float8 *);
7911 float16 __ovld modf(float16, __local float16 *);
7912 float __ovld modf(float, __private float *);
7916 float8 __ovld modf(float8, __private float8 *);
7917 float16 __ovld modf(float16, __private float16 *);
7918 #ifdef cl_khr_fp64
7919 double __ovld modf(double, __global double *);
7920 double2 __ovld modf(double2, __global double2 *);
7921 double3 __ovld modf(double3, __global double3 *);
7922 double4 __ovld modf(double4, __global double4 *);
7923 double8 __ovld modf(double8, __global double8 *);
7924 double16 __ovld modf(double16, __global double16 *);
7925 double __ovld modf(double, __local double *);
7926 double2 __ovld modf(double2, __local double2 *);
7927 double3 __ovld modf(double3, __local double3 *);
7928 double4 __ovld modf(double4, __local double4 *);
7929 double8 __ovld modf(double8, __local double8 *);
7930 double16 __ovld modf(double16, __local double16 *);
7931 double __ovld modf(double, __private double *);
7932 double2 __ovld modf(double2, __private double2 *);
7933 double3 __ovld modf(double3, __private double3 *);
7934 double4 __ovld modf(double4, __private double4 *);
7935 double8 __ovld modf(double8, __private double8 *);
7936 double16 __ovld modf(double16, __private double16 *);
7937 #endif //cl_khr_fp64
7938 #ifdef cl_khr_fp16
7939 half __ovld modf(half, __global half *);
7940 half2 __ovld modf(half2, __global half2 *);
7941 half3 __ovld modf(half3, __global half3 *);
7942 half4 __ovld modf(half4, __global half4 *);
7943 half8 __ovld modf(half8, __global half8 *);
7944 half16 __ovld modf(half16, __global half16 *);
7945 half __ovld modf(half, __local half *);
7946 half2 __ovld modf(half2, __local half2 *);
7947 half3 __ovld modf(half3, __local half3 *);
7948 half4 __ovld modf(half4, __local half4 *);
7949 half8 __ovld modf(half8, __local half8 *);
7950 half16 __ovld modf(half16, __local half16 *);
7951 half __ovld modf(half, __private half *);
7952 half2 __ovld modf(half2, __private half2 *);
7953 half3 __ovld modf(half3, __private half3 *);
7954 half4 __ovld modf(half4, __private half4 *);
7955 half8 __ovld modf(half8, __private half8 *);
7956 half16 __ovld modf(half16, __private half16 *);
7957 #endif //cl_khr_fp16
7958 #endif //defined(__opencl_c_named_address_space_builtins)
7959 
7960 /**
7961  * Returns a quiet NaN. The nancode may be placed
7962  * in the significand of the resulting NaN.
7963  */
7968 float8 __ovld __cnfn nan(uint8);
7969 float16 __ovld __cnfn nan(uint16);
7970 #ifdef cl_khr_fp64
7971 double __ovld __cnfn nan(ulong);
7972 double2 __ovld __cnfn nan(ulong2);
7973 double3 __ovld __cnfn nan(ulong3);
7974 double4 __ovld __cnfn nan(ulong4);
7975 double8 __ovld __cnfn nan(ulong8);
7976 double16 __ovld __cnfn nan(ulong16);
7977 #endif //cl_khr_fp64
7978 #ifdef cl_khr_fp16
7979 half __ovld __cnfn nan(ushort);
7980 half2 __ovld __cnfn nan(ushort2);
7981 half3 __ovld __cnfn nan(ushort3);
7982 half4 __ovld __cnfn nan(ushort4);
7983 half8 __ovld __cnfn nan(ushort8);
7984 half16 __ovld __cnfn nan(ushort16);
7985 #endif //cl_khr_fp16
7986 
7987 /**
7988  * Computes the next representable single-precision
7989  * floating-point value following x in the direction of
7990  * y. Thus, if y is less than x, nextafter() returns the
7991  * largest representable floating-point number less
7992  * than x.
7993  */
7994 float __ovld __cnfn nextafter(float, float);
7998 float8 __ovld __cnfn nextafter(float8, float8);
7999 float16 __ovld __cnfn nextafter(float16, float16);
8000 #ifdef cl_khr_fp64
8001 double __ovld __cnfn nextafter(double, double);
8005 double8 __ovld __cnfn nextafter(double8, double8);
8006 double16 __ovld __cnfn nextafter(double16, double16);
8007 #endif //cl_khr_fp64
8008 #ifdef cl_khr_fp16
8009 half __ovld __cnfn nextafter(half, half);
8013 half8 __ovld __cnfn nextafter(half8, half8);
8014 half16 __ovld __cnfn nextafter(half16, half16);
8015 #endif //cl_khr_fp16
8016 
8017 /**
8018  * Compute x to the power y.
8019  */
8020 float __ovld __cnfn pow(float, float);
8024 float8 __ovld __cnfn pow(float8, float8);
8025 float16 __ovld __cnfn pow(float16, float16);
8026 #ifdef cl_khr_fp64
8027 double __ovld __cnfn pow(double, double);
8031 double8 __ovld __cnfn pow(double8, double8);
8032 double16 __ovld __cnfn pow(double16, double16);
8033 #endif //cl_khr_fp64
8034 #ifdef cl_khr_fp16
8035 half __ovld __cnfn pow(half, half);
8039 half8 __ovld __cnfn pow(half8, half8);
8040 half16 __ovld __cnfn pow(half16, half16);
8041 #endif //cl_khr_fp16
8042 
8043 /**
8044  * Compute x to the power y, where y is an integer.
8045  */
8046 float __ovld __cnfn pown(float, int);
8050 float8 __ovld __cnfn pown(float8, int8);
8051 float16 __ovld __cnfn pown(float16, int16);
8052 #ifdef cl_khr_fp64
8053 double __ovld __cnfn pown(double, int);
8057 double8 __ovld __cnfn pown(double8, int8);
8058 double16 __ovld __cnfn pown(double16, int16);
8059 #endif //cl_khr_fp64
8060 #ifdef cl_khr_fp16
8061 half __ovld __cnfn pown(half, int);
8065 half8 __ovld __cnfn pown(half8, int8);
8066 half16 __ovld __cnfn pown(half16, int16);
8067 #endif //cl_khr_fp16
8068 
8069 /**
8070  * Compute x to the power y, where x is >= 0.
8071  */
8072 float __ovld __cnfn powr(float, float);
8076 float8 __ovld __cnfn powr(float8, float8);
8077 float16 __ovld __cnfn powr(float16, float16);
8078 #ifdef cl_khr_fp64
8079 double __ovld __cnfn powr(double, double);
8083 double8 __ovld __cnfn powr(double8, double8);
8084 double16 __ovld __cnfn powr(double16, double16);
8085 #endif //cl_khr_fp64
8086 #ifdef cl_khr_fp16
8087 half __ovld __cnfn powr(half, half);
8091 half8 __ovld __cnfn powr(half8, half8);
8092 half16 __ovld __cnfn powr(half16, half16);
8093 #endif //cl_khr_fp16
8094 
8095 /**
8096  * Compute the value r such that r = x - n*y, where n
8097  * is the integer nearest the exact value of x/y. If there
8098  * are two integers closest to x/y, n shall be the even
8099  * one. If r is zero, it is given the same sign as x.
8100  */
8101 float __ovld __cnfn remainder(float, float);
8105 float8 __ovld __cnfn remainder(float8, float8);
8106 float16 __ovld __cnfn remainder(float16, float16);
8107 #ifdef cl_khr_fp64
8108 double __ovld __cnfn remainder(double, double);
8112 double8 __ovld __cnfn remainder(double8, double8);
8113 double16 __ovld __cnfn remainder(double16, double16);
8114 #endif //cl_khr_fp64
8115 #ifdef cl_khr_fp16
8116 half __ovld __cnfn remainder(half, half);
8120 half8 __ovld __cnfn remainder(half8, half8);
8121 half16 __ovld __cnfn remainder(half16, half16);
8122 #endif //cl_khr_fp16
8123 
8124 /**
8125  * The remquo function computes the value r such
8126  * that r = x - n*y, where n is the integer nearest the
8127  * exact value of x/y. If there are two integers closest
8128  * to x/y, n shall be the even one. If r is zero, it is
8129  * given the same sign as x. This is the same value
8130  * that is returned by the remainder function.
8131  * remquo also calculates the lower seven bits of the
8132  * integral quotient x/y, and gives that value the same
8133  * sign as x/y. It stores this signed value in the object
8134  * pointed to by quo.
8135  */
8136 #if defined(__opencl_c_generic_address_space)
8137 float __ovld remquo(float, float, int *);
8141 float8 __ovld remquo(float8, float8, int8 *);
8142 float16 __ovld remquo(float16, float16, int16 *);
8143 #ifdef cl_khr_fp64
8144 double __ovld remquo(double, double, int *);
8148 double8 __ovld remquo(double8, double8, int8 *);
8149 double16 __ovld remquo(double16, double16, int16 *);
8150 #endif //cl_khr_fp64
8151 #ifdef cl_khr_fp16
8152 half __ovld remquo(half, half, int *);
8156 half8 __ovld remquo(half8, half8, int8 *);
8157 half16 __ovld remquo(half16, half16, int16 *);
8158 #endif //cl_khr_fp16
8159 #endif //defined(__opencl_c_generic_address_space)
8160 
8161 #if defined(__opencl_c_named_address_space_builtins)
8162 float __ovld remquo(float, float, __global int *);
8166 float8 __ovld remquo(float8, float8, __global int8 *);
8167 float16 __ovld remquo(float16, float16, __global int16 *);
8168 float __ovld remquo(float, float, __local int *);
8172 float8 __ovld remquo(float8, float8, __local int8 *);
8173 float16 __ovld remquo(float16, float16, __local int16 *);
8174 float __ovld remquo(float, float, __private int *);
8178 float8 __ovld remquo(float8, float8, __private int8 *);
8179 float16 __ovld remquo(float16, float16, __private int16 *);
8180 #ifdef cl_khr_fp64
8181 double __ovld remquo(double, double, __global int *);
8182 double2 __ovld remquo(double2, double2, __global int2 *);
8183 double3 __ovld remquo(double3, double3, __global int3 *);
8184 double4 __ovld remquo(double4, double4, __global int4 *);
8185 double8 __ovld remquo(double8, double8, __global int8 *);
8186 double16 __ovld remquo(double16, double16, __global int16 *);
8187 double __ovld remquo(double, double, __local int *);
8188 double2 __ovld remquo(double2, double2, __local int2 *);
8189 double3 __ovld remquo(double3, double3, __local int3 *);
8190 double4 __ovld remquo(double4, double4, __local int4 *);
8191 double8 __ovld remquo(double8, double8, __local int8 *);
8192 double16 __ovld remquo(double16, double16, __local int16 *);
8193 double __ovld remquo(double, double, __private int *);
8194 double2 __ovld remquo(double2, double2, __private int2 *);
8195 double3 __ovld remquo(double3, double3, __private int3 *);
8196 double4 __ovld remquo(double4, double4, __private int4 *);
8197 double8 __ovld remquo(double8, double8, __private int8 *);
8198 double16 __ovld remquo(double16, double16, __private int16 *);
8199 #endif //cl_khr_fp64
8200 #ifdef cl_khr_fp16
8201 half __ovld remquo(half, half, __global int *);
8202 half2 __ovld remquo(half2, half2, __global int2 *);
8203 half3 __ovld remquo(half3, half3, __global int3 *);
8204 half4 __ovld remquo(half4, half4, __global int4 *);
8205 half8 __ovld remquo(half8, half8, __global int8 *);
8206 half16 __ovld remquo(half16, half16, __global int16 *);
8207 half __ovld remquo(half, half, __local int *);
8208 half2 __ovld remquo(half2, half2, __local int2 *);
8209 half3 __ovld remquo(half3, half3, __local int3 *);
8210 half4 __ovld remquo(half4, half4, __local int4 *);
8211 half8 __ovld remquo(half8, half8, __local int8 *);
8212 half16 __ovld remquo(half16, half16, __local int16 *);
8213 half __ovld remquo(half, half, __private int *);
8214 half2 __ovld remquo(half2, half2, __private int2 *);
8215 half3 __ovld remquo(half3, half3, __private int3 *);
8216 half4 __ovld remquo(half4, half4, __private int4 *);
8217 half8 __ovld remquo(half8, half8, __private int8 *);
8218 half16 __ovld remquo(half16, half16, __private int16 *);
8219 #endif //cl_khr_fp16
8220 #endif //defined(__opencl_c_named_address_space_builtins)
8221 /**
8222  * Round to integral value (using round to nearest
8223  * even rounding mode) in floating-point format.
8224  * Refer to section 7.1 for description of rounding
8225  * modes.
8226  */
8227 float __ovld __cnfn rint(float);
8231 float8 __ovld __cnfn rint(float8);
8232 float16 __ovld __cnfn rint(float16);
8233 #ifdef cl_khr_fp64
8234 double __ovld __cnfn rint(double);
8238 double8 __ovld __cnfn rint(double8);
8239 double16 __ovld __cnfn rint(double16);
8240 #endif //cl_khr_fp64
8241 #ifdef cl_khr_fp16
8242 half __ovld __cnfn rint(half);
8246 half8 __ovld __cnfn rint(half8);
8247 half16 __ovld __cnfn rint(half16);
8248 #endif //cl_khr_fp16
8249 
8250 /**
8251  * Compute x to the power 1/y.
8252  */
8253 float __ovld __cnfn rootn(float, int);
8257 float8 __ovld __cnfn rootn(float8, int8);
8258 float16 __ovld __cnfn rootn(float16, int16);
8259 #ifdef cl_khr_fp64
8260 double __ovld __cnfn rootn(double, int);
8264 double8 __ovld __cnfn rootn(double8, int8);
8265 double16 __ovld __cnfn rootn(double16, int16);
8266 #endif //cl_khr_fp64
8267 #ifdef cl_khr_fp16
8268 half __ovld __cnfn rootn(half, int);
8272 half8 __ovld __cnfn rootn(half8, int8);
8273 half16 __ovld __cnfn rootn(half16, int16);
8274 #endif //cl_khr_fp16
8275 
8276 /**
8277  * Return the integral value nearest to x rounding
8278  * halfway cases away from zero, regardless of the
8279  * current rounding direction.
8280  */
8281 float __ovld __cnfn round(float);
8285 float8 __ovld __cnfn round(float8);
8286 float16 __ovld __cnfn round(float16);
8287 #ifdef cl_khr_fp64
8288 double __ovld __cnfn round(double);
8292 double8 __ovld __cnfn round(double8);
8293 double16 __ovld __cnfn round(double16);
8294 #endif //cl_khr_fp64
8295 #ifdef cl_khr_fp16
8296 half __ovld __cnfn round(half);
8300 half8 __ovld __cnfn round(half8);
8301 half16 __ovld __cnfn round(half16);
8302 #endif //cl_khr_fp16
8303 
8304 /**
8305  * Compute inverse square root.
8306  */
8307 float __ovld __cnfn rsqrt(float);
8311 float8 __ovld __cnfn rsqrt(float8);
8312 float16 __ovld __cnfn rsqrt(float16);
8313 #ifdef cl_khr_fp64
8314 double __ovld __cnfn rsqrt(double);
8318 double8 __ovld __cnfn rsqrt(double8);
8319 double16 __ovld __cnfn rsqrt(double16);
8320 #endif //cl_khr_fp64
8321 #ifdef cl_khr_fp16
8322 half __ovld __cnfn rsqrt(half);
8326 half8 __ovld __cnfn rsqrt(half8);
8327 half16 __ovld __cnfn rsqrt(half16);
8328 #endif //cl_khr_fp16
8329 
8330 /**
8331  * Compute sine.
8332  */
8333 float __ovld __cnfn sin(float);
8337 float8 __ovld __cnfn sin(float8);
8338 float16 __ovld __cnfn sin(float16);
8339 #ifdef cl_khr_fp64
8340 double __ovld __cnfn sin(double);
8344 double8 __ovld __cnfn sin(double8);
8345 double16 __ovld __cnfn sin(double16);
8346 #endif //cl_khr_fp64
8347 #ifdef cl_khr_fp16
8348 half __ovld __cnfn sin(half);
8352 half8 __ovld __cnfn sin(half8);
8353 half16 __ovld __cnfn sin(half16);
8354 #endif //cl_khr_fp16
8355 
8356 /**
8357  * Compute sine and cosine of x. The computed sine
8358  * is the return value and computed cosine is returned
8359  * in cosval.
8360  */
8361 #if defined(__opencl_c_generic_address_space)
8362 float __ovld sincos(float, float *);
8366 float8 __ovld sincos(float8, float8 *);
8367 float16 __ovld sincos(float16, float16 *);
8368 #ifdef cl_khr_fp64
8369 double __ovld sincos(double, double *);
8373 double8 __ovld sincos(double8, double8 *);
8374 double16 __ovld sincos(double16, double16 *);
8375 #endif //cl_khr_fp64
8376 #ifdef cl_khr_fp16
8377 half __ovld sincos(half, half *);
8381 half8 __ovld sincos(half8, half8 *);
8382 half16 __ovld sincos(half16, half16 *);
8383 #endif //cl_khr_fp16
8384 #endif //defined(__opencl_c_generic_address_space)
8385 
8386 #if defined(__opencl_c_named_address_space_builtins)
8387 float __ovld sincos(float, __global float *);
8391 float8 __ovld sincos(float8, __global float8 *);
8392 float16 __ovld sincos(float16, __global float16 *);
8393 float __ovld sincos(float, __local float *);
8397 float8 __ovld sincos(float8, __local float8 *);
8398 float16 __ovld sincos(float16, __local float16 *);
8399 float __ovld sincos(float, __private float *);
8403 float8 __ovld sincos(float8, __private float8 *);
8404 float16 __ovld sincos(float16, __private float16 *);
8405 #ifdef cl_khr_fp64
8406 double __ovld sincos(double, __global double *);
8407 double2 __ovld sincos(double2, __global double2 *);
8408 double3 __ovld sincos(double3, __global double3 *);
8409 double4 __ovld sincos(double4, __global double4 *);
8410 double8 __ovld sincos(double8, __global double8 *);
8411 double16 __ovld sincos(double16, __global double16 *);
8412 double __ovld sincos(double, __local double *);
8413 double2 __ovld sincos(double2, __local double2 *);
8414 double3 __ovld sincos(double3, __local double3 *);
8415 double4 __ovld sincos(double4, __local double4 *);
8416 double8 __ovld sincos(double8, __local double8 *);
8417 double16 __ovld sincos(double16, __local double16 *);
8418 double __ovld sincos(double, __private double *);
8419 double2 __ovld sincos(double2, __private double2 *);
8420 double3 __ovld sincos(double3, __private double3 *);
8421 double4 __ovld sincos(double4, __private double4 *);
8422 double8 __ovld sincos(double8, __private double8 *);
8423 double16 __ovld sincos(double16, __private double16 *);
8424 #endif //cl_khr_fp64
8425 #ifdef cl_khr_fp16
8426 half __ovld sincos(half, __global half *);
8427 half2 __ovld sincos(half2, __global half2 *);
8428 half3 __ovld sincos(half3, __global half3 *);
8429 half4 __ovld sincos(half4, __global half4 *);
8430 half8 __ovld sincos(half8, __global half8 *);
8431 half16 __ovld sincos(half16, __global half16 *);
8432 half __ovld sincos(half, __local half *);
8433 half2 __ovld sincos(half2, __local half2 *);
8434 half3 __ovld sincos(half3, __local half3 *);
8435 half4 __ovld sincos(half4, __local half4 *);
8436 half8 __ovld sincos(half8, __local half8 *);
8437 half16 __ovld sincos(half16, __local half16 *);
8438 half __ovld sincos(half, __private half *);
8439 half2 __ovld sincos(half2, __private half2 *);
8440 half3 __ovld sincos(half3, __private half3 *);
8441 half4 __ovld sincos(half4, __private half4 *);
8442 half8 __ovld sincos(half8, __private half8 *);
8443 half16 __ovld sincos(half16, __private half16 *);
8444 #endif //cl_khr_fp16
8445 #endif //defined(__opencl_c_named_address_space_builtins)
8446 
8447 /**
8448  * Compute hyperbolic sine.
8449  */
8450 float __ovld __cnfn sinh(float);
8454 float8 __ovld __cnfn sinh(float8);
8455 float16 __ovld __cnfn sinh(float16);
8456 #ifdef cl_khr_fp64
8457 double __ovld __cnfn sinh(double);
8461 double8 __ovld __cnfn sinh(double8);
8462 double16 __ovld __cnfn sinh(double16);
8463 #endif //cl_khr_fp64
8464 #ifdef cl_khr_fp16
8465 half __ovld __cnfn sinh(half);
8469 half8 __ovld __cnfn sinh(half8);
8470 half16 __ovld __cnfn sinh(half16);
8471 #endif //cl_khr_fp16
8472 
8473 /**
8474  * Compute sin (PI * x).
8475  */
8476 float __ovld __cnfn sinpi(float);
8480 float8 __ovld __cnfn sinpi(float8);
8481 float16 __ovld __cnfn sinpi(float16);
8482 #ifdef cl_khr_fp64
8483 double __ovld __cnfn sinpi(double);
8487 double8 __ovld __cnfn sinpi(double8);
8488 double16 __ovld __cnfn sinpi(double16);
8489 #endif //cl_khr_fp64
8490 #ifdef cl_khr_fp16
8491 half __ovld __cnfn sinpi(half);
8495 half8 __ovld __cnfn sinpi(half8);
8496 half16 __ovld __cnfn sinpi(half16);
8497 #endif //cl_khr_fp16
8498 
8499 /**
8500  * Compute square root.
8501  */
8502 float __ovld __cnfn sqrt(float);
8506 float8 __ovld __cnfn sqrt(float8);
8507 float16 __ovld __cnfn sqrt(float16);
8508 #ifdef cl_khr_fp64
8509 double __ovld __cnfn sqrt(double);
8513 double8 __ovld __cnfn sqrt(double8);
8514 double16 __ovld __cnfn sqrt(double16);
8515 #endif //cl_khr_fp64
8516 #ifdef cl_khr_fp16
8517 half __ovld __cnfn sqrt(half);
8521 half8 __ovld __cnfn sqrt(half8);
8522 half16 __ovld __cnfn sqrt(half16);
8523 #endif //cl_khr_fp16
8524 
8525 /**
8526  * Compute tangent.
8527  */
8528 float __ovld __cnfn tan(float);
8532 float8 __ovld __cnfn tan(float8);
8533 float16 __ovld __cnfn tan(float16);
8534 #ifdef cl_khr_fp64
8535 double __ovld __cnfn tan(double);
8539 double8 __ovld __cnfn tan(double8);
8540 double16 __ovld __cnfn tan(double16);
8541 #endif //cl_khr_fp64
8542 #ifdef cl_khr_fp16
8543 half __ovld __cnfn tan(half);
8547 half8 __ovld __cnfn tan(half8);
8548 half16 __ovld __cnfn tan(half16);
8549 #endif //cl_khr_fp16
8550 
8551 /**
8552  * Compute hyperbolic tangent.
8553  */
8554 float __ovld __cnfn tanh(float);
8558 float8 __ovld __cnfn tanh(float8);
8559 float16 __ovld __cnfn tanh(float16);
8560 #ifdef cl_khr_fp64
8561 double __ovld __cnfn tanh(double);
8565 double8 __ovld __cnfn tanh(double8);
8566 double16 __ovld __cnfn tanh(double16);
8567 #endif //cl_khr_fp64
8568 #ifdef cl_khr_fp16
8569 half __ovld __cnfn tanh(half);
8573 half8 __ovld __cnfn tanh(half8);
8574 half16 __ovld __cnfn tanh(half16);
8575 #endif //cl_khr_fp16
8576 
8577 /**
8578  * Compute tan (PI * x).
8579  */
8580 float __ovld __cnfn tanpi(float);
8584 float8 __ovld __cnfn tanpi(float8);
8585 float16 __ovld __cnfn tanpi(float16);
8586 #ifdef cl_khr_fp64
8587 double __ovld __cnfn tanpi(double);
8591 double8 __ovld __cnfn tanpi(double8);
8592 double16 __ovld __cnfn tanpi(double16);
8593 #endif //cl_khr_fp64
8594 #ifdef cl_khr_fp16
8595 half __ovld __cnfn tanpi(half);
8599 half8 __ovld __cnfn tanpi(half8);
8600 half16 __ovld __cnfn tanpi(half16);
8601 #endif //cl_khr_fp16
8602 
8603 /**
8604  * Compute the gamma function.
8605  */
8606 float __ovld __cnfn tgamma(float);
8610 float8 __ovld __cnfn tgamma(float8);
8611 float16 __ovld __cnfn tgamma(float16);
8612 #ifdef cl_khr_fp64
8613 double __ovld __cnfn tgamma(double);
8617 double8 __ovld __cnfn tgamma(double8);
8618 double16 __ovld __cnfn tgamma(double16);
8619 #endif //cl_khr_fp64
8620 #ifdef cl_khr_fp16
8621 half __ovld __cnfn tgamma(half);
8625 half8 __ovld __cnfn tgamma(half8);
8626 half16 __ovld __cnfn tgamma(half16);
8627 #endif //cl_khr_fp16
8628 
8629 /**
8630  * Round to integral value using the round to zero
8631  * rounding mode.
8632  */
8633 float __ovld __cnfn trunc(float);
8637 float8 __ovld __cnfn trunc(float8);
8638 float16 __ovld __cnfn trunc(float16);
8639 #ifdef cl_khr_fp64
8640 double __ovld __cnfn trunc(double);
8644 double8 __ovld __cnfn trunc(double8);
8645 double16 __ovld __cnfn trunc(double16);
8646 #endif //cl_khr_fp64
8647 #ifdef cl_khr_fp16
8648 half __ovld __cnfn trunc(half);
8652 half8 __ovld __cnfn trunc(half8);
8653 half16 __ovld __cnfn trunc(half16);
8654 #endif //cl_khr_fp16
8655 
8656 /**
8657  * Compute cosine. x must be in the range -2^16 ... +2^16.
8658  */
8659 float __ovld __cnfn half_cos(float);
8663 float8 __ovld __cnfn half_cos(float8);
8664 float16 __ovld __cnfn half_cos(float16);
8665 
8666 /**
8667  * Compute x / y.
8668  */
8669 float __ovld __cnfn half_divide(float, float);
8673 float8 __ovld __cnfn half_divide(float8, float8);
8674 float16 __ovld __cnfn half_divide(float16, float16);
8675 
8676 /**
8677  * Compute the base- e exponential of x.
8678  */
8679 float __ovld __cnfn half_exp(float);
8683 float8 __ovld __cnfn half_exp(float8);
8684 float16 __ovld __cnfn half_exp(float16);
8685 
8686 /**
8687  * Compute the base- 2 exponential of x.
8688  */
8689 float __ovld __cnfn half_exp2(float);
8693 float8 __ovld __cnfn half_exp2(float8);
8694 float16 __ovld __cnfn half_exp2(float16);
8695 
8696 /**
8697  * Compute the base- 10 exponential of x.
8698  */
8699 float __ovld __cnfn half_exp10(float);
8703 float8 __ovld __cnfn half_exp10(float8);
8704 float16 __ovld __cnfn half_exp10(float16);
8705 
8706 /**
8707  * Compute natural logarithm.
8708  */
8709 float __ovld __cnfn half_log(float);
8713 float8 __ovld __cnfn half_log(float8);
8714 float16 __ovld __cnfn half_log(float16);
8715 
8716 /**
8717  * Compute a base 2 logarithm.
8718  */
8719 float __ovld __cnfn half_log2(float);
8723 float8 __ovld __cnfn half_log2(float8);
8724 float16 __ovld __cnfn half_log2(float16);
8725 
8726 /**
8727  * Compute a base 10 logarithm.
8728  */
8729 float __ovld __cnfn half_log10(float);
8733 float8 __ovld __cnfn half_log10(float8);
8734 float16 __ovld __cnfn half_log10(float16);
8735 
8736 /**
8737  * Compute x to the power y, where x is >= 0.
8738  */
8739 float __ovld __cnfn half_powr(float, float);
8743 float8 __ovld __cnfn half_powr(float8, float8);
8744 float16 __ovld __cnfn half_powr(float16, float16);
8745 
8746 /**
8747  * Compute reciprocal.
8748  */
8749 float __ovld __cnfn half_recip(float);
8753 float8 __ovld __cnfn half_recip(float8);
8754 float16 __ovld __cnfn half_recip(float16);
8755 
8756 /**
8757  * Compute inverse square root.
8758  */
8759 float __ovld __cnfn half_rsqrt(float);
8763 float8 __ovld __cnfn half_rsqrt(float8);
8764 float16 __ovld __cnfn half_rsqrt(float16);
8765 
8766 /**
8767  * Compute sine. x must be in the range -2^16 ... +2^16.
8768  */
8769 float __ovld __cnfn half_sin(float);
8773 float8 __ovld __cnfn half_sin(float8);
8774 float16 __ovld __cnfn half_sin(float16);
8775 
8776 /**
8777  * Compute square root.
8778  */
8779 float __ovld __cnfn half_sqrt(float);
8783 float8 __ovld __cnfn half_sqrt(float8);
8784 float16 __ovld __cnfn half_sqrt(float16);
8785 
8786 /**
8787  * Compute tangent. x must be in the range -216 ... +216.
8788  */
8789 float __ovld __cnfn half_tan(float);
8793 float8 __ovld __cnfn half_tan(float8);
8794 float16 __ovld __cnfn half_tan(float16);
8795 
8796 /**
8797  * Compute cosine over an implementation-defined range.
8798  * The maximum error is implementation-defined.
8799  */
8800 float __ovld __cnfn native_cos(float);
8804 float8 __ovld __cnfn native_cos(float8);
8805 float16 __ovld __cnfn native_cos(float16);
8806 
8807 /**
8808  * Compute x / y over an implementation-defined range.
8809  * The maximum error is implementation-defined.
8810  */
8811 float __ovld __cnfn native_divide(float, float);
8815 float8 __ovld __cnfn native_divide(float8, float8);
8816 float16 __ovld __cnfn native_divide(float16, float16);
8817 
8818 /**
8819  * Compute the base- e exponential of x over an
8820  * implementation-defined range. The maximum error is
8821  * implementation-defined.
8822  */
8823 float __ovld __cnfn native_exp(float);
8827 float8 __ovld __cnfn native_exp(float8);
8828 float16 __ovld __cnfn native_exp(float16);
8829 
8830 /**
8831  * Compute the base- 2 exponential of x over an
8832  * implementation-defined range. The maximum error is
8833  * implementation-defined.
8834  */
8839 float8 __ovld __cnfn native_exp2(float8);
8840 float16 __ovld __cnfn native_exp2(float16);
8841 
8842 /**
8843  * Compute the base- 10 exponential of x over an
8844  * implementation-defined range. The maximum error is
8845  * implementation-defined.
8846  */
8851 float8 __ovld __cnfn native_exp10(float8);
8852 float16 __ovld __cnfn native_exp10(float16);
8853 
8854 /**
8855  * Compute natural logarithm over an implementationdefined
8856  * range. The maximum error is implementation
8857  * defined.
8858  */
8859 float __ovld __cnfn native_log(float);
8863 float8 __ovld __cnfn native_log(float8);
8864 float16 __ovld __cnfn native_log(float16);
8865 
8866 /**
8867  * Compute a base 2 logarithm over an implementationdefined
8868  * range. The maximum error is implementationdefined.
8869  */
8874 float8 __ovld __cnfn native_log2(float8);
8875 float16 __ovld __cnfn native_log2(float16);
8876 
8877 /**
8878  * Compute a base 10 logarithm over an implementationdefined
8879  * range. The maximum error is implementationdefined.
8880  */
8885 float8 __ovld __cnfn native_log10(float8);
8886 float16 __ovld __cnfn native_log10(float16);
8887 
8888 /**
8889  * Compute x to the power y, where x is >= 0. The range of
8890  * x and y are implementation-defined. The maximum error
8891  * is implementation-defined.
8892  */
8893 float __ovld __cnfn native_powr(float, float);
8897 float8 __ovld __cnfn native_powr(float8, float8);
8898 float16 __ovld __cnfn native_powr(float16, float16);
8899 
8900 /**
8901  * Compute reciprocal over an implementation-defined
8902  * range. The maximum error is implementation-defined.
8903  */
8908 float8 __ovld __cnfn native_recip(float8);
8909 float16 __ovld __cnfn native_recip(float16);
8910 
8911 /**
8912  * Compute inverse square root over an implementationdefined
8913  * range. The maximum error is implementationdefined.
8914  */
8919 float8 __ovld __cnfn native_rsqrt(float8);
8920 float16 __ovld __cnfn native_rsqrt(float16);
8921 
8922 /**
8923  * Compute sine over an implementation-defined range.
8924  * The maximum error is implementation-defined.
8925  */
8926 float __ovld __cnfn native_sin(float);
8930 float8 __ovld __cnfn native_sin(float8);
8931 float16 __ovld __cnfn native_sin(float16);
8932 
8933 /**
8934  * Compute square root over an implementation-defined
8935  * range. The maximum error is implementation-defined.
8936  */
8941 float8 __ovld __cnfn native_sqrt(float8);
8942 float16 __ovld __cnfn native_sqrt(float16);
8943 
8944 /**
8945  * Compute tangent over an implementation-defined range.
8946  * The maximum error is implementation-defined.
8947  */
8948 float __ovld __cnfn native_tan(float);
8952 float8 __ovld __cnfn native_tan(float8);
8953 float16 __ovld __cnfn native_tan(float16);
8954 
8955 // OpenCL v1.1 s6.11.3, v1.2 s6.12.3, v2.0 s6.13.3 - Integer Functions
8956 
8957 /**
8958  * Returns | x |.
8959  */
8962 uchar2 __ovld __cnfn abs(char2);
8963 uchar2 __ovld __cnfn abs(uchar2);
8964 uchar3 __ovld __cnfn abs(char3);
8965 uchar3 __ovld __cnfn abs(uchar3);
8966 uchar4 __ovld __cnfn abs(char4);
8967 uchar4 __ovld __cnfn abs(uchar4);
8968 uchar8 __ovld __cnfn abs(char8);
8969 uchar8 __ovld __cnfn abs(uchar8);
8970 uchar16 __ovld __cnfn abs(char16);
8971 uchar16 __ovld __cnfn abs(uchar16);
8974 ushort2 __ovld __cnfn abs(short2);
8975 ushort2 __ovld __cnfn abs(ushort2);
8976 ushort3 __ovld __cnfn abs(short3);
8977 ushort3 __ovld __cnfn abs(ushort3);
8978 ushort4 __ovld __cnfn abs(short4);
8979 ushort4 __ovld __cnfn abs(ushort4);
8980 ushort8 __ovld __cnfn abs(short8);
8981 ushort8 __ovld __cnfn abs(ushort8);
8982 ushort16 __ovld __cnfn abs(short16);
8983 ushort16 __ovld __cnfn abs(ushort16);
8984 uint __ovld __cnfn abs(int);
8992 uint8 __ovld __cnfn abs(int8);
8993 uint8 __ovld __cnfn abs(uint8);
8994 uint16 __ovld __cnfn abs(int16);
8995 uint16 __ovld __cnfn abs(uint16);
8996 ulong __ovld __cnfn abs(long);
8998 ulong2 __ovld __cnfn abs(long2);
8999 ulong2 __ovld __cnfn abs(ulong2);
9000 ulong3 __ovld __cnfn abs(long3);
9001 ulong3 __ovld __cnfn abs(ulong3);
9002 ulong4 __ovld __cnfn abs(long4);
9003 ulong4 __ovld __cnfn abs(ulong4);
9004 ulong8 __ovld __cnfn abs(long8);
9005 ulong8 __ovld __cnfn abs(ulong8);
9006 ulong16 __ovld __cnfn abs(long16);
9007 ulong16 __ovld __cnfn abs(ulong16);
9008 
9009 /**
9010  * Returns | x - y | without modulo overflow.
9011  */
9014 uchar2 __ovld __cnfn abs_diff(char2, char2);
9015 uchar2 __ovld __cnfn abs_diff(uchar2, uchar2);
9016 uchar3 __ovld __cnfn abs_diff(char3, char3);
9017 uchar3 __ovld __cnfn abs_diff(uchar3, uchar3);
9018 uchar4 __ovld __cnfn abs_diff(char4, char4);
9019 uchar4 __ovld __cnfn abs_diff(uchar4, uchar4);
9020 uchar8 __ovld __cnfn abs_diff(char8, char8);
9021 uchar8 __ovld __cnfn abs_diff(uchar8, uchar8);
9022 uchar16 __ovld __cnfn abs_diff(char16, char16);
9023 uchar16 __ovld __cnfn abs_diff(uchar16, uchar16);
9026 ushort2 __ovld __cnfn abs_diff(short2, short2);
9027 ushort2 __ovld __cnfn abs_diff(ushort2, ushort2);
9028 ushort3 __ovld __cnfn abs_diff(short3, short3);
9029 ushort3 __ovld __cnfn abs_diff(ushort3, ushort3);
9030 ushort4 __ovld __cnfn abs_diff(short4, short4);
9031 ushort4 __ovld __cnfn abs_diff(ushort4, ushort4);
9032 ushort8 __ovld __cnfn abs_diff(short8, short8);
9033 ushort8 __ovld __cnfn abs_diff(ushort8, ushort8);
9034 ushort16 __ovld __cnfn abs_diff(short16, short16);
9035 ushort16 __ovld __cnfn abs_diff(ushort16, ushort16);
9044 uint8 __ovld __cnfn abs_diff(int8, int8);
9045 uint8 __ovld __cnfn abs_diff(uint8, uint8);
9046 uint16 __ovld __cnfn abs_diff(int16, int16);
9047 uint16 __ovld __cnfn abs_diff(uint16, uint16);
9050 ulong2 __ovld __cnfn abs_diff(long2, long2);
9051 ulong2 __ovld __cnfn abs_diff(ulong2, ulong2);
9052 ulong3 __ovld __cnfn abs_diff(long3, long3);
9053 ulong3 __ovld __cnfn abs_diff(ulong3, ulong3);
9054 ulong4 __ovld __cnfn abs_diff(long4, long4);
9055 ulong4 __ovld __cnfn abs_diff(ulong4, ulong4);
9056 ulong8 __ovld __cnfn abs_diff(long8, long8);
9057 ulong8 __ovld __cnfn abs_diff(ulong8, ulong8);
9058 ulong16 __ovld __cnfn abs_diff(long16, long16);
9059 ulong16 __ovld __cnfn abs_diff(ulong16, ulong16);
9060 
9061 /**
9062  * Returns x + y and saturates the result.
9063  */
9064 char __ovld __cnfn add_sat(char, char);
9066 char2 __ovld __cnfn add_sat(char2, char2);
9067 uchar2 __ovld __cnfn add_sat(uchar2, uchar2);
9068 char3 __ovld __cnfn add_sat(char3, char3);
9069 uchar3 __ovld __cnfn add_sat(uchar3, uchar3);
9070 char4 __ovld __cnfn add_sat(char4, char4);
9071 uchar4 __ovld __cnfn add_sat(uchar4, uchar4);
9072 char8 __ovld __cnfn add_sat(char8, char8);
9073 uchar8 __ovld __cnfn add_sat(uchar8, uchar8);
9074 char16 __ovld __cnfn add_sat(char16, char16);
9075 uchar16 __ovld __cnfn add_sat(uchar16, uchar16);
9076 short __ovld __cnfn add_sat(short, short);
9078 short2 __ovld __cnfn add_sat(short2, short2);
9079 ushort2 __ovld __cnfn add_sat(ushort2, ushort2);
9080 short3 __ovld __cnfn add_sat(short3, short3);
9081 ushort3 __ovld __cnfn add_sat(ushort3, ushort3);
9082 short4 __ovld __cnfn add_sat(short4, short4);
9083 ushort4 __ovld __cnfn add_sat(ushort4, ushort4);
9084 short8 __ovld __cnfn add_sat(short8, short8);
9085 ushort8 __ovld __cnfn add_sat(ushort8, ushort8);
9086 short16 __ovld __cnfn add_sat(short16, short16);
9087 ushort16 __ovld __cnfn add_sat(ushort16, ushort16);
9088 int __ovld __cnfn add_sat(int, int);
9096 int8 __ovld __cnfn add_sat(int8, int8);
9097 uint8 __ovld __cnfn add_sat(uint8, uint8);
9098 int16 __ovld __cnfn add_sat(int16, int16);
9099 uint16 __ovld __cnfn add_sat(uint16, uint16);
9100 long __ovld __cnfn add_sat(long, long);
9102 long2 __ovld __cnfn add_sat(long2, long2);
9103 ulong2 __ovld __cnfn add_sat(ulong2, ulong2);
9104 long3 __ovld __cnfn add_sat(long3, long3);
9105 ulong3 __ovld __cnfn add_sat(ulong3, ulong3);
9106 long4 __ovld __cnfn add_sat(long4, long4);
9107 ulong4 __ovld __cnfn add_sat(ulong4, ulong4);
9108 long8 __ovld __cnfn add_sat(long8, long8);
9109 ulong8 __ovld __cnfn add_sat(ulong8, ulong8);
9110 long16 __ovld __cnfn add_sat(long16, long16);
9111 ulong16 __ovld __cnfn add_sat(ulong16, ulong16);
9112 
9113 /**
9114  * Returns (x + y) >> 1. The intermediate sum does
9115  * not modulo overflow.
9116  */
9117 char __ovld __cnfn hadd(char, char);
9119 char2 __ovld __cnfn hadd(char2, char2);
9120 uchar2 __ovld __cnfn hadd(uchar2, uchar2);
9121 char3 __ovld __cnfn hadd(char3, char3);
9122 uchar3 __ovld __cnfn hadd(uchar3, uchar3);
9123 char4 __ovld __cnfn hadd(char4, char4);
9124 uchar4 __ovld __cnfn hadd(uchar4, uchar4);
9125 char8 __ovld __cnfn hadd(char8, char8);
9126 uchar8 __ovld __cnfn hadd(uchar8, uchar8);
9127 char16 __ovld __cnfn hadd(char16, char16);
9128 uchar16 __ovld __cnfn hadd(uchar16, uchar16);
9129 short __ovld __cnfn hadd(short, short);
9131 short2 __ovld __cnfn hadd(short2, short2);
9132 ushort2 __ovld __cnfn hadd(ushort2, ushort2);
9133 short3 __ovld __cnfn hadd(short3, short3);
9134 ushort3 __ovld __cnfn hadd(ushort3, ushort3);
9135 short4 __ovld __cnfn hadd(short4, short4);
9136 ushort4 __ovld __cnfn hadd(ushort4, ushort4);
9137 short8 __ovld __cnfn hadd(short8, short8);
9138 ushort8 __ovld __cnfn hadd(ushort8, ushort8);
9139 short16 __ovld __cnfn hadd(short16, short16);
9140 ushort16 __ovld __cnfn hadd(ushort16, ushort16);
9141 int __ovld __cnfn hadd(int, int);
9149 int8 __ovld __cnfn hadd(int8, int8);
9150 uint8 __ovld __cnfn hadd(uint8, uint8);
9151 int16 __ovld __cnfn hadd(int16, int16);
9152 uint16 __ovld __cnfn hadd(uint16, uint16);
9153 long __ovld __cnfn hadd(long, long);
9155 long2 __ovld __cnfn hadd(long2, long2);
9156 ulong2 __ovld __cnfn hadd(ulong2, ulong2);
9157 long3 __ovld __cnfn hadd(long3, long3);
9158 ulong3 __ovld __cnfn hadd(ulong3, ulong3);
9159 long4 __ovld __cnfn hadd(long4, long4);
9160 ulong4 __ovld __cnfn hadd(ulong4, ulong4);
9161 long8 __ovld __cnfn hadd(long8, long8);
9162 ulong8 __ovld __cnfn hadd(ulong8, ulong8);
9163 long16 __ovld __cnfn hadd(long16, long16);
9164 ulong16 __ovld __cnfn hadd(ulong16, ulong16);
9165 
9166 /**
9167  * Returns (x + y + 1) >> 1. The intermediate sum
9168  * does not modulo overflow.
9169  */
9170 char __ovld __cnfn rhadd(char, char);
9172 char2 __ovld __cnfn rhadd(char2, char2);
9173 uchar2 __ovld __cnfn rhadd(uchar2, uchar2);
9174 char3 __ovld __cnfn rhadd(char3, char3);
9175 uchar3 __ovld __cnfn rhadd(uchar3, uchar3);
9176 char4 __ovld __cnfn rhadd(char4, char4);
9177 uchar4 __ovld __cnfn rhadd(uchar4, uchar4);
9178 char8 __ovld __cnfn rhadd(char8, char8);
9179 uchar8 __ovld __cnfn rhadd(uchar8, uchar8);
9180 char16 __ovld __cnfn rhadd(char16, char16);
9181 uchar16 __ovld __cnfn rhadd(uchar16, uchar16);
9182 short __ovld __cnfn rhadd(short, short);
9184 short2 __ovld __cnfn rhadd(short2, short2);
9185 ushort2 __ovld __cnfn rhadd(ushort2, ushort2);
9186 short3 __ovld __cnfn rhadd(short3, short3);
9187 ushort3 __ovld __cnfn rhadd(ushort3, ushort3);
9188 short4 __ovld __cnfn rhadd(short4, short4);
9189 ushort4 __ovld __cnfn rhadd(ushort4, ushort4);
9190 short8 __ovld __cnfn rhadd(short8, short8);
9191 ushort8 __ovld __cnfn rhadd(ushort8, ushort8);
9192 short16 __ovld __cnfn rhadd(short16, short16);
9193 ushort16 __ovld __cnfn rhadd(ushort16, ushort16);
9194 int __ovld __cnfn rhadd(int, int);
9202 int8 __ovld __cnfn rhadd(int8, int8);
9203 uint8 __ovld __cnfn rhadd(uint8, uint8);
9204 int16 __ovld __cnfn rhadd(int16, int16);
9205 uint16 __ovld __cnfn rhadd(uint16, uint16);
9206 long __ovld __cnfn rhadd(long, long);
9208 long2 __ovld __cnfn rhadd(long2, long2);
9209 ulong2 __ovld __cnfn rhadd(ulong2, ulong2);
9210 long3 __ovld __cnfn rhadd(long3, long3);
9211 ulong3 __ovld __cnfn rhadd(ulong3, ulong3);
9212 long4 __ovld __cnfn rhadd(long4, long4);
9213 ulong4 __ovld __cnfn rhadd(ulong4, ulong4);
9214 long8 __ovld __cnfn rhadd(long8, long8);
9215 ulong8 __ovld __cnfn rhadd(ulong8, ulong8);
9216 long16 __ovld __cnfn rhadd(long16, long16);
9217 ulong16 __ovld __cnfn rhadd(ulong16, ulong16);
9218 
9219 /**
9220  * Returns min(max(x, minval), maxval).
9221  * Results are undefined if minval > maxval.
9222  */
9223 char __ovld __cnfn clamp(char, char, char);
9225 char2 __ovld __cnfn clamp(char2, char2, char2);
9226 uchar2 __ovld __cnfn clamp(uchar2, uchar2, uchar2);
9227 char3 __ovld __cnfn clamp(char3, char3, char3);
9228 uchar3 __ovld __cnfn clamp(uchar3, uchar3, uchar3);
9229 char4 __ovld __cnfn clamp(char4, char4, char4);
9230 uchar4 __ovld __cnfn clamp(uchar4, uchar4, uchar4);
9231 char8 __ovld __cnfn clamp(char8, char8, char8);
9232 uchar8 __ovld __cnfn clamp(uchar8, uchar8, uchar8);
9233 char16 __ovld __cnfn clamp(char16, char16, char16);
9234 uchar16 __ovld __cnfn clamp(uchar16, uchar16, uchar16);
9235 short __ovld __cnfn clamp(short, short, short);
9237 short2 __ovld __cnfn clamp(short2, short2, short2);
9238 ushort2 __ovld __cnfn clamp(ushort2, ushort2, ushort2);
9239 short3 __ovld __cnfn clamp(short3, short3, short3);
9240 ushort3 __ovld __cnfn clamp(ushort3, ushort3, ushort3);
9241 short4 __ovld __cnfn clamp(short4, short4, short4);
9242 ushort4 __ovld __cnfn clamp(ushort4, ushort4, ushort4);
9243 short8 __ovld __cnfn clamp(short8, short8, short8);
9244 ushort8 __ovld __cnfn clamp(ushort8, ushort8, ushort8);
9245 short16 __ovld __cnfn clamp(short16, short16, short16);
9246 ushort16 __ovld __cnfn clamp(ushort16, ushort16, ushort16);
9247 int __ovld __cnfn clamp(int, int, int);
9255 int8 __ovld __cnfn clamp(int8, int8, int8);
9256 uint8 __ovld __cnfn clamp(uint8, uint8, uint8);
9257 int16 __ovld __cnfn clamp(int16, int16, int16);
9258 uint16 __ovld __cnfn clamp(uint16, uint16, uint16);
9259 long __ovld __cnfn clamp(long, long, long);
9261 long2 __ovld __cnfn clamp(long2, long2, long2);
9262 ulong2 __ovld __cnfn clamp(ulong2, ulong2, ulong2);
9263 long3 __ovld __cnfn clamp(long3, long3, long3);
9264 ulong3 __ovld __cnfn clamp(ulong3, ulong3, ulong3);
9265 long4 __ovld __cnfn clamp(long4, long4, long4);
9266 ulong4 __ovld __cnfn clamp(ulong4, ulong4, ulong4);
9267 long8 __ovld __cnfn clamp(long8, long8, long8);
9268 ulong8 __ovld __cnfn clamp(ulong8, ulong8, ulong8);
9269 long16 __ovld __cnfn clamp(long16, long16, long16);
9270 ulong16 __ovld __cnfn clamp(ulong16, ulong16, ulong16);
9271 char2 __ovld __cnfn clamp(char2, char, char);
9272 uchar2 __ovld __cnfn clamp(uchar2, uchar, uchar);
9273 char3 __ovld __cnfn clamp(char3, char, char);
9274 uchar3 __ovld __cnfn clamp(uchar3, uchar, uchar);
9275 char4 __ovld __cnfn clamp(char4, char, char);
9276 uchar4 __ovld __cnfn clamp(uchar4, uchar, uchar);
9277 char8 __ovld __cnfn clamp(char8, char, char);
9278 uchar8 __ovld __cnfn clamp(uchar8, uchar, uchar);
9279 char16 __ovld __cnfn clamp(char16, char, char);
9280 uchar16 __ovld __cnfn clamp(uchar16, uchar, uchar);
9281 short2 __ovld __cnfn clamp(short2, short, short);
9282 ushort2 __ovld __cnfn clamp(ushort2, ushort, ushort);
9283 short3 __ovld __cnfn clamp(short3, short, short);
9284 ushort3 __ovld __cnfn clamp(ushort3, ushort, ushort);
9285 short4 __ovld __cnfn clamp(short4, short, short);
9286 ushort4 __ovld __cnfn clamp(ushort4, ushort, ushort);
9287 short8 __ovld __cnfn clamp(short8, short, short);
9288 ushort8 __ovld __cnfn clamp(ushort8, ushort, ushort);
9289 short16 __ovld __cnfn clamp(short16, short, short);
9290 ushort16 __ovld __cnfn clamp(ushort16, ushort, ushort);
9297 int8 __ovld __cnfn clamp(int8, int, int);
9298 uint8 __ovld __cnfn clamp(uint8, uint, uint);
9299 int16 __ovld __cnfn clamp(int16, int, int);
9300 uint16 __ovld __cnfn clamp(uint16, uint, uint);
9301 long2 __ovld __cnfn clamp(long2, long, long);
9302 ulong2 __ovld __cnfn clamp(ulong2, ulong, ulong);
9303 long3 __ovld __cnfn clamp(long3, long, long);
9304 ulong3 __ovld __cnfn clamp(ulong3, ulong, ulong);
9305 long4 __ovld __cnfn clamp(long4, long, long);
9306 ulong4 __ovld __cnfn clamp(ulong4, ulong, ulong);
9307 long8 __ovld __cnfn clamp(long8, long, long);
9308 ulong8 __ovld __cnfn clamp(ulong8, ulong, ulong);
9309 long16 __ovld __cnfn clamp(long16, long, long);
9310 ulong16 __ovld __cnfn clamp(ulong16, ulong, ulong);
9311 
9312 /**
9313  * Returns the number of leading 0-bits in x, starting
9314  * at the most significant bit position.
9315  */
9316 char __ovld __cnfn clz(char);
9318 char2 __ovld __cnfn clz(char2);
9319 uchar2 __ovld __cnfn clz(uchar2);
9320 char3 __ovld __cnfn clz(char3);
9321 uchar3 __ovld __cnfn clz(uchar3);
9322 char4 __ovld __cnfn clz(char4);
9323 uchar4 __ovld __cnfn clz(uchar4);
9324 char8 __ovld __cnfn clz(char8);
9325 uchar8 __ovld __cnfn clz(uchar8);
9326 char16 __ovld __cnfn clz(char16);
9327 uchar16 __ovld __cnfn clz(uchar16);
9328 short __ovld __cnfn clz(short);
9330 short2 __ovld __cnfn clz(short2);
9331 ushort2 __ovld __cnfn clz(ushort2);
9332 short3 __ovld __cnfn clz(short3);
9333 ushort3 __ovld __cnfn clz(ushort3);
9334 short4 __ovld __cnfn clz(short4);
9335 ushort4 __ovld __cnfn clz(ushort4);
9336 short8 __ovld __cnfn clz(short8);
9337 ushort8 __ovld __cnfn clz(ushort8);
9338 short16 __ovld __cnfn clz(short16);
9339 ushort16 __ovld __cnfn clz(ushort16);
9340 int __ovld __cnfn clz(int);
9348 int8 __ovld __cnfn clz(int8);
9349 uint8 __ovld __cnfn clz(uint8);
9350 int16 __ovld __cnfn clz(int16);
9351 uint16 __ovld __cnfn clz(uint16);
9352 long __ovld __cnfn clz(long);
9354 long2 __ovld __cnfn clz(long2);
9355 ulong2 __ovld __cnfn clz(ulong2);
9356 long3 __ovld __cnfn clz(long3);
9357 ulong3 __ovld __cnfn clz(ulong3);
9358 long4 __ovld __cnfn clz(long4);
9359 ulong4 __ovld __cnfn clz(ulong4);
9360 long8 __ovld __cnfn clz(long8);
9361 ulong8 __ovld __cnfn clz(ulong8);
9362 long16 __ovld __cnfn clz(long16);
9363 ulong16 __ovld __cnfn clz(ulong16);
9364 
9365 /**
9366  * Returns the count of trailing 0-bits in x. If x is 0,
9367  * returns the size in bits of the type of x or
9368  * component type of x, if x is a vector.
9369  */
9370 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
9371 char __ovld __cnfn ctz(char);
9373 char2 __ovld __cnfn ctz(char2);
9374 uchar2 __ovld __cnfn ctz(uchar2);
9375 char3 __ovld __cnfn ctz(char3);
9376 uchar3 __ovld __cnfn ctz(uchar3);
9377 char4 __ovld __cnfn ctz(char4);
9378 uchar4 __ovld __cnfn ctz(uchar4);
9379 char8 __ovld __cnfn ctz(char8);
9380 uchar8 __ovld __cnfn ctz(uchar8);
9381 char16 __ovld __cnfn ctz(char16);
9382 uchar16 __ovld __cnfn ctz(uchar16);
9383 short __ovld __cnfn ctz(short);
9385 short2 __ovld __cnfn ctz(short2);
9386 ushort2 __ovld __cnfn ctz(ushort2);
9387 short3 __ovld __cnfn ctz(short3);
9388 ushort3 __ovld __cnfn ctz(ushort3);
9389 short4 __ovld __cnfn ctz(short4);
9390 ushort4 __ovld __cnfn ctz(ushort4);
9391 short8 __ovld __cnfn ctz(short8);
9392 ushort8 __ovld __cnfn ctz(ushort8);
9393 short16 __ovld __cnfn ctz(short16);
9394 ushort16 __ovld __cnfn ctz(ushort16);
9395 int __ovld __cnfn ctz(int);
9403 int8 __ovld __cnfn ctz(int8);
9404 uint8 __ovld __cnfn ctz(uint8);
9405 int16 __ovld __cnfn ctz(int16);
9406 uint16 __ovld __cnfn ctz(uint16);
9407 long __ovld __cnfn ctz(long);
9409 long2 __ovld __cnfn ctz(long2);
9410 ulong2 __ovld __cnfn ctz(ulong2);
9411 long3 __ovld __cnfn ctz(long3);
9412 ulong3 __ovld __cnfn ctz(ulong3);
9413 long4 __ovld __cnfn ctz(long4);
9414 ulong4 __ovld __cnfn ctz(ulong4);
9415 long8 __ovld __cnfn ctz(long8);
9416 ulong8 __ovld __cnfn ctz(ulong8);
9417 long16 __ovld __cnfn ctz(long16);
9418 ulong16 __ovld __cnfn ctz(ulong16);
9419 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
9420 
9421 /**
9422  * Returns mul_hi(a, b) + c.
9423  */
9424 char __ovld __cnfn mad_hi(char, char, char);
9426 char2 __ovld __cnfn mad_hi(char2, char2, char2);
9427 uchar2 __ovld __cnfn mad_hi(uchar2, uchar2, uchar2);
9428 char3 __ovld __cnfn mad_hi(char3, char3, char3);
9429 uchar3 __ovld __cnfn mad_hi(uchar3, uchar3, uchar3);
9430 char4 __ovld __cnfn mad_hi(char4, char4, char4);
9431 uchar4 __ovld __cnfn mad_hi(uchar4, uchar4, uchar4);
9432 char8 __ovld __cnfn mad_hi(char8, char8, char8);
9433 uchar8 __ovld __cnfn mad_hi(uchar8, uchar8, uchar8);
9434 char16 __ovld __cnfn mad_hi(char16, char16, char16);
9435 uchar16 __ovld __cnfn mad_hi(uchar16, uchar16, uchar16);
9436 short __ovld __cnfn mad_hi(short, short, short);
9438 short2 __ovld __cnfn mad_hi(short2, short2, short2);
9439 ushort2 __ovld __cnfn mad_hi(ushort2, ushort2, ushort2);
9440 short3 __ovld __cnfn mad_hi(short3, short3, short3);
9441 ushort3 __ovld __cnfn mad_hi(ushort3, ushort3, ushort3);
9442 short4 __ovld __cnfn mad_hi(short4, short4, short4);
9443 ushort4 __ovld __cnfn mad_hi(ushort4, ushort4, ushort4);
9444 short8 __ovld __cnfn mad_hi(short8, short8, short8);
9445 ushort8 __ovld __cnfn mad_hi(ushort8, ushort8, ushort8);
9446 short16 __ovld __cnfn mad_hi(short16, short16, short16);
9447 ushort16 __ovld __cnfn mad_hi(ushort16, ushort16, ushort16);
9448 int __ovld __cnfn mad_hi(int, int, int);
9456 int8 __ovld __cnfn mad_hi(int8, int8, int8);
9457 uint8 __ovld __cnfn mad_hi(uint8, uint8, uint8);
9458 int16 __ovld __cnfn mad_hi(int16, int16, int16);
9459 uint16 __ovld __cnfn mad_hi(uint16, uint16, uint16);
9460 long __ovld __cnfn mad_hi(long, long, long);
9462 long2 __ovld __cnfn mad_hi(long2, long2, long2);
9463 ulong2 __ovld __cnfn mad_hi(ulong2, ulong2, ulong2);
9464 long3 __ovld __cnfn mad_hi(long3, long3, long3);
9465 ulong3 __ovld __cnfn mad_hi(ulong3, ulong3, ulong3);
9466 long4 __ovld __cnfn mad_hi(long4, long4, long4);
9467 ulong4 __ovld __cnfn mad_hi(ulong4, ulong4, ulong4);
9468 long8 __ovld __cnfn mad_hi(long8, long8, long8);
9469 ulong8 __ovld __cnfn mad_hi(ulong8, ulong8, ulong8);
9470 long16 __ovld __cnfn mad_hi(long16, long16, long16);
9471 ulong16 __ovld __cnfn mad_hi(ulong16, ulong16, ulong16);
9472 
9473 /**
9474  * Returns a * b + c and saturates the result.
9475  */
9476 char __ovld __cnfn mad_sat(char, char, char);
9478 char2 __ovld __cnfn mad_sat(char2, char2, char2);
9479 uchar2 __ovld __cnfn mad_sat(uchar2, uchar2, uchar2);
9480 char3 __ovld __cnfn mad_sat(char3, char3, char3);
9481 uchar3 __ovld __cnfn mad_sat(uchar3, uchar3, uchar3);
9482 char4 __ovld __cnfn mad_sat(char4, char4, char4);
9483 uchar4 __ovld __cnfn mad_sat(uchar4, uchar4, uchar4);
9484 char8 __ovld __cnfn mad_sat(char8, char8, char8);
9485 uchar8 __ovld __cnfn mad_sat(uchar8, uchar8, uchar8);
9486 char16 __ovld __cnfn mad_sat(char16, char16, char16);
9487 uchar16 __ovld __cnfn mad_sat(uchar16, uchar16, uchar16);
9488 short __ovld __cnfn mad_sat(short, short, short);
9490 short2 __ovld __cnfn mad_sat(short2, short2, short2);
9491 ushort2 __ovld __cnfn mad_sat(ushort2, ushort2, ushort2);
9492 short3 __ovld __cnfn mad_sat(short3, short3, short3);
9493 ushort3 __ovld __cnfn mad_sat(ushort3, ushort3, ushort3);
9494 short4 __ovld __cnfn mad_sat(short4, short4, short4);
9495 ushort4 __ovld __cnfn mad_sat(ushort4, ushort4, ushort4);
9496 short8 __ovld __cnfn mad_sat(short8, short8, short8);
9497 ushort8 __ovld __cnfn mad_sat(ushort8, ushort8, ushort8);
9498 short16 __ovld __cnfn mad_sat(short16, short16, short16);
9499 ushort16 __ovld __cnfn mad_sat(ushort16, ushort16, ushort16);
9500 int __ovld __cnfn mad_sat(int, int, int);
9508 int8 __ovld __cnfn mad_sat(int8, int8, int8);
9509 uint8 __ovld __cnfn mad_sat(uint8, uint8, uint8);
9510 int16 __ovld __cnfn mad_sat(int16, int16, int16);
9511 uint16 __ovld __cnfn mad_sat(uint16, uint16, uint16);
9512 long __ovld __cnfn mad_sat(long, long, long);
9514 long2 __ovld __cnfn mad_sat(long2, long2, long2);
9515 ulong2 __ovld __cnfn mad_sat(ulong2, ulong2, ulong2);
9516 long3 __ovld __cnfn mad_sat(long3, long3, long3);
9517 ulong3 __ovld __cnfn mad_sat(ulong3, ulong3, ulong3);
9518 long4 __ovld __cnfn mad_sat(long4, long4, long4);
9519 ulong4 __ovld __cnfn mad_sat(ulong4, ulong4, ulong4);
9520 long8 __ovld __cnfn mad_sat(long8, long8, long8);
9521 ulong8 __ovld __cnfn mad_sat(ulong8, ulong8, ulong8);
9522 long16 __ovld __cnfn mad_sat(long16, long16, long16);
9523 ulong16 __ovld __cnfn mad_sat(ulong16, ulong16, ulong16);
9524 
9525 /**
9526  * Returns y if x < y, otherwise it returns x.
9527  */
9528 char __ovld __cnfn max(char, char);
9530 char2 __ovld __cnfn max(char2, char2);
9531 uchar2 __ovld __cnfn max(uchar2, uchar2);
9532 char3 __ovld __cnfn max(char3, char3);
9533 uchar3 __ovld __cnfn max(uchar3, uchar3);
9534 char4 __ovld __cnfn max(char4, char4);
9535 uchar4 __ovld __cnfn max(uchar4, uchar4);
9536 char8 __ovld __cnfn max(char8, char8);
9537 uchar8 __ovld __cnfn max(uchar8, uchar8);
9538 char16 __ovld __cnfn max(char16, char16);
9539 uchar16 __ovld __cnfn max(uchar16, uchar16);
9540 short __ovld __cnfn max(short, short);
9542 short2 __ovld __cnfn max(short2, short2);
9543 ushort2 __ovld __cnfn max(ushort2, ushort2);
9544 short3 __ovld __cnfn max(short3, short3);
9545 ushort3 __ovld __cnfn max(ushort3, ushort3);
9546 short4 __ovld __cnfn max(short4, short4);
9547 ushort4 __ovld __cnfn max(ushort4, ushort4);
9548 short8 __ovld __cnfn max(short8, short8);
9549 ushort8 __ovld __cnfn max(ushort8, ushort8);
9550 short16 __ovld __cnfn max(short16, short16);
9551 ushort16 __ovld __cnfn max(ushort16, ushort16);
9552 int __ovld __cnfn max(int, int);
9560 int8 __ovld __cnfn max(int8, int8);
9561 uint8 __ovld __cnfn max(uint8, uint8);
9562 int16 __ovld __cnfn max(int16, int16);
9563 uint16 __ovld __cnfn max(uint16, uint16);
9564 long __ovld __cnfn max(long, long);
9566 long2 __ovld __cnfn max(long2, long2);
9567 ulong2 __ovld __cnfn max(ulong2, ulong2);
9568 long3 __ovld __cnfn max(long3, long3);
9569 ulong3 __ovld __cnfn max(ulong3, ulong3);
9570 long4 __ovld __cnfn max(long4, long4);
9571 ulong4 __ovld __cnfn max(ulong4, ulong4);
9572 long8 __ovld __cnfn max(long8, long8);
9573 ulong8 __ovld __cnfn max(ulong8, ulong8);
9574 long16 __ovld __cnfn max(long16, long16);
9575 ulong16 __ovld __cnfn max(ulong16, ulong16);
9576 char2 __ovld __cnfn max(char2, char);
9577 uchar2 __ovld __cnfn max(uchar2, uchar);
9578 char3 __ovld __cnfn max(char3, char);
9579 uchar3 __ovld __cnfn max(uchar3, uchar);
9580 char4 __ovld __cnfn max(char4, char);
9581 uchar4 __ovld __cnfn max(uchar4, uchar);
9582 char8 __ovld __cnfn max(char8, char);
9583 uchar8 __ovld __cnfn max(uchar8, uchar);
9584 char16 __ovld __cnfn max(char16, char);
9585 uchar16 __ovld __cnfn max(uchar16, uchar);
9586 short2 __ovld __cnfn max(short2, short);
9587 ushort2 __ovld __cnfn max(ushort2, ushort);
9588 short3 __ovld __cnfn max(short3, short);
9589 ushort3 __ovld __cnfn max(ushort3, ushort);
9590 short4 __ovld __cnfn max(short4, short);
9591 ushort4 __ovld __cnfn max(ushort4, ushort);
9592 short8 __ovld __cnfn max(short8, short);
9593 ushort8 __ovld __cnfn max(ushort8, ushort);
9594 short16 __ovld __cnfn max(short16, short);
9595 ushort16 __ovld __cnfn max(ushort16, ushort);
9602 int8 __ovld __cnfn max(int8, int);
9603 uint8 __ovld __cnfn max(uint8, uint);
9604 int16 __ovld __cnfn max(int16, int);
9605 uint16 __ovld __cnfn max(uint16, uint);
9606 long2 __ovld __cnfn max(long2, long);
9607 ulong2 __ovld __cnfn max(ulong2, ulong);
9608 long3 __ovld __cnfn max(long3, long);
9609 ulong3 __ovld __cnfn max(ulong3, ulong);
9610 long4 __ovld __cnfn max(long4, long);
9611 ulong4 __ovld __cnfn max(ulong4, ulong);
9612 long8 __ovld __cnfn max(long8, long);
9613 ulong8 __ovld __cnfn max(ulong8, ulong);
9614 long16 __ovld __cnfn max(long16, long);
9615 ulong16 __ovld __cnfn max(ulong16, ulong);
9616 
9617 /**
9618  * Returns y if y < x, otherwise it returns x.
9619  */
9620 char __ovld __cnfn min(char, char);
9622 char2 __ovld __cnfn min(char2, char2);
9623 uchar2 __ovld __cnfn min(uchar2, uchar2);
9624 char3 __ovld __cnfn min(char3, char3);
9625 uchar3 __ovld __cnfn min(uchar3, uchar3);
9626 char4 __ovld __cnfn min(char4, char4);
9627 uchar4 __ovld __cnfn min(uchar4, uchar4);
9628 char8 __ovld __cnfn min(char8, char8);
9629 uchar8 __ovld __cnfn min(uchar8, uchar8);
9630 char16 __ovld __cnfn min(char16, char16);
9631 uchar16 __ovld __cnfn min(uchar16, uchar16);
9632 short __ovld __cnfn min(short, short);
9634 short2 __ovld __cnfn min(short2, short2);
9635 ushort2 __ovld __cnfn min(ushort2, ushort2);
9636 short3 __ovld __cnfn min(short3, short3);
9637 ushort3 __ovld __cnfn min(ushort3, ushort3);
9638 short4 __ovld __cnfn min(short4, short4);
9639 ushort4 __ovld __cnfn min(ushort4, ushort4);
9640 short8 __ovld __cnfn min(short8, short8);
9641 ushort8 __ovld __cnfn min(ushort8, ushort8);
9642 short16 __ovld __cnfn min(short16, short16);
9643 ushort16 __ovld __cnfn min(ushort16, ushort16);
9644 int __ovld __cnfn min(int, int);
9652 int8 __ovld __cnfn min(int8, int8);
9653 uint8 __ovld __cnfn min(uint8, uint8);
9654 int16 __ovld __cnfn min(int16, int16);
9655 uint16 __ovld __cnfn min(uint16, uint16);
9656 long __ovld __cnfn min(long, long);
9658 long2 __ovld __cnfn min(long2, long2);
9659 ulong2 __ovld __cnfn min(ulong2, ulong2);
9660 long3 __ovld __cnfn min(long3, long3);
9661 ulong3 __ovld __cnfn min(ulong3, ulong3);
9662 long4 __ovld __cnfn min(long4, long4);
9663 ulong4 __ovld __cnfn min(ulong4, ulong4);
9664 long8 __ovld __cnfn min(long8, long8);
9665 ulong8 __ovld __cnfn min(ulong8, ulong8);
9666 long16 __ovld __cnfn min(long16, long16);
9667 ulong16 __ovld __cnfn min(ulong16, ulong16);
9668 char2 __ovld __cnfn min(char2, char);
9669 uchar2 __ovld __cnfn min(uchar2, uchar);
9670 char3 __ovld __cnfn min(char3, char);
9671 uchar3 __ovld __cnfn min(uchar3, uchar);
9672 char4 __ovld __cnfn min(char4, char);
9673 uchar4 __ovld __cnfn min(uchar4, uchar);
9674 char8 __ovld __cnfn min(char8, char);
9675 uchar8 __ovld __cnfn min(uchar8, uchar);
9676 char16 __ovld __cnfn min(char16, char);
9677 uchar16 __ovld __cnfn min(uchar16, uchar);
9678 short2 __ovld __cnfn min(short2, short);
9679 ushort2 __ovld __cnfn min(ushort2, ushort);
9680 short3 __ovld __cnfn min(short3, short);
9681 ushort3 __ovld __cnfn min(ushort3, ushort);
9682 short4 __ovld __cnfn min(short4, short);
9683 ushort4 __ovld __cnfn min(ushort4, ushort);
9684 short8 __ovld __cnfn min(short8, short);
9685 ushort8 __ovld __cnfn min(ushort8, ushort);
9686 short16 __ovld __cnfn min(short16, short);
9687 ushort16 __ovld __cnfn min(ushort16, ushort);
9694 int8 __ovld __cnfn min(int8, int);
9695 uint8 __ovld __cnfn min(uint8, uint);
9696 int16 __ovld __cnfn min(int16, int);
9697 uint16 __ovld __cnfn min(uint16, uint);
9698 long2 __ovld __cnfn min(long2, long);
9699 ulong2 __ovld __cnfn min(ulong2, ulong);
9700 long3 __ovld __cnfn min(long3, long);
9701 ulong3 __ovld __cnfn min(ulong3, ulong);
9702 long4 __ovld __cnfn min(long4, long);
9703 ulong4 __ovld __cnfn min(ulong4, ulong);
9704 long8 __ovld __cnfn min(long8, long);
9705 ulong8 __ovld __cnfn min(ulong8, ulong);
9706 long16 __ovld __cnfn min(long16, long);
9707 ulong16 __ovld __cnfn min(ulong16, ulong);
9708 
9709 /**
9710  * Computes x * y and returns the high half of the
9711  * product of x and y.
9712  */
9713 char __ovld __cnfn mul_hi(char, char);
9715 char2 __ovld __cnfn mul_hi(char2, char2);
9716 uchar2 __ovld __cnfn mul_hi(uchar2, uchar2);
9717 char3 __ovld __cnfn mul_hi(char3, char3);
9718 uchar3 __ovld __cnfn mul_hi(uchar3, uchar3);
9719 char4 __ovld __cnfn mul_hi(char4, char4);
9720 uchar4 __ovld __cnfn mul_hi(uchar4, uchar4);
9721 char8 __ovld __cnfn mul_hi(char8, char8);
9722 uchar8 __ovld __cnfn mul_hi(uchar8, uchar8);
9723 char16 __ovld __cnfn mul_hi(char16, char16);
9724 uchar16 __ovld __cnfn mul_hi(uchar16, uchar16);
9725 short __ovld __cnfn mul_hi(short, short);
9727 short2 __ovld __cnfn mul_hi(short2, short2);
9728 ushort2 __ovld __cnfn mul_hi(ushort2, ushort2);
9729 short3 __ovld __cnfn mul_hi(short3, short3);
9730 ushort3 __ovld __cnfn mul_hi(ushort3, ushort3);
9731 short4 __ovld __cnfn mul_hi(short4, short4);
9732 ushort4 __ovld __cnfn mul_hi(ushort4, ushort4);
9733 short8 __ovld __cnfn mul_hi(short8, short8);
9734 ushort8 __ovld __cnfn mul_hi(ushort8, ushort8);
9735 short16 __ovld __cnfn mul_hi(short16, short16);
9736 ushort16 __ovld __cnfn mul_hi(ushort16, ushort16);
9737 int __ovld __cnfn mul_hi(int, int);
9745 int8 __ovld __cnfn mul_hi(int8, int8);
9746 uint8 __ovld __cnfn mul_hi(uint8, uint8);
9747 int16 __ovld __cnfn mul_hi(int16, int16);
9748 uint16 __ovld __cnfn mul_hi(uint16, uint16);
9749 long __ovld __cnfn mul_hi(long, long);
9751 long2 __ovld __cnfn mul_hi(long2, long2);
9752 ulong2 __ovld __cnfn mul_hi(ulong2, ulong2);
9753 long3 __ovld __cnfn mul_hi(long3, long3);
9754 ulong3 __ovld __cnfn mul_hi(ulong3, ulong3);
9755 long4 __ovld __cnfn mul_hi(long4, long4);
9756 ulong4 __ovld __cnfn mul_hi(ulong4, ulong4);
9757 long8 __ovld __cnfn mul_hi(long8, long8);
9758 ulong8 __ovld __cnfn mul_hi(ulong8, ulong8);
9759 long16 __ovld __cnfn mul_hi(long16, long16);
9760 ulong16 __ovld __cnfn mul_hi(ulong16, ulong16);
9761 
9762 /**
9763  * For each element in v, the bits are shifted left by
9764  * the number of bits given by the corresponding
9765  * element in i (subject to usual shift modulo rules
9766  * described in section 6.3). Bits shifted off the left
9767  * side of the element are shifted back in from the
9768  * right.
9769  */
9770 char __ovld __cnfn rotate(char, char);
9772 char2 __ovld __cnfn rotate(char2, char2);
9773 uchar2 __ovld __cnfn rotate(uchar2, uchar2);
9774 char3 __ovld __cnfn rotate(char3, char3);
9775 uchar3 __ovld __cnfn rotate(uchar3, uchar3);
9776 char4 __ovld __cnfn rotate(char4, char4);
9777 uchar4 __ovld __cnfn rotate(uchar4, uchar4);
9778 char8 __ovld __cnfn rotate(char8, char8);
9779 uchar8 __ovld __cnfn rotate(uchar8, uchar8);
9780 char16 __ovld __cnfn rotate(char16, char16);
9781 uchar16 __ovld __cnfn rotate(uchar16, uchar16);
9782 short __ovld __cnfn rotate(short, short);
9784 short2 __ovld __cnfn rotate(short2, short2);
9785 ushort2 __ovld __cnfn rotate(ushort2, ushort2);
9786 short3 __ovld __cnfn rotate(short3, short3);
9787 ushort3 __ovld __cnfn rotate(ushort3, ushort3);
9788 short4 __ovld __cnfn rotate(short4, short4);
9789 ushort4 __ovld __cnfn rotate(ushort4, ushort4);
9790 short8 __ovld __cnfn rotate(short8, short8);
9791 ushort8 __ovld __cnfn rotate(ushort8, ushort8);
9792 short16 __ovld __cnfn rotate(short16, short16);
9793 ushort16 __ovld __cnfn rotate(ushort16, ushort16);
9794 int __ovld __cnfn rotate(int, int);
9802 int8 __ovld __cnfn rotate(int8, int8);
9803 uint8 __ovld __cnfn rotate(uint8, uint8);
9804 int16 __ovld __cnfn rotate(int16, int16);
9805 uint16 __ovld __cnfn rotate(uint16, uint16);
9806 long __ovld __cnfn rotate(long, long);
9808 long2 __ovld __cnfn rotate(long2, long2);
9809 ulong2 __ovld __cnfn rotate(ulong2, ulong2);
9810 long3 __ovld __cnfn rotate(long3, long3);
9811 ulong3 __ovld __cnfn rotate(ulong3, ulong3);
9812 long4 __ovld __cnfn rotate(long4, long4);
9813 ulong4 __ovld __cnfn rotate(ulong4, ulong4);
9814 long8 __ovld __cnfn rotate(long8, long8);
9815 ulong8 __ovld __cnfn rotate(ulong8, ulong8);
9816 long16 __ovld __cnfn rotate(long16, long16);
9817 ulong16 __ovld __cnfn rotate(ulong16, ulong16);
9818 
9819 /**
9820  * Returns x - y and saturates the result.
9821  */
9822 char __ovld __cnfn sub_sat(char, char);
9824 char2 __ovld __cnfn sub_sat(char2, char2);
9825 uchar2 __ovld __cnfn sub_sat(uchar2, uchar2);
9826 char3 __ovld __cnfn sub_sat(char3, char3);
9827 uchar3 __ovld __cnfn sub_sat(uchar3, uchar3);
9828 char4 __ovld __cnfn sub_sat(char4, char4);
9829 uchar4 __ovld __cnfn sub_sat(uchar4, uchar4);
9830 char8 __ovld __cnfn sub_sat(char8, char8);
9831 uchar8 __ovld __cnfn sub_sat(uchar8, uchar8);
9832 char16 __ovld __cnfn sub_sat(char16, char16);
9833 uchar16 __ovld __cnfn sub_sat(uchar16, uchar16);
9834 short __ovld __cnfn sub_sat(short, short);
9836 short2 __ovld __cnfn sub_sat(short2, short2);
9837 ushort2 __ovld __cnfn sub_sat(ushort2, ushort2);
9838 short3 __ovld __cnfn sub_sat(short3, short3);
9839 ushort3 __ovld __cnfn sub_sat(ushort3, ushort3);
9840 short4 __ovld __cnfn sub_sat(short4, short4);
9841 ushort4 __ovld __cnfn sub_sat(ushort4, ushort4);
9842 short8 __ovld __cnfn sub_sat(short8, short8);
9843 ushort8 __ovld __cnfn sub_sat(ushort8, ushort8);
9844 short16 __ovld __cnfn sub_sat(short16, short16);
9845 ushort16 __ovld __cnfn sub_sat(ushort16, ushort16);
9846 int __ovld __cnfn sub_sat(int, int);
9854 int8 __ovld __cnfn sub_sat(int8, int8);
9855 uint8 __ovld __cnfn sub_sat(uint8, uint8);
9856 int16 __ovld __cnfn sub_sat(int16, int16);
9857 uint16 __ovld __cnfn sub_sat(uint16, uint16);
9858 long __ovld __cnfn sub_sat(long, long);
9860 long2 __ovld __cnfn sub_sat(long2, long2);
9861 ulong2 __ovld __cnfn sub_sat(ulong2, ulong2);
9862 long3 __ovld __cnfn sub_sat(long3, long3);
9863 ulong3 __ovld __cnfn sub_sat(ulong3, ulong3);
9864 long4 __ovld __cnfn sub_sat(long4, long4);
9865 ulong4 __ovld __cnfn sub_sat(ulong4, ulong4);
9866 long8 __ovld __cnfn sub_sat(long8, long8);
9867 ulong8 __ovld __cnfn sub_sat(ulong8, ulong8);
9868 long16 __ovld __cnfn sub_sat(long16, long16);
9869 ulong16 __ovld __cnfn sub_sat(ulong16, ulong16);
9870 
9871 /**
9872  * result[i] = ((short)hi[i] << 8) | lo[i]
9873  * result[i] = ((ushort)hi[i] << 8) | lo[i]
9874  */
9877 short2 __ovld __cnfn upsample(char2, uchar2);
9878 short3 __ovld __cnfn upsample(char3, uchar3);
9879 short4 __ovld __cnfn upsample(char4, uchar4);
9880 short8 __ovld __cnfn upsample(char8, uchar8);
9881 short16 __ovld __cnfn upsample(char16, uchar16);
9882 ushort2 __ovld __cnfn upsample(uchar2, uchar2);
9883 ushort3 __ovld __cnfn upsample(uchar3, uchar3);
9884 ushort4 __ovld __cnfn upsample(uchar4, uchar4);
9885 ushort8 __ovld __cnfn upsample(uchar8, uchar8);
9886 ushort16 __ovld __cnfn upsample(uchar16, uchar16);
9887 
9888 /**
9889  * result[i] = ((int)hi[i] << 16) | lo[i]
9890  * result[i] = ((uint)hi[i] << 16) | lo[i]
9891  */
9894 int2 __ovld __cnfn upsample(short2, ushort2);
9895 int3 __ovld __cnfn upsample(short3, ushort3);
9896 int4 __ovld __cnfn upsample(short4, ushort4);
9897 int8 __ovld __cnfn upsample(short8, ushort8);
9898 int16 __ovld __cnfn upsample(short16, ushort16);
9899 uint2 __ovld __cnfn upsample(ushort2, ushort2);
9900 uint3 __ovld __cnfn upsample(ushort3, ushort3);
9901 uint4 __ovld __cnfn upsample(ushort4, ushort4);
9902 uint8 __ovld __cnfn upsample(ushort8, ushort8);
9903 uint16 __ovld __cnfn upsample(ushort16, ushort16);
9904 /**
9905  * result[i] = ((long)hi[i] << 32) | lo[i]
9906  * result[i] = ((ulong)hi[i] << 32) | lo[i]
9907  */
9913 long8 __ovld __cnfn upsample(int8, uint8);
9914 long16 __ovld __cnfn upsample(int16, uint16);
9918 ulong8 __ovld __cnfn upsample(uint8, uint8);
9919 ulong16 __ovld __cnfn upsample(uint16, uint16);
9920 
9921 /*
9922  * popcount(x): returns the number of set bit in x
9923  */
9924 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
9927 char2 __ovld __cnfn popcount(char2);
9928 uchar2 __ovld __cnfn popcount(uchar2);
9929 char3 __ovld __cnfn popcount(char3);
9930 uchar3 __ovld __cnfn popcount(uchar3);
9931 char4 __ovld __cnfn popcount(char4);
9932 uchar4 __ovld __cnfn popcount(uchar4);
9933 char8 __ovld __cnfn popcount(char8);
9934 uchar8 __ovld __cnfn popcount(uchar8);
9935 char16 __ovld __cnfn popcount(char16);
9936 uchar16 __ovld __cnfn popcount(uchar16);
9937 short __ovld __cnfn popcount(short);
9939 short2 __ovld __cnfn popcount(short2);
9940 ushort2 __ovld __cnfn popcount(ushort2);
9941 short3 __ovld __cnfn popcount(short3);
9942 ushort3 __ovld __cnfn popcount(ushort3);
9943 short4 __ovld __cnfn popcount(short4);
9944 ushort4 __ovld __cnfn popcount(ushort4);
9945 short8 __ovld __cnfn popcount(short8);
9946 ushort8 __ovld __cnfn popcount(ushort8);
9947 short16 __ovld __cnfn popcount(short16);
9948 ushort16 __ovld __cnfn popcount(ushort16);
9958 uint8 __ovld __cnfn popcount(uint8);
9959 int16 __ovld __cnfn popcount(int16);
9960 uint16 __ovld __cnfn popcount(uint16);
9963 long2 __ovld __cnfn popcount(long2);
9964 ulong2 __ovld __cnfn popcount(ulong2);
9965 long3 __ovld __cnfn popcount(long3);
9966 ulong3 __ovld __cnfn popcount(ulong3);
9967 long4 __ovld __cnfn popcount(long4);
9968 ulong4 __ovld __cnfn popcount(ulong4);
9969 long8 __ovld __cnfn popcount(long8);
9970 ulong8 __ovld __cnfn popcount(ulong8);
9971 long16 __ovld __cnfn popcount(long16);
9972 ulong16 __ovld __cnfn popcount(ulong16);
9973 #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
9974 
9975 /**
9976  * Multiply two 24-bit integer values x and y and add
9977  * the 32-bit integer result to the 32-bit integer z.
9978  * Refer to definition of mul24 to see how the 24-bit
9979  * integer multiplication is performed.
9980  */
9981 int __ovld __cnfn mad24(int, int, int);
9989 int8 __ovld __cnfn mad24(int8, int8, int8);
9990 uint8 __ovld __cnfn mad24(uint8, uint8, uint8);
9991 int16 __ovld __cnfn mad24(int16, int16, int16);
9992 uint16 __ovld __cnfn mad24(uint16, uint16, uint16);
9993 
9994 /**
9995  * Multiply two 24-bit integer values x and y. x and y
9996  * are 32-bit integers but only the low 24-bits are used
9997  * to perform the multiplication. mul24 should only
9998  * be used when values in x and y are in the range [-
9999  * 2^23, 2^23-1] if x and y are signed integers and in the
10000  * range [0, 2^24-1] if x and y are unsigned integers. If
10001  * x and y are not in this range, the multiplication
10002  * result is implementation-defined.
10003  */
10004 int __ovld __cnfn mul24(int, int);
10012 int8 __ovld __cnfn mul24(int8, int8);
10013 uint8 __ovld __cnfn mul24(uint8, uint8);
10014 int16 __ovld __cnfn mul24(int16, int16);
10015 uint16 __ovld __cnfn mul24(uint16, uint16);
10016 
10017 // OpenCL v1.1 s6.11.4, v1.2 s6.12.4, v2.0 s6.13.4 - Common Functions
10018 
10019 /**
10020  * Returns fmin(fmax(x, minval), maxval).
10021  * Results are undefined if minval > maxval.
10022  */
10023 float __ovld __cnfn clamp(float, float, float);
10027 float8 __ovld __cnfn clamp(float8, float8, float8);
10028 float16 __ovld __cnfn clamp(float16, float16, float16);
10032 float8 __ovld __cnfn clamp(float8, float, float);
10033 float16 __ovld __cnfn clamp(float16, float, float);
10034 #ifdef cl_khr_fp64
10035 double __ovld __cnfn clamp(double, double, double);
10039 double8 __ovld __cnfn clamp(double8, double8, double8);
10040 double16 __ovld __cnfn clamp(double16, double16, double16);
10041 double2 __ovld __cnfn clamp(double2, double, double);
10042 double3 __ovld __cnfn clamp(double3, double, double);
10043 double4 __ovld __cnfn clamp(double4, double, double);
10044 double8 __ovld __cnfn clamp(double8, double, double);
10045 double16 __ovld __cnfn clamp(double16, double, double);
10046 #endif //cl_khr_fp64
10047 #ifdef cl_khr_fp16
10048 half __ovld __cnfn clamp(half, half, half);
10052 half8 __ovld __cnfn clamp(half8, half8, half8);
10053 half16 __ovld __cnfn clamp(half16, half16, half16);
10054 half2 __ovld __cnfn clamp(half2, half, half);
10055 half3 __ovld __cnfn clamp(half3, half, half);
10056 half4 __ovld __cnfn clamp(half4, half, half);
10057 half8 __ovld __cnfn clamp(half8, half, half);
10058 half16 __ovld __cnfn clamp(half16, half, half);
10059 #endif //cl_khr_fp16
10060 
10061 /**
10062  * Converts radians to degrees, i.e. (180 / PI) *
10063  * radians.
10064  */
10065 float __ovld __cnfn degrees(float);
10069 float8 __ovld __cnfn degrees(float8);
10070 float16 __ovld __cnfn degrees(float16);
10071 #ifdef cl_khr_fp64
10072 double __ovld __cnfn degrees(double);
10076 double8 __ovld __cnfn degrees(double8);
10077 double16 __ovld __cnfn degrees(double16);
10078 #endif //cl_khr_fp64
10079 #ifdef cl_khr_fp16
10080 half __ovld __cnfn degrees(half);
10084 half8 __ovld __cnfn degrees(half8);
10085 half16 __ovld __cnfn degrees(half16);
10086 #endif //cl_khr_fp16
10087 
10088 /**
10089  * Returns y if x < y, otherwise it returns x. If x and y
10090  * are infinite or NaN, the return values are undefined.
10091  */
10092 float __ovld __cnfn max(float, float);
10096 float8 __ovld __cnfn max(float8, float8);
10097 float16 __ovld __cnfn max(float16, float16);
10101 float8 __ovld __cnfn max(float8, float);
10102 float16 __ovld __cnfn max(float16, float);
10103 #ifdef cl_khr_fp64
10104 double __ovld __cnfn max(double, double);
10108 double8 __ovld __cnfn max(double8, double8);
10109 double16 __ovld __cnfn max(double16, double16);
10110 double2 __ovld __cnfn max(double2, double);
10111 double3 __ovld __cnfn max(double3, double);
10112 double4 __ovld __cnfn max(double4, double);
10113 double8 __ovld __cnfn max(double8, double);
10114 double16 __ovld __cnfn max(double16, double);
10115 #endif //cl_khr_fp64
10116 #ifdef cl_khr_fp16
10117 half __ovld __cnfn max(half, half);
10121 half8 __ovld __cnfn max(half8, half8);
10122 half16 __ovld __cnfn max(half16, half16);
10123 half2 __ovld __cnfn max(half2, half);
10124 half3 __ovld __cnfn max(half3, half);
10125 half4 __ovld __cnfn max(half4, half);
10126 half8 __ovld __cnfn max(half8, half);
10127 half16 __ovld __cnfn max(half16, half);
10128 #endif //cl_khr_fp16
10129 
10130 /**
10131  * Returns y if y < x, otherwise it returns x. If x and y
10132  * are infinite or NaN, the return values are undefined.
10133  */
10134 float __ovld __cnfn min(float, float);
10138 float8 __ovld __cnfn min(float8, float8);
10139 float16 __ovld __cnfn min(float16, float16);
10143 float8 __ovld __cnfn min(float8, float);
10144 float16 __ovld __cnfn min(float16, float);
10145 #ifdef cl_khr_fp64
10146 double __ovld __cnfn min(double, double);
10150 double8 __ovld __cnfn min(double8, double8);
10151 double16 __ovld __cnfn min(double16, double16);
10152 double2 __ovld __cnfn min(double2, double);
10153 double3 __ovld __cnfn min(double3, double);
10154 double4 __ovld __cnfn min(double4, double);
10155 double8 __ovld __cnfn min(double8, double);
10156 double16 __ovld __cnfn min(double16, double);
10157 #endif //cl_khr_fp64
10158 #ifdef cl_khr_fp16
10159 half __ovld __cnfn min(half, half);
10163 half8 __ovld __cnfn min(half8, half8);
10164 half16 __ovld __cnfn min(half16, half16);
10165 half2 __ovld __cnfn min(half2, half);
10166 half3 __ovld __cnfn min(half3, half);
10167 half4 __ovld __cnfn min(half4, half);
10168 half8 __ovld __cnfn min(half8, half);
10169 half16 __ovld __cnfn min(half16, half);
10170 #endif //cl_khr_fp16
10171 
10172 /**
10173  * Returns the linear blend of x & y implemented as:
10174  * x + (y - x) * a
10175  * a must be a value in the range 0.0 ... 1.0. If a is not
10176  * in the range 0.0 ... 1.0, the return values are
10177  * undefined.
10178  */
10179 float __ovld __cnfn mix(float, float, float);
10183 float8 __ovld __cnfn mix(float8, float8, float8);
10184 float16 __ovld __cnfn mix(float16, float16, float16);
10188 float8 __ovld __cnfn mix(float8, float8, float);
10189 float16 __ovld __cnfn mix(float16, float16, float);
10190 #ifdef cl_khr_fp64
10191 double __ovld __cnfn mix(double, double, double);
10195 double8 __ovld __cnfn mix(double8, double8, double8);
10196 double16 __ovld __cnfn mix(double16, double16, double16);
10200 double8 __ovld __cnfn mix(double8, double8, double);
10201 double16 __ovld __cnfn mix(double16, double16, double);
10202 #endif //cl_khr_fp64
10203 #ifdef cl_khr_fp16
10204 half __ovld __cnfn mix(half, half, half);
10208 half8 __ovld __cnfn mix(half8, half8, half8);
10209 half16 __ovld __cnfn mix(half16, half16, half16);
10210 half2 __ovld __cnfn mix(half2, half2, half);
10211 half3 __ovld __cnfn mix(half3, half3, half);
10212 half4 __ovld __cnfn mix(half4, half4, half);
10213 half8 __ovld __cnfn mix(half8, half8, half);
10214 half16 __ovld __cnfn mix(half16, half16, half);
10215 #endif //cl_khr_fp16
10216 
10217 /**
10218  * Converts degrees to radians, i.e. (PI / 180) *
10219  * degrees.
10220  */
10221 float __ovld __cnfn radians(float);
10225 float8 __ovld __cnfn radians(float8);
10226 float16 __ovld __cnfn radians(float16);
10227 #ifdef cl_khr_fp64
10228 double __ovld __cnfn radians(double);
10232 double8 __ovld __cnfn radians(double8);
10233 double16 __ovld __cnfn radians(double16);
10234 #endif //cl_khr_fp64
10235 #ifdef cl_khr_fp16
10236 half __ovld __cnfn radians(half);
10240 half8 __ovld __cnfn radians(half8);
10241 half16 __ovld __cnfn radians(half16);
10242 #endif //cl_khr_fp16
10243 
10244 /**
10245  * Returns 0.0 if x < edge, otherwise it returns 1.0.
10246  */
10247 float __ovld __cnfn step(float, float);
10251 float8 __ovld __cnfn step(float8, float8);
10252 float16 __ovld __cnfn step(float16, float16);
10256 float8 __ovld __cnfn step(float, float8);
10257 float16 __ovld __cnfn step(float, float16);
10258 #ifdef cl_khr_fp64
10259 double __ovld __cnfn step(double, double);
10263 double8 __ovld __cnfn step(double8, double8);
10264 double16 __ovld __cnfn step(double16, double16);
10265 double2 __ovld __cnfn step(double, double2);
10266 double3 __ovld __cnfn step(double, double3);
10267 double4 __ovld __cnfn step(double, double4);
10268 double8 __ovld __cnfn step(double, double8);
10269 double16 __ovld __cnfn step(double, double16);
10270 #endif //cl_khr_fp64
10271 #ifdef cl_khr_fp16
10272 half __ovld __cnfn step(half, half);
10276 half8 __ovld __cnfn step(half8, half8);
10277 half16 __ovld __cnfn step(half16, half16);
10278 half2 __ovld __cnfn step(half, half2);
10279 half3 __ovld __cnfn step(half, half3);
10280 half4 __ovld __cnfn step(half, half4);
10281 half8 __ovld __cnfn step(half, half8);
10282 half16 __ovld __cnfn step(half, half16);
10283 #endif //cl_khr_fp16
10284 
10285 /**
10286  * Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
10287  * performs smooth Hermite interpolation between 0
10288  * and 1when edge0 < x < edge1. This is useful in
10289  * cases where you would want a threshold function
10290  * with a smooth transition.
10291  * This is equivalent to:
10292  * gentype t;
10293  * t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
10294  * return t * t * (3 - 2 * t);
10295  * Results are undefined if edge0 >= edge1 or if x,
10296  * edge0 or edge1 is a NaN.
10297  */
10298 float __ovld __cnfn smoothstep(float, float, float);
10302 float8 __ovld __cnfn smoothstep(float8, float8, float8);
10303 float16 __ovld __cnfn smoothstep(float16, float16, float16);
10307 float8 __ovld __cnfn smoothstep(float, float, float8);
10308 float16 __ovld __cnfn smoothstep(float, float, float16);
10309 #ifdef cl_khr_fp64
10310 double __ovld __cnfn smoothstep(double, double, double);
10314 double8 __ovld __cnfn smoothstep(double8, double8, double8);
10315 double16 __ovld __cnfn smoothstep(double16, double16, double16);
10316 double2 __ovld __cnfn smoothstep(double, double, double2);
10317 double3 __ovld __cnfn smoothstep(double, double, double3);
10318 double4 __ovld __cnfn smoothstep(double, double, double4);
10319 double8 __ovld __cnfn smoothstep(double, double, double8);
10320 double16 __ovld __cnfn smoothstep(double, double, double16);
10321 #endif //cl_khr_fp64
10322 #ifdef cl_khr_fp16
10323 half __ovld __cnfn smoothstep(half, half, half);
10327 half8 __ovld __cnfn smoothstep(half8, half8, half8);
10328 half16 __ovld __cnfn smoothstep(half16, half16, half16);
10329 half2 __ovld __cnfn smoothstep(half, half, half2);
10330 half3 __ovld __cnfn smoothstep(half, half, half3);
10331 half4 __ovld __cnfn smoothstep(half, half, half4);
10332 half8 __ovld __cnfn smoothstep(half, half, half8);
10333 half16 __ovld __cnfn smoothstep(half, half, half16);
10334 #endif //cl_khr_fp16
10335 
10336 /**
10337  * Returns 1.0 if x > 0, -0.0 if x = -0.0, +0.0 if x =
10338  * +0.0, or -1.0 if x < 0. Returns 0.0 if x is a NaN.
10339  */
10340 float __ovld __cnfn sign(float);
10344 float8 __ovld __cnfn sign(float8);
10345 float16 __ovld __cnfn sign(float16);
10346 #ifdef cl_khr_fp64
10347 double __ovld __cnfn sign(double);
10351 double8 __ovld __cnfn sign(double8);
10352 double16 __ovld __cnfn sign(double16);
10353 #endif //cl_khr_fp64
10354 #ifdef cl_khr_fp16
10355 half __ovld __cnfn sign(half);
10359 half8 __ovld __cnfn sign(half8);
10360 half16 __ovld __cnfn sign(half16);
10361 #endif //cl_khr_fp16
10362 
10363 // OpenCL v1.1 s6.11.5, v1.2 s6.12.5, v2.0 s6.13.5 - Geometric Functions
10364 
10365 /**
10366  * Returns the cross product of p0.xyz and p1.xyz. The
10367  * w component of float4 result returned will be 0.0.
10368  */
10371 #ifdef cl_khr_fp64
10374 #endif //cl_khr_fp64
10375 #ifdef cl_khr_fp16
10378 #endif //cl_khr_fp16
10379 
10380 /**
10381  * Compute dot product.
10382  */
10383 float __ovld __cnfn dot(float, float);
10387 #ifdef cl_khr_fp64
10388 double __ovld __cnfn dot(double, double);
10389 double __ovld __cnfn dot(double2, double2);
10390 double __ovld __cnfn dot(double3, double3);
10391 double __ovld __cnfn dot(double4, double4);
10392 #endif //cl_khr_fp64
10393 #ifdef cl_khr_fp16
10394 half __ovld __cnfn dot(half, half);
10395 half __ovld __cnfn dot(half2, half2);
10396 half __ovld __cnfn dot(half3, half3);
10397 half __ovld __cnfn dot(half4, half4);
10398 #endif //cl_khr_fp16
10399 
10400 /**
10401  * Returns the distance between p0 and p1. This is
10402  * calculated as length(p0 - p1).
10403  */
10404 float __ovld __cnfn distance(float, float);
10408 #ifdef cl_khr_fp64
10409 double __ovld __cnfn distance(double, double);
10413 #endif //cl_khr_fp64
10414 #ifdef cl_khr_fp16
10415 half __ovld __cnfn distance(half, half);
10419 #endif //cl_khr_fp16
10420 
10421 /**
10422  * Return the length of vector p, i.e.,
10423  * sqrt(p.x2 + p.y 2 + ...)
10424  */
10425 float __ovld __cnfn length(float);
10429 #ifdef cl_khr_fp64
10430 double __ovld __cnfn length(double);
10431 double __ovld __cnfn length(double2);
10432 double __ovld __cnfn length(double3);
10433 double __ovld __cnfn length(double4);
10434 #endif //cl_khr_fp64
10435 #ifdef cl_khr_fp16
10436 half __ovld __cnfn length(half);
10437 half __ovld __cnfn length(half2);
10438 half __ovld __cnfn length(half3);
10439 half __ovld __cnfn length(half4);
10440 #endif //cl_khr_fp16
10441 
10442 /**
10443  * Returns a vector in the same direction as p but with a
10444  * length of 1.
10445  */
10446 float __ovld __cnfn normalize(float);
10450 #ifdef cl_khr_fp64
10451 double __ovld __cnfn normalize(double);
10455 #endif //cl_khr_fp64
10456 #ifdef cl_khr_fp16
10457 half __ovld __cnfn normalize(half);
10461 #endif //cl_khr_fp16
10462 
10463 /**
10464  * Returns fast_length(p0 - p1).
10465  */
10466 float __ovld __cnfn fast_distance(float, float);
10470 
10471 /**
10472  * Returns the length of vector p computed as:
10473  * half_sqrt(p.x2 + p.y2 + ...)
10474  */
10479 
10480 /**
10481  * Returns a vector in the same direction as p but with a
10482  * length of 1. fast_normalize is computed as:
10483  * p * half_rsqrt (p.x^2 + p.y^2 + ... )
10484  * The result shall be within 8192 ulps error from the
10485  * infinitely precise result of
10486  * if (all(p == 0.0f))
10487  * result = p;
10488  * else
10489  * result = p / sqrt (p.x^2 + p.y^2 + ...);
10490  * with the following exceptions:
10491  * 1) If the sum of squares is greater than FLT_MAX
10492  * then the value of the floating-point values in the
10493  * result vector are undefined.
10494  * 2) If the sum of squares is less than FLT_MIN then
10495  * the implementation may return back p.
10496  * 3) If the device is in "denorms are flushed to zero"
10497  * mode, individual operand elements with magnitude
10498  * less than sqrt(FLT_MIN) may be flushed to zero
10499  * before proceeding with the calculation.
10500  */
10505 
10506 // OpenCL v1.1 s6.11.6, v1.2 s6.12.6, v2.0 s6.13.6 - Relational Functions
10507 
10508 /**
10509  * intn isequal (floatn x, floatn y)
10510  * Returns the component-wise compare of x == y.
10511  */
10512 int __ovld __cnfn isequal(float, float);
10516 int8 __ovld __cnfn isequal(float8, float8);
10517 int16 __ovld __cnfn isequal(float16, float16);
10518 #ifdef cl_khr_fp64
10519 int __ovld __cnfn isequal(double, double);
10523 long8 __ovld __cnfn isequal(double8, double8);
10524 long16 __ovld __cnfn isequal(double16, double16);
10525 #endif //cl_khr_fp64
10526 #ifdef cl_khr_fp16
10527 int __ovld __cnfn isequal(half, half);
10528 short2 __ovld __cnfn isequal(half2, half2);
10529 short3 __ovld __cnfn isequal(half3, half3);
10530 short4 __ovld __cnfn isequal(half4, half4);
10531 short8 __ovld __cnfn isequal(half8, half8);
10532 short16 __ovld __cnfn isequal(half16, half16);
10533 #endif //cl_khr_fp16
10534 
10535 /**
10536  * Returns the component-wise compare of x != y.
10537  */
10538 int __ovld __cnfn isnotequal(float, float);
10542 int8 __ovld __cnfn isnotequal(float8, float8);
10543 int16 __ovld __cnfn isnotequal(float16, float16);
10544 #ifdef cl_khr_fp64
10545 int __ovld __cnfn isnotequal(double, double);
10549 long8 __ovld __cnfn isnotequal(double8, double8);
10550 long16 __ovld __cnfn isnotequal(double16, double16);
10551 #endif //cl_khr_fp64
10552 #ifdef cl_khr_fp16
10553 int __ovld __cnfn isnotequal(half, half);
10557 short8 __ovld __cnfn isnotequal(half8, half8);
10558 short16 __ovld __cnfn isnotequal(half16, half16);
10559 #endif //cl_khr_fp16
10560 
10561 /**
10562  * Returns the component-wise compare of x > y.
10563  */
10564 int __ovld __cnfn isgreater(float, float);
10568 int8 __ovld __cnfn isgreater(float8, float8);
10569 int16 __ovld __cnfn isgreater(float16, float16);
10570 #ifdef cl_khr_fp64
10571 int __ovld __cnfn isgreater(double, double);
10575 long8 __ovld __cnfn isgreater(double8, double8);
10576 long16 __ovld __cnfn isgreater(double16, double16);
10577 #endif //cl_khr_fp64
10578 #ifdef cl_khr_fp16
10579 int __ovld __cnfn isgreater(half, half);
10580 short2 __ovld __cnfn isgreater(half2, half2);
10581 short3 __ovld __cnfn isgreater(half3, half3);
10582 short4 __ovld __cnfn isgreater(half4, half4);
10583 short8 __ovld __cnfn isgreater(half8, half8);
10584 short16 __ovld __cnfn isgreater(half16, half16);
10585 #endif //cl_khr_fp16
10586 
10587 /**
10588  * Returns the component-wise compare of x >= y.
10589  */
10590 int __ovld __cnfn isgreaterequal(float, float);
10594 int8 __ovld __cnfn isgreaterequal(float8, float8);
10595 int16 __ovld __cnfn isgreaterequal(float16, float16);
10596 #ifdef cl_khr_fp64
10597 int __ovld __cnfn isgreaterequal(double, double);
10601 long8 __ovld __cnfn isgreaterequal(double8, double8);
10602 long16 __ovld __cnfn isgreaterequal(double16, double16);
10603 #endif //cl_khr_fp64
10604 #ifdef cl_khr_fp16
10605 int __ovld __cnfn isgreaterequal(half, half);
10609 short8 __ovld __cnfn isgreaterequal(half8, half8);
10610 short16 __ovld __cnfn isgreaterequal(half16, half16);
10611 #endif //cl_khr_fp16
10612 
10613 /**
10614  * Returns the component-wise compare of x < y.
10615  */
10616 int __ovld __cnfn isless(float, float);
10620 int8 __ovld __cnfn isless(float8, float8);
10621 int16 __ovld __cnfn isless(float16, float16);
10622 #ifdef cl_khr_fp64
10623 int __ovld __cnfn isless(double, double);
10627 long8 __ovld __cnfn isless(double8, double8);
10628 long16 __ovld __cnfn isless(double16, double16);
10629 #endif //cl_khr_fp64
10630 #ifdef cl_khr_fp16
10631 int __ovld __cnfn isless(half, half);
10632 short2 __ovld __cnfn isless(half2, half2);
10633 short3 __ovld __cnfn isless(half3, half3);
10634 short4 __ovld __cnfn isless(half4, half4);
10635 short8 __ovld __cnfn isless(half8, half8);
10636 short16 __ovld __cnfn isless(half16, half16);
10637 #endif //cl_khr_fp16
10638 
10639 /**
10640  * Returns the component-wise compare of x <= y.
10641  */
10642 int __ovld __cnfn islessequal(float, float);
10646 int8 __ovld __cnfn islessequal(float8, float8);
10647 int16 __ovld __cnfn islessequal(float16, float16);
10648 #ifdef cl_khr_fp64
10649 int __ovld __cnfn islessequal(double, double);
10653 long8 __ovld __cnfn islessequal(double8, double8);
10654 long16 __ovld __cnfn islessequal(double16, double16);
10655 #endif //cl_khr_fp64
10656 #ifdef cl_khr_fp16
10657 int __ovld __cnfn islessequal(half, half);
10661 short8 __ovld __cnfn islessequal(half8, half8);
10662 short16 __ovld __cnfn islessequal(half16, half16);
10663 #endif //cl_khr_fp16
10664 
10665 /**
10666  * Returns the component-wise compare of
10667  * (x < y) || (x > y) .
10668  */
10669 int __ovld __cnfn islessgreater(float, float);
10673 int8 __ovld __cnfn islessgreater(float8, float8);
10674 int16 __ovld __cnfn islessgreater(float16, float16);
10675 #ifdef cl_khr_fp64
10676 int __ovld __cnfn islessgreater(double, double);
10680 long8 __ovld __cnfn islessgreater(double8, double8);
10681 long16 __ovld __cnfn islessgreater(double16, double16);
10682 #endif //cl_khr_fp64
10683 #ifdef cl_khr_fp16
10684 int __ovld __cnfn islessgreater(half, half);
10688 short8 __ovld __cnfn islessgreater(half8, half8);
10689 short16 __ovld __cnfn islessgreater(half16, half16);
10690 #endif //cl_khr_fp16
10691 
10692 /**
10693  * Test for finite value.
10694  */
10695 int __ovld __cnfn isfinite(float);
10699 int8 __ovld __cnfn isfinite(float8);
10700 int16 __ovld __cnfn isfinite(float16);
10701 #ifdef cl_khr_fp64
10702 int __ovld __cnfn isfinite(double);
10703 long2 __ovld __cnfn isfinite(double2);
10704 long3 __ovld __cnfn isfinite(double3);
10705 long4 __ovld __cnfn isfinite(double4);
10706 long8 __ovld __cnfn isfinite(double8);
10707 long16 __ovld __cnfn isfinite(double16);
10708 #endif //cl_khr_fp64
10709 #ifdef cl_khr_fp16
10710 int __ovld __cnfn isfinite(half);
10711 short2 __ovld __cnfn isfinite(half2);
10712 short3 __ovld __cnfn isfinite(half3);
10713 short4 __ovld __cnfn isfinite(half4);
10714 short8 __ovld __cnfn isfinite(half8);
10715 short16 __ovld __cnfn isfinite(half16);
10716 #endif //cl_khr_fp16
10717 
10718 /**
10719  * Test for infinity value (+ve or -ve) .
10720  */
10721 int __ovld __cnfn isinf(float);
10725 int8 __ovld __cnfn isinf(float8);
10726 int16 __ovld __cnfn isinf(float16);
10727 #ifdef cl_khr_fp64
10728 int __ovld __cnfn isinf(double);
10729 long2 __ovld __cnfn isinf(double2);
10730 long3 __ovld __cnfn isinf(double3);
10731 long4 __ovld __cnfn isinf(double4);
10732 long8 __ovld __cnfn isinf(double8);
10733 long16 __ovld __cnfn isinf(double16);
10734 #endif //cl_khr_fp64
10735 #ifdef cl_khr_fp16
10736 int __ovld __cnfn isinf(half);
10737 short2 __ovld __cnfn isinf(half2);
10738 short3 __ovld __cnfn isinf(half3);
10739 short4 __ovld __cnfn isinf(half4);
10740 short8 __ovld __cnfn isinf(half8);
10741 short16 __ovld __cnfn isinf(half16);
10742 #endif //cl_khr_fp16
10743 
10744 /**
10745  * Test for a NaN.
10746  */
10747 int __ovld __cnfn isnan(float);
10751 int8 __ovld __cnfn isnan(float8);
10752 int16 __ovld __cnfn isnan(float16);
10753 #ifdef cl_khr_fp64
10754 int __ovld __cnfn isnan(double);
10755 long2 __ovld __cnfn isnan(double2);
10756 long3 __ovld __cnfn isnan(double3);
10757 long4 __ovld __cnfn isnan(double4);
10758 long8 __ovld __cnfn isnan(double8);
10759 long16 __ovld __cnfn isnan(double16);
10760 #endif //cl_khr_fp64
10761 #ifdef cl_khr_fp16
10762 int __ovld __cnfn isnan(half);
10763 short2 __ovld __cnfn isnan(half2);
10764 short3 __ovld __cnfn isnan(half3);
10765 short4 __ovld __cnfn isnan(half4);
10766 short8 __ovld __cnfn isnan(half8);
10767 short16 __ovld __cnfn isnan(half16);
10768 #endif //cl_khr_fp16
10769 
10770 /**
10771  * Test for a normal value.
10772  */
10773 int __ovld __cnfn isnormal(float);
10777 int8 __ovld __cnfn isnormal(float8);
10778 int16 __ovld __cnfn isnormal(float16);
10779 #ifdef cl_khr_fp64
10780 int __ovld __cnfn isnormal(double);
10781 long2 __ovld __cnfn isnormal(double2);
10782 long3 __ovld __cnfn isnormal(double3);
10783 long4 __ovld __cnfn isnormal(double4);
10784 long8 __ovld __cnfn isnormal(double8);
10785 long16 __ovld __cnfn isnormal(double16);
10786 #endif //cl_khr_fp64
10787 #ifdef cl_khr_fp16
10788 int __ovld __cnfn isnormal(half);
10789 short2 __ovld __cnfn isnormal(half2);
10790 short3 __ovld __cnfn isnormal(half3);
10791 short4 __ovld __cnfn isnormal(half4);
10792 short8 __ovld __cnfn isnormal(half8);
10793 short16 __ovld __cnfn isnormal(half16);
10794 #endif //cl_khr_fp16
10795 
10796 /**
10797  * Test if arguments are ordered. isordered() takes
10798  * arguments x and y, and returns the result
10799  * isequal(x, x) && isequal(y, y).
10800  */
10801 int __ovld __cnfn isordered(float, float);
10805 int8 __ovld __cnfn isordered(float8, float8);
10806 int16 __ovld __cnfn isordered(float16, float16);
10807 #ifdef cl_khr_fp64
10808 int __ovld __cnfn isordered(double, double);
10812 long8 __ovld __cnfn isordered(double8, double8);
10813 long16 __ovld __cnfn isordered(double16, double16);
10814 #endif //cl_khr_fp64
10815 #ifdef cl_khr_fp16
10816 int __ovld __cnfn isordered(half, half);
10817 short2 __ovld __cnfn isordered(half2, half2);
10818 short3 __ovld __cnfn isordered(half3, half3);
10819 short4 __ovld __cnfn isordered(half4, half4);
10820 short8 __ovld __cnfn isordered(half8, half8);
10821 short16 __ovld __cnfn isordered(half16, half16);
10822 #endif //cl_khr_fp16
10823 
10824 /**
10825  * Test if arguments are unordered. isunordered()
10826  * takes arguments x and y, returning non-zero if x or y
10827  * is NaN, and zero otherwise.
10828  */
10829 int __ovld __cnfn isunordered(float, float);
10833 int8 __ovld __cnfn isunordered(float8, float8);
10834 int16 __ovld __cnfn isunordered(float16, float16);
10835 #ifdef cl_khr_fp64
10836 int __ovld __cnfn isunordered(double, double);
10840 long8 __ovld __cnfn isunordered(double8, double8);
10841 long16 __ovld __cnfn isunordered(double16, double16);
10842 #endif //cl_khr_fp64
10843 #ifdef cl_khr_fp16
10844 int __ovld __cnfn isunordered(half, half);
10848 short8 __ovld __cnfn isunordered(half8, half8);
10849 short16 __ovld __cnfn isunordered(half16, half16);
10850 #endif //cl_khr_fp16
10851 
10852 /**
10853  * Test for sign bit. The scalar version of the function
10854  * returns a 1 if the sign bit in the float is set else returns
10855  * 0. The vector version of the function returns the
10856  * following for each component in floatn: a -1 if the
10857  * sign bit in the float is set else returns 0.
10858  */
10859 int __ovld __cnfn signbit(float);
10863 int8 __ovld __cnfn signbit(float8);
10864 int16 __ovld __cnfn signbit(float16);
10865 #ifdef cl_khr_fp64
10866 int __ovld __cnfn signbit(double);
10867 long2 __ovld __cnfn signbit(double2);
10868 long3 __ovld __cnfn signbit(double3);
10869 long4 __ovld __cnfn signbit(double4);
10870 long8 __ovld __cnfn signbit(double8);
10871 long16 __ovld __cnfn signbit(double16);
10872 #endif //cl_khr_fp64
10873 #ifdef cl_khr_fp16
10874 int __ovld __cnfn signbit(half);
10875 short2 __ovld __cnfn signbit(half2);
10876 short3 __ovld __cnfn signbit(half3);
10877 short4 __ovld __cnfn signbit(half4);
10878 short8 __ovld __cnfn signbit(half8);
10879 short16 __ovld __cnfn signbit(half16);
10880 #endif //cl_khr_fp16
10881 
10882 /**
10883  * Returns 1 if the most significant bit in any component
10884  * of x is set; otherwise returns 0.
10885  */
10886 int __ovld __cnfn any(char);
10887 int __ovld __cnfn any(char2);
10888 int __ovld __cnfn any(char3);
10889 int __ovld __cnfn any(char4);
10890 int __ovld __cnfn any(char8);
10891 int __ovld __cnfn any(char16);
10892 int __ovld __cnfn any(short);
10893 int __ovld __cnfn any(short2);
10894 int __ovld __cnfn any(short3);
10895 int __ovld __cnfn any(short4);
10896 int __ovld __cnfn any(short8);
10897 int __ovld __cnfn any(short16);
10898 int __ovld __cnfn any(int);
10902 int __ovld __cnfn any(int8);
10903 int __ovld __cnfn any(int16);
10904 int __ovld __cnfn any(long);
10905 int __ovld __cnfn any(long2);
10906 int __ovld __cnfn any(long3);
10907 int __ovld __cnfn any(long4);
10908 int __ovld __cnfn any(long8);
10909 int __ovld __cnfn any(long16);
10910 
10911 /**
10912  * Returns 1 if the most significant bit in all components
10913  * of x is set; otherwise returns 0.
10914  */
10915 int __ovld __cnfn all(char);
10916 int __ovld __cnfn all(char2);
10917 int __ovld __cnfn all(char3);
10918 int __ovld __cnfn all(char4);
10919 int __ovld __cnfn all(char8);
10920 int __ovld __cnfn all(char16);
10921 int __ovld __cnfn all(short);
10922 int __ovld __cnfn all(short2);
10923 int __ovld __cnfn all(short3);
10924 int __ovld __cnfn all(short4);
10925 int __ovld __cnfn all(short8);
10926 int __ovld __cnfn all(short16);
10927 int __ovld __cnfn all(int);
10931 int __ovld __cnfn all(int8);
10932 int __ovld __cnfn all(int16);
10933 int __ovld __cnfn all(long);
10934 int __ovld __cnfn all(long2);
10935 int __ovld __cnfn all(long3);
10936 int __ovld __cnfn all(long4);
10937 int __ovld __cnfn all(long8);
10938 int __ovld __cnfn all(long16);
10939 
10940 /**
10941  * Each bit of the result is the corresponding bit of a if
10942  * the corresponding bit of c is 0. Otherwise it is the
10943  * corresponding bit of b.
10944  */
10945 char __ovld __cnfn bitselect(char, char, char);
10947 char2 __ovld __cnfn bitselect(char2, char2, char2);
10948 uchar2 __ovld __cnfn bitselect(uchar2, uchar2, uchar2);
10949 char3 __ovld __cnfn bitselect(char3, char3, char3);
10950 uchar3 __ovld __cnfn bitselect(uchar3, uchar3, uchar3);
10951 char4 __ovld __cnfn bitselect(char4, char4, char4);
10952 uchar4 __ovld __cnfn bitselect(uchar4, uchar4, uchar4);
10953 char8 __ovld __cnfn bitselect(char8, char8, char8);
10954 uchar8 __ovld __cnfn bitselect(uchar8, uchar8, uchar8);
10955 char16 __ovld __cnfn bitselect(char16, char16, char16);
10956 uchar16 __ovld __cnfn bitselect(uchar16, uchar16, uchar16);
10957 short __ovld __cnfn bitselect(short, short, short);
10959 short2 __ovld __cnfn bitselect(short2, short2, short2);
10960 ushort2 __ovld __cnfn bitselect(ushort2, ushort2, ushort2);
10961 short3 __ovld __cnfn bitselect(short3, short3, short3);
10962 ushort3 __ovld __cnfn bitselect(ushort3, ushort3, ushort3);
10963 short4 __ovld __cnfn bitselect(short4, short4, short4);
10964 ushort4 __ovld __cnfn bitselect(ushort4, ushort4, ushort4);
10965 short8 __ovld __cnfn bitselect(short8, short8, short8);
10966 ushort8 __ovld __cnfn bitselect(ushort8, ushort8, ushort8);
10967 short16 __ovld __cnfn bitselect(short16, short16, short16);
10968 ushort16 __ovld __cnfn bitselect(ushort16, ushort16, ushort16);
10969 int __ovld __cnfn bitselect(int, int, int);
10977 int8 __ovld __cnfn bitselect(int8, int8, int8);
10978 uint8 __ovld __cnfn bitselect(uint8, uint8, uint8);
10979 int16 __ovld __cnfn bitselect(int16, int16, int16);
10980 uint16 __ovld __cnfn bitselect(uint16, uint16, uint16);
10981 long __ovld __cnfn bitselect(long, long, long);
10983 long2 __ovld __cnfn bitselect(long2, long2, long2);
10984 ulong2 __ovld __cnfn bitselect(ulong2, ulong2, ulong2);
10985 long3 __ovld __cnfn bitselect(long3, long3, long3);
10986 ulong3 __ovld __cnfn bitselect(ulong3, ulong3, ulong3);
10987 long4 __ovld __cnfn bitselect(long4, long4, long4);
10988 ulong4 __ovld __cnfn bitselect(ulong4, ulong4, ulong4);
10989 long8 __ovld __cnfn bitselect(long8, long8, long8);
10990 ulong8 __ovld __cnfn bitselect(ulong8, ulong8, ulong8);
10991 long16 __ovld __cnfn bitselect(long16, long16, long16);
10992 ulong16 __ovld __cnfn bitselect(ulong16, ulong16, ulong16);
10993 float __ovld __cnfn bitselect(float, float, float);
10997 float8 __ovld __cnfn bitselect(float8, float8, float8);
10998 float16 __ovld __cnfn bitselect(float16, float16, float16);
10999 #ifdef cl_khr_fp64
11000 double __ovld __cnfn bitselect(double, double, double);
11004 double8 __ovld __cnfn bitselect(double8, double8, double8);
11005 double16 __ovld __cnfn bitselect(double16, double16, double16);
11006 #endif //cl_khr_fp64
11007 #ifdef cl_khr_fp16
11008 half __ovld __cnfn bitselect(half, half, half);
11012 half8 __ovld __cnfn bitselect(half8, half8, half8);
11013 half16 __ovld __cnfn bitselect(half16, half16, half16);
11014 #endif //cl_khr_fp16
11015 
11016 /**
11017  * For each component of a vector type,
11018  * result[i] = if MSB of c[i] is set ? b[i] : a[i].
11019  * For a scalar type, result = c ? b : a.
11020  * b and a must have the same type.
11021  * c must have the same number of elements and bits as a.
11022  */
11023 char __ovld __cnfn select(char, char, char);
11025 char2 __ovld __cnfn select(char2, char2, char2);
11026 uchar2 __ovld __cnfn select(uchar2, uchar2, char2);
11027 char3 __ovld __cnfn select(char3, char3, char3);
11028 uchar3 __ovld __cnfn select(uchar3, uchar3, char3);
11029 char4 __ovld __cnfn select(char4, char4, char4);
11030 uchar4 __ovld __cnfn select(uchar4, uchar4, char4);
11031 char8 __ovld __cnfn select(char8, char8, char8);
11032 uchar8 __ovld __cnfn select(uchar8, uchar8, char8);
11033 char16 __ovld __cnfn select(char16, char16, char16);
11034 uchar16 __ovld __cnfn select(uchar16, uchar16, char16);
11035 
11036 short __ovld __cnfn select(short, short, short);
11038 short2 __ovld __cnfn select(short2, short2, short2);
11039 ushort2 __ovld __cnfn select(ushort2, ushort2, short2);
11040 short3 __ovld __cnfn select(short3, short3, short3);
11041 ushort3 __ovld __cnfn select(ushort3, ushort3, short3);
11042 short4 __ovld __cnfn select(short4, short4, short4);
11043 ushort4 __ovld __cnfn select(ushort4, ushort4, short4);
11044 short8 __ovld __cnfn select(short8, short8, short8);
11045 ushort8 __ovld __cnfn select(ushort8, ushort8, short8);
11046 short16 __ovld __cnfn select(short16, short16, short16);
11047 ushort16 __ovld __cnfn select(ushort16, ushort16, short16);
11048 
11049 int __ovld __cnfn select(int, int, int);
11057 int8 __ovld __cnfn select(int8, int8, int8);
11058 uint8 __ovld __cnfn select(uint8, uint8, int8);
11059 int16 __ovld __cnfn select(int16, int16, int16);
11060 uint16 __ovld __cnfn select(uint16, uint16, int16);
11061 float __ovld __cnfn select(float, float, int);
11065 float8 __ovld __cnfn select(float8, float8, int8);
11066 float16 __ovld __cnfn select(float16, float16, int16);
11067 
11068 long __ovld __cnfn select(long, long, long);
11070 long2 __ovld __cnfn select(long2, long2, long2);
11071 ulong2 __ovld __cnfn select(ulong2, ulong2, long2);
11072 long3 __ovld __cnfn select(long3, long3, long3);
11073 ulong3 __ovld __cnfn select(ulong3, ulong3, long3);
11074 long4 __ovld __cnfn select(long4, long4, long4);
11075 ulong4 __ovld __cnfn select(ulong4, ulong4, long4);
11076 long8 __ovld __cnfn select(long8, long8, long8);
11077 ulong8 __ovld __cnfn select(ulong8, ulong8, long8);
11078 long16 __ovld __cnfn select(long16, long16, long16);
11079 ulong16 __ovld __cnfn select(ulong16, ulong16, long16);
11080 
11081 char __ovld __cnfn select(char, char, uchar);
11083 char2 __ovld __cnfn select(char2, char2, uchar2);
11084 uchar2 __ovld __cnfn select(uchar2, uchar2, uchar2);
11085 char3 __ovld __cnfn select(char3, char3, uchar3);
11086 uchar3 __ovld __cnfn select(uchar3, uchar3, uchar3);
11087 char4 __ovld __cnfn select(char4, char4, uchar4);
11088 uchar4 __ovld __cnfn select(uchar4, uchar4, uchar4);
11089 char8 __ovld __cnfn select(char8, char8, uchar8);
11090 uchar8 __ovld __cnfn select(uchar8, uchar8, uchar8);
11091 char16 __ovld __cnfn select(char16, char16, uchar16);
11092 uchar16 __ovld __cnfn select(uchar16, uchar16, uchar16);
11093 
11094 short __ovld __cnfn select(short, short, ushort);
11096 short2 __ovld __cnfn select(short2, short2, ushort2);
11097 ushort2 __ovld __cnfn select(ushort2, ushort2, ushort2);
11098 short3 __ovld __cnfn select(short3, short3, ushort3);
11099 ushort3 __ovld __cnfn select(ushort3, ushort3, ushort3);
11100 short4 __ovld __cnfn select(short4, short4, ushort4);
11101 ushort4 __ovld __cnfn select(ushort4, ushort4, ushort4);
11102 short8 __ovld __cnfn select(short8, short8, ushort8);
11103 ushort8 __ovld __cnfn select(ushort8, ushort8, ushort8);
11104 short16 __ovld __cnfn select(short16, short16, ushort16);
11105 ushort16 __ovld __cnfn select(ushort16, ushort16, ushort16);
11106 
11107 int __ovld __cnfn select(int, int, uint);
11115 int8 __ovld __cnfn select(int8, int8, uint8);
11116 uint8 __ovld __cnfn select(uint8, uint8, uint8);
11117 int16 __ovld __cnfn select(int16, int16, uint16);
11118 uint16 __ovld __cnfn select(uint16, uint16, uint16);
11119 float __ovld __cnfn select(float, float, uint);
11123 float8 __ovld __cnfn select(float8, float8, uint8);
11124 float16 __ovld __cnfn select(float16, float16, uint16);
11125 
11126 long __ovld __cnfn select(long, long, ulong);
11128 long2 __ovld __cnfn select(long2, long2, ulong2);
11129 ulong2 __ovld __cnfn select(ulong2, ulong2, ulong2);
11130 long3 __ovld __cnfn select(long3, long3, ulong3);
11131 ulong3 __ovld __cnfn select(ulong3, ulong3, ulong3);
11132 long4 __ovld __cnfn select(long4, long4, ulong4);
11133 ulong4 __ovld __cnfn select(ulong4, ulong4, ulong4);
11134 long8 __ovld __cnfn select(long8, long8, ulong8);
11135 ulong8 __ovld __cnfn select(ulong8, ulong8, ulong8);
11136 long16 __ovld __cnfn select(long16, long16, ulong16);
11137 ulong16 __ovld __cnfn select(ulong16, ulong16, ulong16);
11138 
11139 #ifdef cl_khr_fp64
11140 double __ovld __cnfn select(double, double, long);
11144 double8 __ovld __cnfn select(double8, double8, long8);
11145 double16 __ovld __cnfn select(double16, double16, long16);
11146 double __ovld __cnfn select(double, double, ulong);
11150 double8 __ovld __cnfn select(double8, double8, ulong8);
11151 double16 __ovld __cnfn select(double16, double16, ulong16);
11152 #endif //cl_khr_fp64
11153 #ifdef cl_khr_fp16
11154 half __ovld __cnfn select(half, half, short);
11155 half2 __ovld __cnfn select(half2, half2, short2);
11156 half3 __ovld __cnfn select(half3, half3, short3);
11157 half4 __ovld __cnfn select(half4, half4, short4);
11158 half8 __ovld __cnfn select(half8, half8, short8);
11159 half16 __ovld __cnfn select(half16, half16, short16);
11160 half __ovld __cnfn select(half, half, ushort);
11161 half2 __ovld __cnfn select(half2, half2, ushort2);
11162 half3 __ovld __cnfn select(half3, half3, ushort3);
11163 half4 __ovld __cnfn select(half4, half4, ushort4);
11164 half8 __ovld __cnfn select(half8, half8, ushort8);
11165 half16 __ovld __cnfn select(half16, half16, ushort16);
11166 #endif //cl_khr_fp16
11167 
11168 // OpenCL v1.1 s6.11.7, v1.2 s6.12.7, v2.0 s6.13.7 - Vector Data Load and Store Functions
11169 // OpenCL extensions v1.1 s9.6.6, v1.2 s9.5.6, v2.0 s9.4.6 - Vector Data Load and Store Functions for Half Type
11170 /**
11171  * Use generic type gentype to indicate the built-in data types
11172  * char, uchar, short, ushort, int, uint, long, ulong, float,
11173  * double or half.
11174  *
11175  * vloadn return sizeof (gentypen) bytes of data read from address (p + (offset * n)).
11176  *
11177  * vstoren write sizeof (gentypen) bytes given by data to address (p + (offset * n)).
11178  *
11179  * The address computed as (p + (offset * n)) must be
11180  * 8-bit aligned if gentype is char, uchar;
11181  * 16-bit aligned if gentype is short, ushort, half;
11182  * 32-bit aligned if gentype is int, uint, float;
11183  * 64-bit aligned if gentype is long, ulong, double.
11184  */
11185 
11186 char2 __ovld __purefn vload2(size_t, const __constant char *);
11187 uchar2 __ovld __purefn vload2(size_t, const __constant uchar *);
11188 short2 __ovld __purefn vload2(size_t, const __constant short *);
11189 ushort2 __ovld __purefn vload2(size_t, const __constant ushort *);
11190 int2 __ovld __purefn vload2(size_t, const __constant int *);
11191 uint2 __ovld __purefn vload2(size_t, const __constant uint *);
11192 long2 __ovld __purefn vload2(size_t, const __constant long *);
11193 ulong2 __ovld __purefn vload2(size_t, const __constant ulong *);
11194 float2 __ovld __purefn vload2(size_t, const __constant float *);
11195 char3 __ovld __purefn vload3(size_t, const __constant char *);
11196 uchar3 __ovld __purefn vload3(size_t, const __constant uchar *);
11197 short3 __ovld __purefn vload3(size_t, const __constant short *);
11198 ushort3 __ovld __purefn vload3(size_t, const __constant ushort *);
11199 int3 __ovld __purefn vload3(size_t, const __constant int *);
11200 uint3 __ovld __purefn vload3(size_t, const __constant uint *);
11201 long3 __ovld __purefn vload3(size_t, const __constant long *);
11202 ulong3 __ovld __purefn vload3(size_t, const __constant ulong *);
11203 float3 __ovld __purefn vload3(size_t, const __constant float *);
11204 char4 __ovld __purefn vload4(size_t, const __constant char *);
11205 uchar4 __ovld __purefn vload4(size_t, const __constant uchar *);
11206 short4 __ovld __purefn vload4(size_t, const __constant short *);
11207 ushort4 __ovld __purefn vload4(size_t, const __constant ushort *);
11208 int4 __ovld __purefn vload4(size_t, const __constant int *);
11209 uint4 __ovld __purefn vload4(size_t, const __constant uint *);
11210 long4 __ovld __purefn vload4(size_t, const __constant long *);
11211 ulong4 __ovld __purefn vload4(size_t, const __constant ulong *);
11212 float4 __ovld __purefn vload4(size_t, const __constant float *);
11213 char8 __ovld __purefn vload8(size_t, const __constant char *);
11214 uchar8 __ovld __purefn vload8(size_t, const __constant uchar *);
11215 short8 __ovld __purefn vload8(size_t, const __constant short *);
11216 ushort8 __ovld __purefn vload8(size_t, const __constant ushort *);
11217 int8 __ovld __purefn vload8(size_t, const __constant int *);
11218 uint8 __ovld __purefn vload8(size_t, const __constant uint *);
11219 long8 __ovld __purefn vload8(size_t, const __constant long *);
11220 ulong8 __ovld __purefn vload8(size_t, const __constant ulong *);
11221 float8 __ovld __purefn vload8(size_t, const __constant float *);
11222 char16 __ovld __purefn vload16(size_t, const __constant char *);
11223 uchar16 __ovld __purefn vload16(size_t, const __constant uchar *);
11224 short16 __ovld __purefn vload16(size_t, const __constant short *);
11225 ushort16 __ovld __purefn vload16(size_t, const __constant ushort *);
11226 int16 __ovld __purefn vload16(size_t, const __constant int *);
11227 uint16 __ovld __purefn vload16(size_t, const __constant uint *);
11228 long16 __ovld __purefn vload16(size_t, const __constant long *);
11229 ulong16 __ovld __purefn vload16(size_t, const __constant ulong *);
11230 float16 __ovld __purefn vload16(size_t, const __constant float *);
11231 #ifdef cl_khr_fp64
11232 double2 __ovld __purefn vload2(size_t, const __constant double *);
11233 double3 __ovld __purefn vload3(size_t, const __constant double *);
11234 double4 __ovld __purefn vload4(size_t, const __constant double *);
11235 double8 __ovld __purefn vload8(size_t, const __constant double *);
11236 double16 __ovld __purefn vload16(size_t, const __constant double *);
11237 #endif //cl_khr_fp64
11238 
11239 #ifdef cl_khr_fp16
11240 half2 __ovld __purefn vload2(size_t, const __constant half *);
11241 half3 __ovld __purefn vload3(size_t, const __constant half *);
11242 half4 __ovld __purefn vload4(size_t, const __constant half *);
11243 half8 __ovld __purefn vload8(size_t, const __constant half *);
11244 half16 __ovld __purefn vload16(size_t, const __constant half *);
11245 #endif //cl_khr_fp16
11246 
11247 #if defined(__opencl_c_generic_address_space)
11248 char2 __ovld __purefn vload2(size_t, const char *);
11249 uchar2 __ovld __purefn vload2(size_t, const uchar *);
11250 short2 __ovld __purefn vload2(size_t, const short *);
11251 ushort2 __ovld __purefn vload2(size_t, const ushort *);
11252 int2 __ovld __purefn vload2(size_t, const int *);
11253 uint2 __ovld __purefn vload2(size_t, const uint *);
11254 long2 __ovld __purefn vload2(size_t, const long *);
11255 ulong2 __ovld __purefn vload2(size_t, const ulong *);
11256 float2 __ovld __purefn vload2(size_t, const float *);
11257 char3 __ovld __purefn vload3(size_t, const char *);
11258 uchar3 __ovld __purefn vload3(size_t, const uchar *);
11259 short3 __ovld __purefn vload3(size_t, const short *);
11260 ushort3 __ovld __purefn vload3(size_t, const ushort *);
11261 int3 __ovld __purefn vload3(size_t, const int *);
11262 uint3 __ovld __purefn vload3(size_t, const uint *);
11263 long3 __ovld __purefn vload3(size_t, const long *);
11264 ulong3 __ovld __purefn vload3(size_t, const ulong *);
11265 float3 __ovld __purefn vload3(size_t, const float *);
11266 char4 __ovld __purefn vload4(size_t, const char *);
11267 uchar4 __ovld __purefn vload4(size_t, const uchar *);
11268 short4 __ovld __purefn vload4(size_t, const short *);
11269 ushort4 __ovld __purefn vload4(size_t, const ushort *);
11270 int4 __ovld __purefn vload4(size_t, const int *);
11271 uint4 __ovld __purefn vload4(size_t, const uint *);
11272 long4 __ovld __purefn vload4(size_t, const long *);
11273 ulong4 __ovld __purefn vload4(size_t, const ulong *);
11274 float4 __ovld __purefn vload4(size_t, const float *);
11275 char8 __ovld __purefn vload8(size_t, const char *);
11276 uchar8 __ovld __purefn vload8(size_t, const uchar *);
11277 short8 __ovld __purefn vload8(size_t, const short *);
11278 ushort8 __ovld __purefn vload8(size_t, const ushort *);
11279 int8 __ovld __purefn vload8(size_t, const int *);
11280 uint8 __ovld __purefn vload8(size_t, const uint *);
11281 long8 __ovld __purefn vload8(size_t, const long *);
11282 ulong8 __ovld __purefn vload8(size_t, const ulong *);
11283 float8 __ovld __purefn vload8(size_t, const float *);
11284 char16 __ovld __purefn vload16(size_t, const char *);
11285 uchar16 __ovld __purefn vload16(size_t, const uchar *);
11286 short16 __ovld __purefn vload16(size_t, const short *);
11287 ushort16 __ovld __purefn vload16(size_t, const ushort *);
11288 int16 __ovld __purefn vload16(size_t, const int *);
11289 uint16 __ovld __purefn vload16(size_t, const uint *);
11290 long16 __ovld __purefn vload16(size_t, const long *);
11291 ulong16 __ovld __purefn vload16(size_t, const ulong *);
11292 float16 __ovld __purefn vload16(size_t, const float *);
11293 
11294 #ifdef cl_khr_fp64
11295 double2 __ovld __purefn vload2(size_t, const double *);
11296 double3 __ovld __purefn vload3(size_t, const double *);
11297 double4 __ovld __purefn vload4(size_t, const double *);
11298 double8 __ovld __purefn vload8(size_t, const double *);
11299 double16 __ovld __purefn vload16(size_t, const double *);
11300 #endif //cl_khr_fp64
11301 
11302 #ifdef cl_khr_fp16
11303 half2 __ovld __purefn vload2(size_t, const half *);
11304 half3 __ovld __purefn vload3(size_t, const half *);
11305 half4 __ovld __purefn vload4(size_t, const half *);
11306 half8 __ovld __purefn vload8(size_t, const half *);
11307 half16 __ovld __purefn vload16(size_t, const half *);
11308 #endif //cl_khr_fp16
11309 #endif //defined(__opencl_c_generic_address_space)
11310 
11311 #if defined(__opencl_c_named_address_space_builtins)
11312 char2 __ovld __purefn vload2(size_t, const __global char *);
11313 uchar2 __ovld __purefn vload2(size_t, const __global uchar *);
11314 short2 __ovld __purefn vload2(size_t, const __global short *);
11315 ushort2 __ovld __purefn vload2(size_t, const __global ushort *);
11316 int2 __ovld __purefn vload2(size_t, const __global int *);
11317 uint2 __ovld __purefn vload2(size_t, const __global uint *);
11318 long2 __ovld __purefn vload2(size_t, const __global long *);
11319 ulong2 __ovld __purefn vload2(size_t, const __global ulong *);
11320 float2 __ovld __purefn vload2(size_t, const __global float *);
11321 char3 __ovld __purefn vload3(size_t, const __global char *);
11322 uchar3 __ovld __purefn vload3(size_t, const __global uchar *);
11323 short3 __ovld __purefn vload3(size_t, const __global short *);
11324 ushort3 __ovld __purefn vload3(size_t, const __global ushort *);
11325 int3 __ovld __purefn vload3(size_t, const __global int *);
11326 uint3 __ovld __purefn vload3(size_t, const __global uint *);
11327 long3 __ovld __purefn vload3(size_t, const __global long *);
11328 ulong3 __ovld __purefn vload3(size_t, const __global ulong *);
11329 float3 __ovld __purefn vload3(size_t, const __global float *);
11330 char4 __ovld __purefn vload4(size_t, const __global char *);
11331 uchar4 __ovld __purefn vload4(size_t, const __global uchar *);
11332 short4 __ovld __purefn vload4(size_t, const __global short *);
11333 ushort4 __ovld __purefn vload4(size_t, const __global ushort *);
11334 int4 __ovld __purefn vload4(size_t, const __global int *);
11335 uint4 __ovld __purefn vload4(size_t, const __global uint *);
11336 long4 __ovld __purefn vload4(size_t, const __global long *);
11337 ulong4 __ovld __purefn vload4(size_t, const __global ulong *);
11338 float4 __ovld __purefn vload4(size_t, const __global float *);
11339 char8 __ovld __purefn vload8(size_t, const __global char *);
11340 uchar8 __ovld __purefn vload8(size_t, const __global uchar *);
11341 short8 __ovld __purefn vload8(size_t, const __global short *);
11342 ushort8 __ovld __purefn vload8(size_t, const __global ushort *);
11343 int8 __ovld __purefn vload8(size_t, const __global int *);
11344 uint8 __ovld __purefn vload8(size_t, const __global uint *);
11345 long8 __ovld __purefn vload8(size_t, const __global long *);
11346 ulong8 __ovld __purefn vload8(size_t, const __global ulong *);
11347 float8 __ovld __purefn vload8(size_t, const __global float *);
11348 char16 __ovld __purefn vload16(size_t, const __global char *);
11349 uchar16 __ovld __purefn vload16(size_t, const __global uchar *);
11350 short16 __ovld __purefn vload16(size_t, const __global short *);
11351 ushort16 __ovld __purefn vload16(size_t, const __global ushort *);
11352 int16 __ovld __purefn vload16(size_t, const __global int *);
11353 uint16 __ovld __purefn vload16(size_t, const __global uint *);
11354 long16 __ovld __purefn vload16(size_t, const __global long *);
11355 ulong16 __ovld __purefn vload16(size_t, const __global ulong *);
11356 float16 __ovld __purefn vload16(size_t, const __global float *);
11357 char2 __ovld __purefn vload2(size_t, const __local char *);
11358 uchar2 __ovld __purefn vload2(size_t, const __local uchar *);
11359 short2 __ovld __purefn vload2(size_t, const __local short *);
11360 ushort2 __ovld __purefn vload2(size_t, const __local ushort *);
11361 int2 __ovld __purefn vload2(size_t, const __local int *);
11362 uint2 __ovld __purefn vload2(size_t, const __local uint *);
11363 long2 __ovld __purefn vload2(size_t, const __local long *);
11364 ulong2 __ovld __purefn vload2(size_t, const __local ulong *);
11365 float2 __ovld __purefn vload2(size_t, const __local float *);
11366 char3 __ovld __purefn vload3(size_t, const __local char *);
11367 uchar3 __ovld __purefn vload3(size_t, const __local uchar *);
11368 short3 __ovld __purefn vload3(size_t, const __local short *);
11369 ushort3 __ovld __purefn vload3(size_t, const __local ushort *);
11370 int3 __ovld __purefn vload3(size_t, const __local int *);
11371 uint3 __ovld __purefn vload3(size_t, const __local uint *);
11372 long3 __ovld __purefn vload3(size_t, const __local long *);
11373 ulong3 __ovld __purefn vload3(size_t, const __local ulong *);
11374 float3 __ovld __purefn vload3(size_t, const __local float *);
11375 char4 __ovld __purefn vload4(size_t, const __local char *);
11376 uchar4 __ovld __purefn vload4(size_t, const __local uchar *);
11377 short4 __ovld __purefn vload4(size_t, const __local short *);
11378 ushort4 __ovld __purefn vload4(size_t, const __local ushort *);
11379 int4 __ovld __purefn vload4(size_t, const __local int *);
11380 uint4 __ovld __purefn vload4(size_t, const __local uint *);
11381 long4 __ovld __purefn vload4(size_t, const __local long *);
11382 ulong4 __ovld __purefn vload4(size_t, const __local ulong *);
11383 float4 __ovld __purefn vload4(size_t, const __local float *);
11384 char8 __ovld __purefn vload8(size_t, const __local char *);
11385 uchar8 __ovld __purefn vload8(size_t, const __local uchar *);
11386 short8 __ovld __purefn vload8(size_t, const __local short *);
11387 ushort8 __ovld __purefn vload8(size_t, const __local ushort *);
11388 int8 __ovld __purefn vload8(size_t, const __local int *);
11389 uint8 __ovld __purefn vload8(size_t, const __local uint *);
11390 long8 __ovld __purefn vload8(size_t, const __local long *);
11391 ulong8 __ovld __purefn vload8(size_t, const __local ulong *);
11392 float8 __ovld __purefn vload8(size_t, const __local float *);
11393 char16 __ovld __purefn vload16(size_t, const __local char *);
11394 uchar16 __ovld __purefn vload16(size_t, const __local uchar *);
11395 short16 __ovld __purefn vload16(size_t, const __local short *);
11396 ushort16 __ovld __purefn vload16(size_t, const __local ushort *);
11397 int16 __ovld __purefn vload16(size_t, const __local int *);
11398 uint16 __ovld __purefn vload16(size_t, const __local uint *);
11399 long16 __ovld __purefn vload16(size_t, const __local long *);
11400 ulong16 __ovld __purefn vload16(size_t, const __local ulong *);
11401 float16 __ovld __purefn vload16(size_t, const __local float *);
11402 char2 __ovld __purefn vload2(size_t, const __private char *);
11403 uchar2 __ovld __purefn vload2(size_t, const __private uchar *);
11404 short2 __ovld __purefn vload2(size_t, const __private short *);
11405 ushort2 __ovld __purefn vload2(size_t, const __private ushort *);
11406 int2 __ovld __purefn vload2(size_t, const __private int *);
11407 uint2 __ovld __purefn vload2(size_t, const __private uint *);
11408 long2 __ovld __purefn vload2(size_t, const __private long *);
11409 ulong2 __ovld __purefn vload2(size_t, const __private ulong *);
11410 float2 __ovld __purefn vload2(size_t, const __private float *);
11411 char3 __ovld __purefn vload3(size_t, const __private char *);
11412 uchar3 __ovld __purefn vload3(size_t, const __private uchar *);
11413 short3 __ovld __purefn vload3(size_t, const __private short *);
11414 ushort3 __ovld __purefn vload3(size_t, const __private ushort *);
11415 int3 __ovld __purefn vload3(size_t, const __private int *);
11416 uint3 __ovld __purefn vload3(size_t, const __private uint *);
11417 long3 __ovld __purefn vload3(size_t, const __private long *);
11418 ulong3 __ovld __purefn vload3(size_t, const __private ulong *);
11419 float3 __ovld __purefn vload3(size_t, const __private float *);
11420 char4 __ovld __purefn vload4(size_t, const __private char *);
11421 uchar4 __ovld __purefn vload4(size_t, const __private uchar *);
11422 short4 __ovld __purefn vload4(size_t, const __private short *);
11423 ushort4 __ovld __purefn vload4(size_t, const __private ushort *);
11424 int4 __ovld __purefn vload4(size_t, const __private int *);
11425 uint4 __ovld __purefn vload4(size_t, const __private uint *);
11426 long4 __ovld __purefn vload4(size_t, const __private long *);
11427 ulong4 __ovld __purefn vload4(size_t, const __private ulong *);
11428 float4 __ovld __purefn vload4(size_t, const __private float *);
11429 char8 __ovld __purefn vload8(size_t, const __private char *);
11430 uchar8 __ovld __purefn vload8(size_t, const __private uchar *);
11431 short8 __ovld __purefn vload8(size_t, const __private short *);
11432 ushort8 __ovld __purefn vload8(size_t, const __private ushort *);
11433 int8 __ovld __purefn vload8(size_t, const __private int *);
11434 uint8 __ovld __purefn vload8(size_t, const __private uint *);
11435 long8 __ovld __purefn vload8(size_t, const __private long *);
11436 ulong8 __ovld __purefn vload8(size_t, const __private ulong *);
11437 float8 __ovld __purefn vload8(size_t, const __private float *);
11438 char16 __ovld __purefn vload16(size_t, const __private char *);
11439 uchar16 __ovld __purefn vload16(size_t, const __private uchar *);
11440 short16 __ovld __purefn vload16(size_t, const __private short *);
11441 ushort16 __ovld __purefn vload16(size_t, const __private ushort *);
11442 int16 __ovld __purefn vload16(size_t, const __private int *);
11443 uint16 __ovld __purefn vload16(size_t, const __private uint *);
11444 long16 __ovld __purefn vload16(size_t, const __private long *);
11445 ulong16 __ovld __purefn vload16(size_t, const __private ulong *);
11446 float16 __ovld __purefn vload16(size_t, const __private float *);
11447 
11448 #ifdef cl_khr_fp64
11449 double2 __ovld __purefn vload2(size_t, const __global double *);
11450 double3 __ovld __purefn vload3(size_t, const __global double *);
11451 double4 __ovld __purefn vload4(size_t, const __global double *);
11452 double8 __ovld __purefn vload8(size_t, const __global double *);
11453 double16 __ovld __purefn vload16(size_t, const __global double *);
11454 double2 __ovld __purefn vload2(size_t, const __local double *);
11455 double3 __ovld __purefn vload3(size_t, const __local double *);
11456 double4 __ovld __purefn vload4(size_t, const __local double *);
11457 double8 __ovld __purefn vload8(size_t, const __local double *);
11458 double16 __ovld __purefn vload16(size_t, const __local double *);
11459 double2 __ovld __purefn vload2(size_t, const __private double *);
11460 double3 __ovld __purefn vload3(size_t, const __private double *);
11461 double4 __ovld __purefn vload4(size_t, const __private double *);
11462 double8 __ovld __purefn vload8(size_t, const __private double *);
11463 double16 __ovld __purefn vload16(size_t, const __private double *);
11464 #endif //cl_khr_fp64
11465 
11466 #ifdef cl_khr_fp16
11467 half2 __ovld __purefn vload2(size_t, const __global half *);
11468 half3 __ovld __purefn vload3(size_t, const __global half *);
11469 half4 __ovld __purefn vload4(size_t, const __global half *);
11470 half8 __ovld __purefn vload8(size_t, const __global half *);
11471 half16 __ovld __purefn vload16(size_t, const __global half *);
11472 half2 __ovld __purefn vload2(size_t, const __local half *);
11473 half3 __ovld __purefn vload3(size_t, const __local half *);
11474 half4 __ovld __purefn vload4(size_t, const __local half *);
11475 half8 __ovld __purefn vload8(size_t, const __local half *);
11476 half16 __ovld __purefn vload16(size_t, const __local half *);
11477 half2 __ovld __purefn vload2(size_t, const __private half *);
11478 half3 __ovld __purefn vload3(size_t, const __private half *);
11479 half4 __ovld __purefn vload4(size_t, const __private half *);
11480 half8 __ovld __purefn vload8(size_t, const __private half *);
11481 half16 __ovld __purefn vload16(size_t, const __private half *);
11482 #endif //cl_khr_fp16
11483 #endif //defined(__opencl_c_named_address_space_builtins)
11484 
11485 #if defined(__opencl_c_generic_address_space)
11486 void __ovld vstore2(char2, size_t, char *);
11487 void __ovld vstore2(uchar2, size_t, uchar *);
11488 void __ovld vstore2(short2, size_t, short *);
11489 void __ovld vstore2(ushort2, size_t, ushort *);
11490 void __ovld vstore2(int2, size_t, int *);
11491 void __ovld vstore2(uint2, size_t, uint *);
11492 void __ovld vstore2(long2, size_t, long *);
11493 void __ovld vstore2(ulong2, size_t, ulong *);
11494 void __ovld vstore2(float2, size_t, float *);
11495 void __ovld vstore3(char3, size_t, char *);
11496 void __ovld vstore3(uchar3, size_t, uchar *);
11497 void __ovld vstore3(short3, size_t, short *);
11498 void __ovld vstore3(ushort3, size_t, ushort *);
11499 void __ovld vstore3(int3, size_t, int *);
11500 void __ovld vstore3(uint3, size_t, uint *);
11501 void __ovld vstore3(long3, size_t, long *);
11502 void __ovld vstore3(ulong3, size_t, ulong *);
11503 void __ovld vstore3(float3, size_t, float *);
11504 void __ovld vstore4(char4, size_t, char *);
11505 void __ovld vstore4(uchar4, size_t, uchar *);
11506 void __ovld vstore4(short4, size_t, short *);
11507 void __ovld vstore4(ushort4, size_t, ushort *);
11508 void __ovld vstore4(int4, size_t, int *);
11509 void __ovld vstore4(uint4, size_t, uint *);
11510 void __ovld vstore4(long4, size_t, long *);
11511 void __ovld vstore4(ulong4, size_t, ulong *);
11512 void __ovld vstore4(float4, size_t, float *);
11513 void __ovld vstore8(char8, size_t, char *);
11514 void __ovld vstore8(uchar8, size_t, uchar *);
11515 void __ovld vstore8(short8, size_t, short *);
11516 void __ovld vstore8(ushort8, size_t, ushort *);
11517 void __ovld vstore8(int8, size_t, int *);
11518 void __ovld vstore8(uint8, size_t, uint *);
11519 void __ovld vstore8(long8, size_t, long *);
11520 void __ovld vstore8(ulong8, size_t, ulong *);
11521 void __ovld vstore8(float8, size_t, float *);
11522 void __ovld vstore16(char16, size_t, char *);
11523 void __ovld vstore16(uchar16, size_t, uchar *);
11524 void __ovld vstore16(short16, size_t, short *);
11525 void __ovld vstore16(ushort16, size_t, ushort *);
11526 void __ovld vstore16(int16, size_t, int *);
11527 void __ovld vstore16(uint16, size_t, uint *);
11528 void __ovld vstore16(long16, size_t, long *);
11529 void __ovld vstore16(ulong16, size_t, ulong *);
11530 void __ovld vstore16(float16, size_t, float *);
11531 #ifdef cl_khr_fp64
11532 void __ovld vstore2(double2, size_t, double *);
11533 void __ovld vstore3(double3, size_t, double *);
11534 void __ovld vstore4(double4, size_t, double *);
11535 void __ovld vstore8(double8, size_t, double *);
11536 void __ovld vstore16(double16, size_t, double *);
11537 #endif //cl_khr_fp64
11538 #ifdef cl_khr_fp16
11539 void __ovld vstore2(half2, size_t, half *);
11540 void __ovld vstore3(half3, size_t, half *);
11541 void __ovld vstore4(half4, size_t, half *);
11542 void __ovld vstore8(half8, size_t, half *);
11543 void __ovld vstore16(half16, size_t, half *);
11544 #endif //cl_khr_fp16
11545 #endif //defined(__opencl_c_generic_address_space)
11546 
11547 #if defined(__opencl_c_named_address_space_builtins)
11548 void __ovld vstore2(char2, size_t, __global char *);
11549 void __ovld vstore2(uchar2, size_t, __global uchar *);
11550 void __ovld vstore2(short2, size_t, __global short *);
11551 void __ovld vstore2(ushort2, size_t, __global ushort *);
11552 void __ovld vstore2(int2, size_t, __global int *);
11553 void __ovld vstore2(uint2, size_t, __global uint *);
11554 void __ovld vstore2(long2, size_t, __global long *);
11555 void __ovld vstore2(ulong2, size_t, __global ulong *);
11556 void __ovld vstore2(float2, size_t, __global float *);
11557 void __ovld vstore3(char3, size_t, __global char *);
11558 void __ovld vstore3(uchar3, size_t, __global uchar *);
11559 void __ovld vstore3(short3, size_t, __global short *);
11560 void __ovld vstore3(ushort3, size_t, __global ushort *);
11561 void __ovld vstore3(int3, size_t, __global int *);
11562 void __ovld vstore3(uint3, size_t, __global uint *);
11563 void __ovld vstore3(long3, size_t, __global long *);
11564 void __ovld vstore3(ulong3, size_t, __global ulong *);
11565 void __ovld vstore3(float3, size_t, __global float *);
11566 void __ovld vstore4(char4, size_t, __global char *);
11567 void __ovld vstore4(uchar4, size_t, __global uchar *);
11568 void __ovld vstore4(short4, size_t, __global short *);
11569 void __ovld vstore4(ushort4, size_t, __global ushort *);
11570 void __ovld vstore4(int4, size_t, __global int *);
11571 void __ovld vstore4(uint4, size_t, __global uint *);
11572 void __ovld vstore4(long4, size_t, __global long *);
11573 void __ovld vstore4(ulong4, size_t, __global ulong *);
11574 void __ovld vstore4(float4, size_t, __global float *);
11575 void __ovld vstore8(char8, size_t, __global char *);
11576 void __ovld vstore8(uchar8, size_t, __global uchar *);
11577 void __ovld vstore8(short8, size_t, __global short *);
11578 void __ovld vstore8(ushort8, size_t, __global ushort *);
11579 void __ovld vstore8(int8, size_t, __global int *);
11580 void __ovld vstore8(uint8, size_t, __global uint *);
11581 void __ovld vstore8(long8, size_t, __global long *);
11582 void __ovld vstore8(ulong8, size_t, __global ulong *);
11583 void __ovld vstore8(float8, size_t, __global float *);
11584 void __ovld vstore16(char16, size_t, __global char *);
11585 void __ovld vstore16(uchar16, size_t, __global uchar *);
11586 void __ovld vstore16(short16, size_t, __global short *);
11587 void __ovld vstore16(ushort16, size_t, __global ushort *);
11588 void __ovld vstore16(int16, size_t, __global int *);
11589 void __ovld vstore16(uint16, size_t, __global uint *);
11590 void __ovld vstore16(long16, size_t, __global long *);
11591 void __ovld vstore16(ulong16, size_t, __global ulong *);
11592 void __ovld vstore16(float16, size_t, __global float *);
11593 void __ovld vstore2(char2, size_t, __local char *);
11594 void __ovld vstore2(uchar2, size_t, __local uchar *);
11595 void __ovld vstore2(short2, size_t, __local short *);
11596 void __ovld vstore2(ushort2, size_t, __local ushort *);
11597 void __ovld vstore2(int2, size_t, __local int *);
11598 void __ovld vstore2(uint2, size_t, __local uint *);
11599 void __ovld vstore2(long2, size_t, __local long *);
11600 void __ovld vstore2(ulong2, size_t, __local ulong *);
11601 void __ovld vstore2(float2, size_t, __local float *);
11602 void __ovld vstore3(char3, size_t, __local char *);
11603 void __ovld vstore3(uchar3, size_t, __local uchar *);
11604 void __ovld vstore3(short3, size_t, __local short *);
11605 void __ovld vstore3(ushort3, size_t, __local ushort *);
11606 void __ovld vstore3(int3, size_t, __local int *);
11607 void __ovld vstore3(uint3, size_t, __local uint *);
11608 void __ovld vstore3(long3, size_t, __local long *);
11609 void __ovld vstore3(ulong3, size_t, __local ulong *);
11610 void __ovld vstore3(float3, size_t, __local float *);
11611 void __ovld vstore4(char4, size_t, __local char *);
11612 void __ovld vstore4(uchar4, size_t, __local uchar *);
11613 void __ovld vstore4(short4, size_t, __local short *);
11614 void __ovld vstore4(ushort4, size_t, __local ushort *);
11615 void __ovld vstore4(int4, size_t, __local int *);
11616 void __ovld vstore4(uint4, size_t, __local uint *);
11617 void __ovld vstore4(long4, size_t, __local long *);
11618 void __ovld vstore4(ulong4, size_t, __local ulong *);
11619 void __ovld vstore4(float4, size_t, __local float *);
11620 void __ovld vstore8(char8, size_t, __local char *);
11621 void __ovld vstore8(uchar8, size_t, __local uchar *);
11622 void __ovld vstore8(short8, size_t, __local short *);
11623 void __ovld vstore8(ushort8, size_t, __local ushort *);
11624 void __ovld vstore8(int8, size_t, __local int *);
11625 void __ovld vstore8(uint8, size_t, __local uint *);
11626 void __ovld vstore8(long8, size_t, __local long *);
11627 void __ovld vstore8(ulong8, size_t, __local ulong *);
11628 void __ovld vstore8(float8, size_t, __local float *);
11629 void __ovld vstore16(char16, size_t, __local char *);
11630 void __ovld vstore16(uchar16, size_t, __local uchar *);
11631 void __ovld vstore16(short16, size_t, __local short *);
11632 void __ovld vstore16(ushort16, size_t, __local ushort *);
11633 void __ovld vstore16(int16, size_t, __local int *);
11634 void __ovld vstore16(uint16, size_t, __local uint *);
11635 void __ovld vstore16(long16, size_t, __local long *);
11636 void __ovld vstore16(ulong16, size_t, __local ulong *);
11637 void __ovld vstore16(float16, size_t, __local float *);
11638 void __ovld vstore2(char2, size_t, __private char *);
11639 void __ovld vstore2(uchar2, size_t, __private uchar *);
11640 void __ovld vstore2(short2, size_t, __private short *);
11641 void __ovld vstore2(ushort2, size_t, __private ushort *);
11642 void __ovld vstore2(int2, size_t, __private int *);
11643 void __ovld vstore2(uint2, size_t, __private uint *);
11644 void __ovld vstore2(long2, size_t, __private long *);
11645 void __ovld vstore2(ulong2, size_t, __private ulong *);
11646 void __ovld vstore2(float2, size_t, __private float *);
11647 void __ovld vstore3(char3, size_t, __private char *);
11648 void __ovld vstore3(uchar3, size_t, __private uchar *);
11649 void __ovld vstore3(short3, size_t, __private short *);
11650 void __ovld vstore3(ushort3, size_t, __private ushort *);
11651 void __ovld vstore3(int3, size_t, __private int *);
11652 void __ovld vstore3(uint3, size_t, __private uint *);
11653 void __ovld vstore3(long3, size_t, __private long *);
11654 void __ovld vstore3(ulong3, size_t, __private ulong *);
11655 void __ovld vstore3(float3, size_t, __private float *);
11656 void __ovld vstore4(char4, size_t, __private char *);
11657 void __ovld vstore4(uchar4, size_t, __private uchar *);
11658 void __ovld vstore4(short4, size_t, __private short *);
11659 void __ovld vstore4(ushort4, size_t, __private ushort *);
11660 void __ovld vstore4(int4, size_t, __private int *);
11661 void __ovld vstore4(uint4, size_t, __private uint *);
11662 void __ovld vstore4(long4, size_t, __private long *);
11663 void __ovld vstore4(ulong4, size_t, __private ulong *);
11664 void __ovld vstore4(float4, size_t, __private float *);
11665 void __ovld vstore8(char8, size_t, __private char *);
11666 void __ovld vstore8(uchar8, size_t, __private uchar *);
11667 void __ovld vstore8(short8, size_t, __private short *);
11668 void __ovld vstore8(ushort8, size_t, __private ushort *);
11669 void __ovld vstore8(int8, size_t, __private int *);
11670 void __ovld vstore8(uint8, size_t, __private uint *);
11671 void __ovld vstore8(long8, size_t, __private long *);
11672 void __ovld vstore8(ulong8, size_t, __private ulong *);
11673 void __ovld vstore8(float8, size_t, __private float *);
11674 void __ovld vstore16(char16, size_t, __private char *);
11675 void __ovld vstore16(uchar16, size_t, __private uchar *);
11676 void __ovld vstore16(short16, size_t, __private short *);
11677 void __ovld vstore16(ushort16, size_t, __private ushort *);
11678 void __ovld vstore16(int16, size_t, __private int *);
11679 void __ovld vstore16(uint16, size_t, __private uint *);
11680 void __ovld vstore16(long16, size_t, __private long *);
11681 void __ovld vstore16(ulong16, size_t, __private ulong *);
11682 void __ovld vstore16(float16, size_t, __private float *);
11683 #ifdef cl_khr_fp64
11684 void __ovld vstore2(double2, size_t, __global double *);
11685 void __ovld vstore3(double3, size_t, __global double *);
11686 void __ovld vstore4(double4, size_t, __global double *);
11687 void __ovld vstore8(double8, size_t, __global double *);
11688 void __ovld vstore16(double16, size_t, __global double *);
11689 void __ovld vstore2(double2, size_t, __local double *);
11690 void __ovld vstore3(double3, size_t, __local double *);
11691 void __ovld vstore4(double4, size_t, __local double *);
11692 void __ovld vstore8(double8, size_t, __local double *);
11693 void __ovld vstore16(double16, size_t, __local double *);
11694 void __ovld vstore2(double2, size_t, __private double *);
11695 void __ovld vstore3(double3, size_t, __private double *);
11696 void __ovld vstore4(double4, size_t, __private double *);
11697 void __ovld vstore8(double8, size_t, __private double *);
11698 void __ovld vstore16(double16, size_t, __private double *);
11699 #endif //cl_khr_fp64
11700 #ifdef cl_khr_fp16
11701 void __ovld vstore2(half2, size_t, __global half *);
11702 void __ovld vstore3(half3, size_t, __global half *);
11703 void __ovld vstore4(half4, size_t, __global half *);
11704 void __ovld vstore8(half8, size_t, __global half *);
11705 void __ovld vstore16(half16, size_t, __global half *);
11706 void __ovld vstore2(half2, size_t, __local half *);
11707 void __ovld vstore3(half3, size_t, __local half *);
11708 void __ovld vstore4(half4, size_t, __local half *);
11709 void __ovld vstore8(half8, size_t, __local half *);
11710 void __ovld vstore16(half16, size_t, __local half *);
11711 void __ovld vstore2(half2, size_t, __private half *);
11712 void __ovld vstore3(half3, size_t, __private half *);
11713 void __ovld vstore4(half4, size_t, __private half *);
11714 void __ovld vstore8(half8, size_t, __private half *);
11715 void __ovld vstore16(half16, size_t, __private half *);
11716 #endif //cl_khr_fp16
11717 #endif //defined(__opencl_c_named_address_space_builtins)
11718 
11719 /**
11720  * Read sizeof (half) bytes of data from address
11721  * (p + offset). The data read is interpreted as a
11722  * half value. The half value is converted to a
11723  * float value and the float value is returned.
11724  * The read address computed as (p + offset)
11725  * must be 16-bit aligned.
11726  */
11727 float __ovld __purefn vload_half(size_t, const __constant half *);
11728 #if defined(__opencl_c_generic_address_space)
11729 float __ovld __purefn vload_half(size_t, const half *);
11730 #endif //defined(__opencl_c_generic_address_space)
11731 
11732 #if defined(__opencl_c_named_address_space_builtins)
11733 float __ovld __purefn vload_half(size_t, const __global half *);
11734 float __ovld __purefn vload_half(size_t, const __local half *);
11735 float __ovld __purefn vload_half(size_t, const __private half *);
11736 #endif //defined(__opencl_c_named_address_space_builtins)
11737 
11738 /**
11739  * Read sizeof (halfn) bytes of data from address
11740  * (p + (offset * n)). The data read is interpreted
11741  * as a halfn value. The halfn value read is
11742  * converted to a floatn value and the floatn
11743  * value is returned. The read address computed
11744  * as (p + (offset * n)) must be 16-bit aligned.
11745  */
11746 float2 __ovld __purefn vload_half2(size_t, const __constant half *);
11747 float3 __ovld __purefn vload_half3(size_t, const __constant half *);
11748 float4 __ovld __purefn vload_half4(size_t, const __constant half *);
11749 float8 __ovld __purefn vload_half8(size_t, const __constant half *);
11750 float16 __ovld __purefn vload_half16(size_t, const __constant half *);
11751 #if defined(__opencl_c_generic_address_space)
11752 float2 __ovld __purefn vload_half2(size_t, const half *);
11753 float3 __ovld __purefn vload_half3(size_t, const half *);
11754 float4 __ovld __purefn vload_half4(size_t, const half *);
11755 float8 __ovld __purefn vload_half8(size_t, const half *);
11756 float16 __ovld __purefn vload_half16(size_t, const half *);
11757 #endif //defined(__opencl_c_generic_address_space)
11758 
11759 #if defined(__opencl_c_named_address_space_builtins)
11760 float2 __ovld __purefn vload_half2(size_t, const __global half *);
11761 float3 __ovld __purefn vload_half3(size_t, const __global half *);
11762 float4 __ovld __purefn vload_half4(size_t, const __global half *);
11763 float8 __ovld __purefn vload_half8(size_t, const __global half *);
11764 float16 __ovld __purefn vload_half16(size_t, const __global half *);
11765 float2 __ovld __purefn vload_half2(size_t, const __local half *);
11766 float3 __ovld __purefn vload_half3(size_t, const __local half *);
11767 float4 __ovld __purefn vload_half4(size_t, const __local half *);
11768 float8 __ovld __purefn vload_half8(size_t, const __local half *);
11769 float16 __ovld __purefn vload_half16(size_t, const __local half *);
11770 float2 __ovld __purefn vload_half2(size_t, const __private half *);
11771 float3 __ovld __purefn vload_half3(size_t, const __private half *);
11772 float4 __ovld __purefn vload_half4(size_t, const __private half *);
11773 float8 __ovld __purefn vload_half8(size_t, const __private half *);
11774 float16 __ovld __purefn vload_half16(size_t, const __private half *);
11775 #endif //defined(__opencl_c_named_address_space_builtins)
11776 
11777 /**
11778  * The float value given by data is first
11779  * converted to a half value using the appropriate
11780  * rounding mode. The half value is then written
11781  * to address computed as (p + offset). The
11782  * address computed as (p + offset) must be 16-
11783  * bit aligned.
11784  * vstore_half use the current rounding mode.
11785  * The default current rounding mode is round to
11786  * nearest even.
11787  */
11788 #if defined(__opencl_c_generic_address_space)
11789 void __ovld vstore_half(float, size_t, half *);
11790 void __ovld vstore_half_rte(float, size_t, half *);
11791 void __ovld vstore_half_rtz(float, size_t, half *);
11792 void __ovld vstore_half_rtp(float, size_t, half *);
11793 void __ovld vstore_half_rtn(float, size_t, half *);
11794 #ifdef cl_khr_fp64
11795 void __ovld vstore_half(double, size_t, half *);
11796 void __ovld vstore_half_rte(double, size_t, half *);
11797 void __ovld vstore_half_rtz(double, size_t, half *);
11798 void __ovld vstore_half_rtp(double, size_t, half *);
11799 void __ovld vstore_half_rtn(double, size_t, half *);
11800 #endif //cl_khr_fp64
11801 #endif //defined(__opencl_c_generic_address_space)
11802 
11803 #if defined(__opencl_c_named_address_space_builtins)
11804 void __ovld vstore_half(float, size_t, __global half *);
11805 void __ovld vstore_half_rte(float, size_t, __global half *);
11806 void __ovld vstore_half_rtz(float, size_t, __global half *);
11807 void __ovld vstore_half_rtp(float, size_t, __global half *);
11808 void __ovld vstore_half_rtn(float, size_t, __global half *);
11809 void __ovld vstore_half(float, size_t, __local half *);
11810 void __ovld vstore_half_rte(float, size_t, __local half *);
11811 void __ovld vstore_half_rtz(float, size_t, __local half *);
11812 void __ovld vstore_half_rtp(float, size_t, __local half *);
11813 void __ovld vstore_half_rtn(float, size_t, __local half *);
11814 void __ovld vstore_half(float, size_t, __private half *);
11815 void __ovld vstore_half_rte(float, size_t, __private half *);
11816 void __ovld vstore_half_rtz(float, size_t, __private half *);
11817 void __ovld vstore_half_rtp(float, size_t, __private half *);
11818 void __ovld vstore_half_rtn(float, size_t, __private half *);
11819 #ifdef cl_khr_fp64
11820 void __ovld vstore_half(double, size_t, __global half *);
11821 void __ovld vstore_half_rte(double, size_t, __global half *);
11822 void __ovld vstore_half_rtz(double, size_t, __global half *);
11823 void __ovld vstore_half_rtp(double, size_t, __global half *);
11824 void __ovld vstore_half_rtn(double, size_t, __global half *);
11825 void __ovld vstore_half(double, size_t, __local half *);
11826 void __ovld vstore_half_rte(double, size_t, __local half *);
11827 void __ovld vstore_half_rtz(double, size_t, __local half *);
11828 void __ovld vstore_half_rtp(double, size_t, __local half *);
11829 void __ovld vstore_half_rtn(double, size_t, __local half *);
11830 void __ovld vstore_half(double, size_t, __private half *);
11831 void __ovld vstore_half_rte(double, size_t, __private half *);
11832 void __ovld vstore_half_rtz(double, size_t, __private half *);
11833 void __ovld vstore_half_rtp(double, size_t, __private half *);
11834 void __ovld vstore_half_rtn(double, size_t, __private half *);
11835 #endif //cl_khr_fp64
11836 #endif //defined(__opencl_c_named_address_space_builtins)
11837 
11838 /**
11839  * The floatn value given by data is converted to
11840  * a halfn value using the appropriate rounding
11841  * mode. The halfn value is then written to
11842  * address computed as (p + (offset * n)). The
11843  * address computed as (p + (offset * n)) must be
11844  * 16-bit aligned.
11845  * vstore_halfn uses the current rounding mode.
11846  * The default current rounding mode is round to
11847  * nearest even.
11848  */
11849 #if defined(__opencl_c_generic_address_space)
11850 void __ovld vstore_half2(float2, size_t, half *);
11851 void __ovld vstore_half3(float3, size_t, half *);
11852 void __ovld vstore_half4(float4, size_t, half *);
11853 void __ovld vstore_half8(float8, size_t, half *);
11854 void __ovld vstore_half16(float16, size_t, half *);
11855 void __ovld vstore_half2_rte(float2, size_t, half *);
11856 void __ovld vstore_half3_rte(float3, size_t, half *);
11857 void __ovld vstore_half4_rte(float4, size_t, half *);
11858 void __ovld vstore_half8_rte(float8, size_t, half *);
11859 void __ovld vstore_half16_rte(float16, size_t, half *);
11860 void __ovld vstore_half2_rtz(float2, size_t, half *);
11861 void __ovld vstore_half3_rtz(float3, size_t, half *);
11862 void __ovld vstore_half4_rtz(float4, size_t, half *);
11863 void __ovld vstore_half8_rtz(float8, size_t, half *);
11864 void __ovld vstore_half16_rtz(float16, size_t, half *);
11865 void __ovld vstore_half2_rtp(float2, size_t, half *);
11866 void __ovld vstore_half3_rtp(float3, size_t, half *);
11867 void __ovld vstore_half4_rtp(float4, size_t, half *);
11868 void __ovld vstore_half8_rtp(float8, size_t, half *);
11869 void __ovld vstore_half16_rtp(float16, size_t, half *);
11870 void __ovld vstore_half2_rtn(float2, size_t, half *);
11871 void __ovld vstore_half3_rtn(float3, size_t, half *);
11872 void __ovld vstore_half4_rtn(float4, size_t, half *);
11873 void __ovld vstore_half8_rtn(float8, size_t, half *);
11874 void __ovld vstore_half16_rtn(float16, size_t, half *);
11875 #ifdef cl_khr_fp64
11876 void __ovld vstore_half2(double2, size_t, half *);
11877 void __ovld vstore_half3(double3, size_t, half *);
11878 void __ovld vstore_half4(double4, size_t, half *);
11879 void __ovld vstore_half8(double8, size_t, half *);
11880 void __ovld vstore_half16(double16, size_t, half *);
11881 void __ovld vstore_half2_rte(double2, size_t, half *);
11882 void __ovld vstore_half3_rte(double3, size_t, half *);
11883 void __ovld vstore_half4_rte(double4, size_t, half *);
11884 void __ovld vstore_half8_rte(double8, size_t, half *);
11885 void __ovld vstore_half16_rte(double16, size_t, half *);
11886 void __ovld vstore_half2_rtz(double2, size_t, half *);
11887 void __ovld vstore_half3_rtz(double3, size_t, half *);
11888 void __ovld vstore_half4_rtz(double4, size_t, half *);
11889 void __ovld vstore_half8_rtz(double8, size_t, half *);
11890 void __ovld vstore_half16_rtz(double16, size_t, half *);
11891 void __ovld vstore_half2_rtp(double2, size_t, half *);
11892 void __ovld vstore_half3_rtp(double3, size_t, half *);
11893 void __ovld vstore_half4_rtp(double4, size_t, half *);
11894 void __ovld vstore_half8_rtp(double8, size_t, half *);
11895 void __ovld vstore_half16_rtp(double16, size_t, half *);
11896 void __ovld vstore_half2_rtn(double2, size_t, half *);
11897 void __ovld vstore_half3_rtn(double3, size_t, half *);
11898 void __ovld vstore_half4_rtn(double4, size_t, half *);
11899 void __ovld vstore_half8_rtn(double8, size_t, half *);
11900 void __ovld vstore_half16_rtn(double16, size_t, half *);
11901 #endif //cl_khr_fp64
11902 #endif //defined(__opencl_c_generic_address_space)
11903 
11904 #if defined(__opencl_c_named_address_space_builtins)
11905 void __ovld vstore_half2(float2, size_t, __global half *);
11906 void __ovld vstore_half3(float3, size_t, __global half *);
11907 void __ovld vstore_half4(float4, size_t, __global half *);
11908 void __ovld vstore_half8(float8, size_t, __global half *);
11909 void __ovld vstore_half16(float16, size_t, __global half *);
11910 void __ovld vstore_half2_rte(float2, size_t, __global half *);
11911 void __ovld vstore_half3_rte(float3, size_t, __global half *);
11912 void __ovld vstore_half4_rte(float4, size_t, __global half *);
11913 void __ovld vstore_half8_rte(float8, size_t, __global half *);
11914 void __ovld vstore_half16_rte(float16, size_t, __global half *);
11915 void __ovld vstore_half2_rtz(float2, size_t, __global half *);
11916 void __ovld vstore_half3_rtz(float3, size_t, __global half *);
11917 void __ovld vstore_half4_rtz(float4, size_t, __global half *);
11918 void __ovld vstore_half8_rtz(float8, size_t, __global half *);
11919 void __ovld vstore_half16_rtz(float16, size_t, __global half *);
11920 void __ovld vstore_half2_rtp(float2, size_t, __global half *);
11921 void __ovld vstore_half3_rtp(float3, size_t, __global half *);
11922 void __ovld vstore_half4_rtp(float4, size_t, __global half *);
11923 void __ovld vstore_half8_rtp(float8, size_t, __global half *);
11924 void __ovld vstore_half16_rtp(float16, size_t, __global half *);
11925 void __ovld vstore_half2_rtn(float2, size_t, __global half *);
11926 void __ovld vstore_half3_rtn(float3, size_t, __global half *);
11927 void __ovld vstore_half4_rtn(float4, size_t, __global half *);
11928 void __ovld vstore_half8_rtn(float8, size_t, __global half *);
11929 void __ovld vstore_half16_rtn(float16, size_t, __global half *);
11930 void __ovld vstore_half2(float2, size_t, __local half *);
11931 void __ovld vstore_half3(float3, size_t, __local half *);
11932 void __ovld vstore_half4(float4, size_t, __local half *);
11933 void __ovld vstore_half8(float8, size_t, __local half *);
11934 void __ovld vstore_half16(float16, size_t, __local half *);
11935 void __ovld vstore_half2_rte(float2, size_t, __local half *);
11936 void __ovld vstore_half3_rte(float3, size_t, __local half *);
11937 void __ovld vstore_half4_rte(float4, size_t, __local half *);
11938 void __ovld vstore_half8_rte(float8, size_t, __local half *);
11939 void __ovld vstore_half16_rte(float16, size_t, __local half *);
11940 void __ovld vstore_half2_rtz(float2, size_t, __local half *);
11941 void __ovld vstore_half3_rtz(float3, size_t, __local half *);
11942 void __ovld vstore_half4_rtz(float4, size_t, __local half *);
11943 void __ovld vstore_half8_rtz(float8, size_t, __local half *);
11944 void __ovld vstore_half16_rtz(float16, size_t, __local half *);
11945 void __ovld vstore_half2_rtp(float2, size_t, __local half *);
11946 void __ovld vstore_half3_rtp(float3, size_t, __local half *);
11947 void __ovld vstore_half4_rtp(float4, size_t, __local half *);
11948 void __ovld vstore_half8_rtp(float8, size_t, __local half *);
11949 void __ovld vstore_half16_rtp(float16, size_t, __local half *);
11950 void __ovld vstore_half2_rtn(float2, size_t, __local half *);
11951 void __ovld vstore_half3_rtn(float3, size_t, __local half *);
11952 void __ovld vstore_half4_rtn(float4, size_t, __local half *);
11953 void __ovld vstore_half8_rtn(float8, size_t, __local half *);
11954 void __ovld vstore_half16_rtn(float16, size_t, __local half *);
11955 void __ovld vstore_half2(float2, size_t, __private half *);
11956 void __ovld vstore_half3(float3, size_t, __private half *);
11957 void __ovld vstore_half4(float4, size_t, __private half *);
11958 void __ovld vstore_half8(float8, size_t, __private half *);
11959 void __ovld vstore_half16(float16, size_t, __private half *);
11960 void __ovld vstore_half2_rte(float2, size_t, __private half *);
11961 void __ovld vstore_half3_rte(float3, size_t, __private half *);
11962 void __ovld vstore_half4_rte(float4, size_t, __private half *);
11963 void __ovld vstore_half8_rte(float8, size_t, __private half *);
11964 void __ovld vstore_half16_rte(float16, size_t, __private half *);
11965 void __ovld vstore_half2_rtz(float2, size_t, __private half *);
11966 void __ovld vstore_half3_rtz(float3, size_t, __private half *);
11967 void __ovld vstore_half4_rtz(float4, size_t, __private half *);
11968 void __ovld vstore_half8_rtz(float8, size_t, __private half *);
11969 void __ovld vstore_half16_rtz(float16, size_t, __private half *);
11970 void __ovld vstore_half2_rtp(float2, size_t, __private half *);
11971 void __ovld vstore_half3_rtp(float3, size_t, __private half *);
11972 void __ovld vstore_half4_rtp(float4, size_t, __private half *);
11973 void __ovld vstore_half8_rtp(float8, size_t, __private half *);
11974 void __ovld vstore_half16_rtp(float16, size_t, __private half *);
11975 void __ovld vstore_half2_rtn(float2, size_t, __private half *);
11976 void __ovld vstore_half3_rtn(float3, size_t, __private half *);
11977 void __ovld vstore_half4_rtn(float4, size_t, __private half *);
11978 void __ovld vstore_half8_rtn(float8, size_t, __private half *);
11979 void __ovld vstore_half16_rtn(float16, size_t, __private half *);
11980 #ifdef cl_khr_fp64
11981 void __ovld vstore_half2(double2, size_t, __global half *);
11982 void __ovld vstore_half3(double3, size_t, __global half *);
11983 void __ovld vstore_half4(double4, size_t, __global half *);
11984 void __ovld vstore_half8(double8, size_t, __global half *);
11985 void __ovld vstore_half16(double16, size_t, __global half *);
11986 void __ovld vstore_half2_rte(double2, size_t, __global half *);
11987 void __ovld vstore_half3_rte(double3, size_t, __global half *);
11988 void __ovld vstore_half4_rte(double4, size_t, __global half *);
11989 void __ovld vstore_half8_rte(double8, size_t, __global half *);
11990 void __ovld vstore_half16_rte(double16, size_t, __global half *);
11991 void __ovld vstore_half2_rtz(double2, size_t, __global half *);
11992 void __ovld vstore_half3_rtz(double3, size_t, __global half *);
11993 void __ovld vstore_half4_rtz(double4, size_t, __global half *);
11994 void __ovld vstore_half8_rtz(double8, size_t, __global half *);
11995 void __ovld vstore_half16_rtz(double16, size_t, __global half *);
11996 void __ovld vstore_half2_rtp(double2, size_t, __global half *);
11997 void __ovld vstore_half3_rtp(double3, size_t, __global half *);
11998 void __ovld vstore_half4_rtp(double4, size_t, __global half *);
11999 void __ovld vstore_half8_rtp(double8, size_t, __global half *);
12000 void __ovld vstore_half16_rtp(double16, size_t, __global half *);
12001 void __ovld vstore_half2_rtn(double2, size_t, __global half *);
12002 void __ovld vstore_half3_rtn(double3, size_t, __global half *);
12003 void __ovld vstore_half4_rtn(double4, size_t, __global half *);
12004 void __ovld vstore_half8_rtn(double8, size_t, __global half *);
12005 void __ovld vstore_half16_rtn(double16, size_t, __global half *);
12006 void __ovld vstore_half2(double2, size_t, __local half *);
12007 void __ovld vstore_half3(double3, size_t, __local half *);
12008 void __ovld vstore_half4(double4, size_t, __local half *);
12009 void __ovld vstore_half8(double8, size_t, __local half *);
12010 void __ovld vstore_half16(double16, size_t, __local half *);
12011 void __ovld vstore_half2_rte(double2, size_t, __local half *);
12012 void __ovld vstore_half3_rte(double3, size_t, __local half *);
12013 void __ovld vstore_half4_rte(double4, size_t, __local half *);
12014 void __ovld vstore_half8_rte(double8, size_t, __local half *);
12015 void __ovld vstore_half16_rte(double16, size_t, __local half *);
12016 void __ovld vstore_half2_rtz(double2, size_t, __local half *);
12017 void __ovld vstore_half3_rtz(double3, size_t, __local half *);
12018 void __ovld vstore_half4_rtz(double4, size_t, __local half *);
12019 void __ovld vstore_half8_rtz(double8, size_t, __local half *);
12020 void __ovld vstore_half16_rtz(double16, size_t, __local half *);
12021 void __ovld vstore_half2_rtp(double2, size_t, __local half *);
12022 void __ovld vstore_half3_rtp(double3, size_t, __local half *);
12023 void __ovld vstore_half4_rtp(double4, size_t, __local half *);
12024 void __ovld vstore_half8_rtp(double8, size_t, __local half *);
12025 void __ovld vstore_half16_rtp(double16, size_t, __local half *);
12026 void __ovld vstore_half2_rtn(double2, size_t, __local half *);
12027 void __ovld vstore_half3_rtn(double3, size_t, __local half *);
12028 void __ovld vstore_half4_rtn(double4, size_t, __local half *);
12029 void __ovld vstore_half8_rtn(double8, size_t, __local half *);
12030 void __ovld vstore_half16_rtn(double16, size_t, __local half *);
12031 void __ovld vstore_half2(double2, size_t, __private half *);
12032 void __ovld vstore_half3(double3, size_t, __private half *);
12033 void __ovld vstore_half4(double4, size_t, __private half *);
12034 void __ovld vstore_half8(double8, size_t, __private half *);
12035 void __ovld vstore_half16(double16, size_t, __private half *);
12036 void __ovld vstore_half2_rte(double2, size_t, __private half *);
12037 void __ovld vstore_half3_rte(double3, size_t, __private half *);
12038 void __ovld vstore_half4_rte(double4, size_t, __private half *);
12039 void __ovld vstore_half8_rte(double8, size_t, __private half *);
12040 void __ovld vstore_half16_rte(double16, size_t, __private half *);
12041 void __ovld vstore_half2_rtz(double2, size_t, __private half *);
12042 void __ovld vstore_half3_rtz(double3, size_t, __private half *);
12043 void __ovld vstore_half4_rtz(double4, size_t, __private half *);
12044 void __ovld vstore_half8_rtz(double8, size_t, __private half *);
12045 void __ovld vstore_half16_rtz(double16, size_t, __private half *);
12046 void __ovld vstore_half2_rtp(double2, size_t, __private half *);
12047 void __ovld vstore_half3_rtp(double3, size_t, __private half *);
12048 void __ovld vstore_half4_rtp(double4, size_t, __private half *);
12049 void __ovld vstore_half8_rtp(double8, size_t, __private half *);
12050 void __ovld vstore_half16_rtp(double16, size_t, __private half *);
12051 void __ovld vstore_half2_rtn(double2, size_t, __private half *);
12052 void __ovld vstore_half3_rtn(double3, size_t, __private half *);
12053 void __ovld vstore_half4_rtn(double4, size_t, __private half *);
12054 void __ovld vstore_half8_rtn(double8, size_t, __private half *);
12055 void __ovld vstore_half16_rtn(double16, size_t, __private half *);
12056 #endif //cl_khr_fp64
12057 #endif //defined(__opencl_c_named_address_space_builtins)
12058 
12059 /**
12060  * For n = 1, 2, 4, 8 and 16 read sizeof (halfn)
12061  * bytes of data from address (p + (offset * n)).
12062  * The data read is interpreted as a halfn value.
12063  * The halfn value read is converted to a floatn
12064  * value and the floatn value is returned.
12065  * The address computed as (p + (offset * n))
12066  * must be aligned to sizeof (halfn) bytes.
12067  * For n = 3, vloada_half3 reads a half3 from
12068  * address (p + (offset * 4)) and returns a float3.
12069  * The address computed as (p + (offset * 4))
12070  * must be aligned to sizeof (half) * 4 bytes.
12071  */
12072 float2 __ovld __purefn vloada_half2(size_t, const __constant half *);
12073 float3 __ovld __purefn vloada_half3(size_t, const __constant half *);
12074 float4 __ovld __purefn vloada_half4(size_t, const __constant half *);
12075 float8 __ovld __purefn vloada_half8(size_t, const __constant half *);
12076 float16 __ovld __purefn vloada_half16(size_t, const __constant half *);
12077 #if defined(__opencl_c_generic_address_space)
12078 float2 __ovld __purefn vloada_half2(size_t, const half *);
12079 float3 __ovld __purefn vloada_half3(size_t, const half *);
12080 float4 __ovld __purefn vloada_half4(size_t, const half *);
12081 float8 __ovld __purefn vloada_half8(size_t, const half *);
12082 float16 __ovld __purefn vloada_half16(size_t, const half *);
12083 #endif //defined(__opencl_c_generic_address_space)
12084 
12085 #if defined(__opencl_c_named_address_space_builtins)
12086 float2 __ovld __purefn vloada_half2(size_t, const __global half *);
12087 float3 __ovld __purefn vloada_half3(size_t, const __global half *);
12088 float4 __ovld __purefn vloada_half4(size_t, const __global half *);
12089 float8 __ovld __purefn vloada_half8(size_t, const __global half *);
12090 float16 __ovld __purefn vloada_half16(size_t, const __global half *);
12091 float2 __ovld __purefn vloada_half2(size_t, const __local half *);
12092 float3 __ovld __purefn vloada_half3(size_t, const __local half *);
12093 float4 __ovld __purefn vloada_half4(size_t, const __local half *);
12094 float8 __ovld __purefn vloada_half8(size_t, const __local half *);
12095 float16 __ovld __purefn vloada_half16(size_t, const __local half *);
12096 float2 __ovld __purefn vloada_half2(size_t, const __private half *);
12097 float3 __ovld __purefn vloada_half3(size_t, const __private half *);
12098 float4 __ovld __purefn vloada_half4(size_t, const __private half *);
12099 float8 __ovld __purefn vloada_half8(size_t, const __private half *);
12100 float16 __ovld __purefn vloada_half16(size_t, const __private half *);
12101 #endif //defined(__opencl_c_named_address_space_builtins)
12102 
12103 /**
12104  * The floatn value given by data is converted to
12105  * a halfn value using the appropriate rounding
12106  * mode.
12107  * For n = 1, 2, 4, 8 and 16, the halfn value is
12108  * written to the address computed as (p + (offset
12109  * * n)). The address computed as (p + (offset *
12110  * n)) must be aligned to sizeof (halfn) bytes.
12111  * For n = 3, the half3 value is written to the
12112  * address computed as (p + (offset * 4)). The
12113  * address computed as (p + (offset * 4)) must be
12114  * aligned to sizeof (half) * 4 bytes.
12115  * vstorea_halfn uses the current rounding
12116  * mode. The default current rounding mode is
12117  * round to nearest even.
12118  */
12119 #if defined(__opencl_c_generic_address_space)
12120 void __ovld vstorea_half2(float2, size_t, half *);
12121 void __ovld vstorea_half3(float3, size_t, half *);
12122 void __ovld vstorea_half4(float4, size_t, half *);
12123 void __ovld vstorea_half8(float8, size_t, half *);
12124 void __ovld vstorea_half16(float16, size_t, half *);
12125 
12126 void __ovld vstorea_half2_rte(float2, size_t, half *);
12127 void __ovld vstorea_half3_rte(float3, size_t, half *);
12128 void __ovld vstorea_half4_rte(float4, size_t, half *);
12129 void __ovld vstorea_half8_rte(float8, size_t, half *);
12130 void __ovld vstorea_half16_rte(float16, size_t, half *);
12131 
12132 void __ovld vstorea_half2_rtz(float2, size_t, half *);
12133 void __ovld vstorea_half3_rtz(float3, size_t, half *);
12134 void __ovld vstorea_half4_rtz(float4, size_t, half *);
12135 void __ovld vstorea_half8_rtz(float8, size_t, half *);
12136 void __ovld vstorea_half16_rtz(float16, size_t, half *);
12137 
12138 void __ovld vstorea_half2_rtp(float2, size_t, half *);
12139 void __ovld vstorea_half3_rtp(float3, size_t, half *);
12140 void __ovld vstorea_half4_rtp(float4, size_t, half *);
12141 void __ovld vstorea_half8_rtp(float8, size_t, half *);
12142 void __ovld vstorea_half16_rtp(float16, size_t, half *);
12143 
12144 void __ovld vstorea_half2_rtn(float2, size_t, half *);
12145 void __ovld vstorea_half3_rtn(float3, size_t, half *);
12146 void __ovld vstorea_half4_rtn(float4, size_t, half *);
12147 void __ovld vstorea_half8_rtn(float8, size_t, half *);
12148 void __ovld vstorea_half16_rtn(float16, size_t, half *);
12149 
12150 #ifdef cl_khr_fp64
12151 void __ovld vstorea_half2(double2, size_t, half *);
12152 void __ovld vstorea_half3(double3, size_t, half *);
12153 void __ovld vstorea_half4(double4, size_t, half *);
12154 void __ovld vstorea_half8(double8, size_t, half *);
12155 void __ovld vstorea_half16(double16, size_t, half *);
12156 
12157 void __ovld vstorea_half2_rte(double2, size_t, half *);
12158 void __ovld vstorea_half3_rte(double3, size_t, half *);
12159 void __ovld vstorea_half4_rte(double4, size_t, half *);
12160 void __ovld vstorea_half8_rte(double8, size_t, half *);
12161 void __ovld vstorea_half16_rte(double16, size_t, half *);
12162 
12163 void __ovld vstorea_half2_rtz(double2, size_t, half *);
12164 void __ovld vstorea_half3_rtz(double3, size_t, half *);
12165 void __ovld vstorea_half4_rtz(double4, size_t, half *);
12166 void __ovld vstorea_half8_rtz(double8, size_t, half *);
12167 void __ovld vstorea_half16_rtz(double16, size_t, half *);
12168 
12169 void __ovld vstorea_half2_rtp(double2, size_t, half *);
12170 void __ovld vstorea_half3_rtp(double3, size_t, half *);
12171 void __ovld vstorea_half4_rtp(double4, size_t, half *);
12172 void __ovld vstorea_half8_rtp(double8, size_t, half *);
12173 void __ovld vstorea_half16_rtp(double16, size_t, half *);
12174 
12175 void __ovld vstorea_half2_rtn(double2, size_t, half *);
12176 void __ovld vstorea_half3_rtn(double3, size_t, half *);
12177 void __ovld vstorea_half4_rtn(double4, size_t, half *);
12178 void __ovld vstorea_half8_rtn(double8, size_t, half *);
12179 void __ovld vstorea_half16_rtn(double16, size_t, half *);
12180 #endif //cl_khr_fp64
12181 #endif //defined(__opencl_c_generic_address_space)
12182 
12183 #if defined(__opencl_c_named_address_space_builtins)
12184 void __ovld vstorea_half2(float2, size_t, __global half *);
12185 void __ovld vstorea_half3(float3, size_t, __global half *);
12186 void __ovld vstorea_half4(float4, size_t, __global half *);
12187 void __ovld vstorea_half8(float8, size_t, __global half *);
12188 void __ovld vstorea_half16(float16, size_t, __global half *);
12189 
12190 void __ovld vstorea_half2_rte(float2, size_t, __global half *);
12191 void __ovld vstorea_half3_rte(float3, size_t, __global half *);
12192 void __ovld vstorea_half4_rte(float4, size_t, __global half *);
12193 void __ovld vstorea_half8_rte(float8, size_t, __global half *);
12194 void __ovld vstorea_half16_rte(float16, size_t, __global half *);
12195 
12196 void __ovld vstorea_half2_rtz(float2, size_t, __global half *);
12197 void __ovld vstorea_half3_rtz(float3, size_t, __global half *);
12198 void __ovld vstorea_half4_rtz(float4, size_t, __global half *);
12199 void __ovld vstorea_half8_rtz(float8, size_t, __global half *);
12200 void __ovld vstorea_half16_rtz(float16, size_t, __global half *);
12201 
12202 void __ovld vstorea_half2_rtp(float2, size_t, __global half *);
12203 void __ovld vstorea_half3_rtp(float3, size_t, __global half *);
12204 void __ovld vstorea_half4_rtp(float4, size_t, __global half *);
12205 void __ovld vstorea_half8_rtp(float8, size_t, __global half *);
12206 void __ovld vstorea_half16_rtp(float16, size_t, __global half *);
12207 
12208 void __ovld vstorea_half2_rtn(float2, size_t, __global half *);
12209 void __ovld vstorea_half3_rtn(float3, size_t, __global half *);
12210 void __ovld vstorea_half4_rtn(float4, size_t, __global half *);
12211 void __ovld vstorea_half8_rtn(float8, size_t, __global half *);
12212 void __ovld vstorea_half16_rtn(float16, size_t, __global half *);
12213 
12214 void __ovld vstorea_half2(float2, size_t, __local half *);
12215 void __ovld vstorea_half3(float3, size_t, __local half *);
12216 void __ovld vstorea_half4(float4, size_t, __local half *);
12217 void __ovld vstorea_half8(float8, size_t, __local half *);
12218 void __ovld vstorea_half16(float16, size_t, __local half *);
12219 
12220 void __ovld vstorea_half2_rte(float2, size_t, __local half *);
12221 void __ovld vstorea_half3_rte(float3, size_t, __local half *);
12222 void __ovld vstorea_half4_rte(float4, size_t, __local half *);
12223 void __ovld vstorea_half8_rte(float8, size_t, __local half *);
12224 void __ovld vstorea_half16_rte(float16, size_t, __local half *);
12225 
12226 void __ovld vstorea_half2_rtz(float2, size_t, __local half *);
12227 void __ovld vstorea_half3_rtz(float3, size_t, __local half *);
12228 void __ovld vstorea_half4_rtz(float4, size_t, __local half *);
12229 void __ovld vstorea_half8_rtz(float8, size_t, __local half *);
12230 void __ovld vstorea_half16_rtz(float16, size_t, __local half *);
12231 
12232 void __ovld vstorea_half2_rtp(float2, size_t, __local half *);
12233 void __ovld vstorea_half3_rtp(float3, size_t, __local half *);
12234 void __ovld vstorea_half4_rtp(float4, size_t, __local half *);
12235 void __ovld vstorea_half8_rtp(float8, size_t, __local half *);
12236 void __ovld vstorea_half16_rtp(float16, size_t, __local half *);
12237 
12238 void __ovld vstorea_half2_rtn(float2, size_t, __local half *);
12239 void __ovld vstorea_half3_rtn(float3, size_t, __local half *);
12240 void __ovld vstorea_half4_rtn(float4, size_t, __local half *);
12241 void __ovld vstorea_half8_rtn(float8, size_t, __local half *);
12242 void __ovld vstorea_half16_rtn(float16, size_t, __local half *);
12243 
12244 void __ovld vstorea_half2(float2, size_t, __private half *);
12245 void __ovld vstorea_half3(float3, size_t, __private half *);
12246 void __ovld vstorea_half4(float4, size_t, __private half *);
12247 void __ovld vstorea_half8(float8, size_t, __private half *);
12248 void __ovld vstorea_half16(float16, size_t, __private half *);
12249 
12250 void __ovld vstorea_half2_rte(float2, size_t, __private half *);
12251 void __ovld vstorea_half3_rte(float3, size_t, __private half *);
12252 void __ovld vstorea_half4_rte(float4, size_t, __private half *);
12253 void __ovld vstorea_half8_rte(float8, size_t, __private half *);
12254 void __ovld vstorea_half16_rte(float16, size_t, __private half *);
12255 
12256 void __ovld vstorea_half2_rtz(float2, size_t, __private half *);
12257 void __ovld vstorea_half3_rtz(float3, size_t, __private half *);
12258 void __ovld vstorea_half4_rtz(float4, size_t, __private half *);
12259 void __ovld vstorea_half8_rtz(float8, size_t, __private half *);
12260 void __ovld vstorea_half16_rtz(float16, size_t, __private half *);
12261 
12262 void __ovld vstorea_half2_rtp(float2, size_t, __private half *);
12263 void __ovld vstorea_half3_rtp(float3, size_t, __private half *);
12264 void __ovld vstorea_half4_rtp(float4, size_t, __private half *);
12265 void __ovld vstorea_half8_rtp(float8, size_t, __private half *);
12266 void __ovld vstorea_half16_rtp(float16, size_t, __private half *);
12267 
12268 void __ovld vstorea_half2_rtn(float2, size_t, __private half *);
12269 void __ovld vstorea_half3_rtn(float3, size_t, __private half *);
12270 void __ovld vstorea_half4_rtn(float4, size_t, __private half *);
12271 void __ovld vstorea_half8_rtn(float8, size_t, __private half *);
12272 void __ovld vstorea_half16_rtn(float16, size_t, __private half *);
12273 
12274 #ifdef cl_khr_fp64
12275 void __ovld vstorea_half2(double2, size_t, __global half *);
12276 void __ovld vstorea_half3(double3, size_t, __global half *);
12277 void __ovld vstorea_half4(double4, size_t, __global half *);
12278 void __ovld vstorea_half8(double8, size_t, __global half *);
12279 void __ovld vstorea_half16(double16, size_t, __global half *);
12280 
12281 void __ovld vstorea_half2_rte(double2, size_t, __global half *);
12282 void __ovld vstorea_half3_rte(double3, size_t, __global half *);
12283 void __ovld vstorea_half4_rte(double4, size_t, __global half *);
12284 void __ovld vstorea_half8_rte(double8, size_t, __global half *);
12285 void __ovld vstorea_half16_rte(double16, size_t, __global half *);
12286 
12287 void __ovld vstorea_half2_rtz(double2, size_t, __global half *);
12288 void __ovld vstorea_half3_rtz(double3, size_t, __global half *);
12289 void __ovld vstorea_half4_rtz(double4, size_t, __global half *);
12290 void __ovld vstorea_half8_rtz(double8, size_t, __global half *);
12291 void __ovld vstorea_half16_rtz(double16, size_t, __global half *);
12292 
12293 void __ovld vstorea_half2_rtp(double2, size_t, __global half *);
12294 void __ovld vstorea_half3_rtp(double3, size_t, __global half *);
12295 void __ovld vstorea_half4_rtp(double4, size_t, __global half *);
12296 void __ovld vstorea_half8_rtp(double8, size_t, __global half *);
12297 void __ovld vstorea_half16_rtp(double16, size_t, __global half *);
12298 
12299 void __ovld vstorea_half2_rtn(double2, size_t, __global half *);
12300 void __ovld vstorea_half3_rtn(double3, size_t, __global half *);
12301 void __ovld vstorea_half4_rtn(double4, size_t, __global half *);
12302 void __ovld vstorea_half8_rtn(double8, size_t, __global half *);
12303 void __ovld vstorea_half16_rtn(double16, size_t, __global half *);
12304 
12305 void __ovld vstorea_half2(double2, size_t, __local half *);
12306 void __ovld vstorea_half3(double3, size_t, __local half *);
12307 void __ovld vstorea_half4(double4, size_t, __local half *);
12308 void __ovld vstorea_half8(double8, size_t, __local half *);
12309 void __ovld vstorea_half16(double16, size_t, __local half *);
12310 
12311 void __ovld vstorea_half2_rte(double2, size_t, __local half *);
12312 void __ovld vstorea_half3_rte(double3, size_t, __local half *);
12313 void __ovld vstorea_half4_rte(double4, size_t, __local half *);
12314 void __ovld vstorea_half8_rte(double8, size_t, __local half *);
12315 void __ovld vstorea_half16_rte(double16, size_t, __local half *);
12316 
12317 void __ovld vstorea_half2_rtz(double2, size_t, __local half *);
12318 void __ovld vstorea_half3_rtz(double3, size_t, __local half *);
12319 void __ovld vstorea_half4_rtz(double4, size_t, __local half *);
12320 void __ovld vstorea_half8_rtz(double8, size_t, __local half *);
12321 void __ovld vstorea_half16_rtz(double16, size_t, __local half *);
12322 
12323 void __ovld vstorea_half2_rtp(double2, size_t, __local half *);
12324 void __ovld vstorea_half3_rtp(double3, size_t, __local half *);
12325 void __ovld vstorea_half4_rtp(double4, size_t, __local half *);
12326 void __ovld vstorea_half8_rtp(double8, size_t, __local half *);
12327 void __ovld vstorea_half16_rtp(double16, size_t, __local half *);
12328 
12329 void __ovld vstorea_half2_rtn(double2, size_t, __local half *);
12330 void __ovld vstorea_half3_rtn(double3, size_t, __local half *);
12331 void __ovld vstorea_half4_rtn(double4, size_t, __local half *);
12332 void __ovld vstorea_half8_rtn(double8, size_t, __local half *);
12333 void __ovld vstorea_half16_rtn(double16, size_t, __local half *);
12334 
12335 void __ovld vstorea_half2(double2, size_t, __private half *);
12336 void __ovld vstorea_half3(double3, size_t, __private half *);
12337 void __ovld vstorea_half4(double4, size_t, __private half *);
12338 void __ovld vstorea_half8(double8, size_t, __private half *);
12339 void __ovld vstorea_half16(double16, size_t, __private half *);
12340 
12341 void __ovld vstorea_half2_rte(double2, size_t, __private half *);
12342 void __ovld vstorea_half3_rte(double3, size_t, __private half *);
12343 void __ovld vstorea_half4_rte(double4, size_t, __private half *);
12344 void __ovld vstorea_half8_rte(double8, size_t, __private half *);
12345 void __ovld vstorea_half16_rte(double16, size_t, __private half *);
12346 
12347 void __ovld vstorea_half2_rtz(double2, size_t, __private half *);
12348 void __ovld vstorea_half3_rtz(double3, size_t, __private half *);
12349 void __ovld vstorea_half4_rtz(double4, size_t, __private half *);
12350 void __ovld vstorea_half8_rtz(double8, size_t, __private half *);
12351 void __ovld vstorea_half16_rtz(double16, size_t, __private half *);
12352 
12353 void __ovld vstorea_half2_rtp(double2, size_t, __private half *);
12354 void __ovld vstorea_half3_rtp(double3, size_t, __private half *);
12355 void __ovld vstorea_half4_rtp(double4, size_t, __private half *);
12356 void __ovld vstorea_half8_rtp(double8, size_t, __private half *);
12357 void __ovld vstorea_half16_rtp(double16, size_t, __private half *);
12358 
12359 void __ovld vstorea_half2_rtn(double2, size_t, __private half *);
12360 void __ovld vstorea_half3_rtn(double3, size_t, __private half *);
12361 void __ovld vstorea_half4_rtn(double4, size_t, __private half *);
12362 void __ovld vstorea_half8_rtn(double8, size_t, __private half *);
12363 void __ovld vstorea_half16_rtn(double16, size_t, __private half *);
12364 #endif //cl_khr_fp64
12365 #endif //defined(__opencl_c_named_address_space_builtins)
12366 
12367 // OpenCL v1.1 s6.11.8, v1.2 s6.12.8, v2.0 s6.13.8 - Synchronization Functions
12368 
12369 /**
12370  * All work-items in a work-group executing the kernel
12371  * on a processor must execute this function before any
12372  * are allowed to continue execution beyond the barrier.
12373  * This function must be encountered by all work-items in
12374  * a work-group executing the kernel.
12375  * If barrier is inside a conditional statement, then all
12376  * work-items must enter the conditional if any work-item
12377  * enters the conditional statement and executes the
12378  * barrier.
12379  * If barrer is inside a loop, all work-items must execute
12380  * the barrier for each iteration of the loop before any are
12381  * allowed to continue execution beyond the barrier.
12382  * The barrier function also queues a memory fence
12383  * (reads and writes) to ensure correct ordering of
12384  * memory operations to local or global memory.
12385  * The flags argument specifies the memory address space
12386  * and can be set to a combination of the following literal
12387  * values.
12388  * CLK_LOCAL_MEM_FENCE - The barrier function
12389  * will either flush any variables stored in local memory
12390  * or queue a memory fence to ensure correct ordering of
12391  * memory operations to local memory.
12392  * CLK_GLOBAL_MEM_FENCE - The barrier function
12393  * will queue a memory fence to ensure correct ordering
12394  * of memory operations to global memory. This can be
12395  * useful when work-items, for example, write to buffer or
12396  * image objects and then want to read the updated data.
12397  */
12398 
12400 
12401 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
12404 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
12405 
12406 // OpenCL v1.1 s6.11.9, v1.2 s6.12.9 - Explicit Memory Fence Functions
12407 
12408 /**
12409  * Orders loads and stores of a work-item
12410  * executing a kernel. This means that loads
12411  * and stores preceding the mem_fence will
12412  * be committed to memory before any loads
12413  * and stores following the mem_fence.
12414  * The flags argument specifies the memory
12415  * address space and can be set to a
12416  * combination of the following literal
12417  * values:
12418  * CLK_LOCAL_MEM_FENCE
12419  * CLK_GLOBAL_MEM_FENCE.
12420  */
12422 
12423 /**
12424  * Read memory barrier that orders only
12425  * loads.
12426  * The flags argument specifies the memory
12427  * address space and can be set to a
12428  * combination of the following literal
12429  * values:
12430  * CLK_LOCAL_MEM_FENCE
12431  * CLK_GLOBAL_MEM_FENCE.
12432  */
12434 
12435 /**
12436  * Write memory barrier that orders only
12437  * stores.
12438  * The flags argument specifies the memory
12439  * address space and can be set to a
12440  * combination of the following literal
12441  * values:
12442  * CLK_LOCAL_MEM_FENCE
12443  * CLK_GLOBAL_MEM_FENCE.
12444  */
12446 
12447 // OpenCL v2.0 s6.13.9 - Address Space Qualifier Functions
12448 
12449 #if defined(__opencl_c_generic_address_space)
12450 cl_mem_fence_flags __ovld get_fence(const void *ptr);
12451 cl_mem_fence_flags __ovld get_fence(void *ptr);
12452 
12453 /**
12454  * Builtin functions to_global, to_local, and to_private need to be declared as Clang builtin functions
12455  * and checked in Sema since they should be declared as
12456  * addr gentype* to_addr (gentype*);
12457  * where gentype is builtin type or user defined type.
12458  */
12459 
12460 #endif //defined(__opencl_c_generic_address_space)
12461 
12462 // OpenCL v1.1 s6.11.10, v1.2 s6.12.10, v2.0 s6.13.10 - Async Copies from Global to Local Memory, Local to Global Memory, and Prefetch
12463 
12464 /**
12465  * event_t async_work_group_copy (
12466  * __global gentype *dst,
12467  * const __local gentype *src,
12468  * size_t num_elements,
12469  * event_t event)
12470  * Perform an async copy of num_elements
12471  * gentype elements from src to dst. The async
12472  * copy is performed by all work-items in a workgroup
12473  * and this built-in function must therefore
12474  * be encountered by all work-items in a workgroup
12475  * executing the kernel with the same
12476  * argument values; otherwise the results are
12477  * undefined.
12478  * Returns an event object that can be used by
12479  * wait_group_events to wait for the async copy
12480  * to finish. The event argument can also be used
12481  * to associate the async_work_group_copy with
12482  * a previous async copy allowing an event to be
12483  * shared by multiple async copies; otherwise event
12484  * should be zero.
12485  * If event argument is non-zero, the event object
12486  * supplied in event argument will be returned.
12487  * This function does not perform any implicit
12488  * synchronization of source data such as using a
12489  * barrier before performing the copy.
12490  */
12491 event_t __ovld async_work_group_copy(__local char *, const __global char *, size_t, event_t);
12492 event_t __ovld async_work_group_copy(__local uchar *, const __global uchar *, size_t, event_t);
12493 event_t __ovld async_work_group_copy(__local short *, const __global short *, size_t, event_t);
12494 event_t __ovld async_work_group_copy(__local ushort *, const __global ushort *, size_t, event_t);
12495 event_t __ovld async_work_group_copy(__local int *, const __global int *, size_t, event_t);
12496 event_t __ovld async_work_group_copy(__local uint *, const __global uint *, size_t, event_t);
12497 event_t __ovld async_work_group_copy(__local long *, const __global long *, size_t, event_t);
12498 event_t __ovld async_work_group_copy(__local ulong *, const __global ulong *, size_t, event_t);
12499 event_t __ovld async_work_group_copy(__local float *, const __global float *, size_t, event_t);
12500 event_t __ovld async_work_group_copy(__local char2 *, const __global char2 *, size_t, event_t);
12501 event_t __ovld async_work_group_copy(__local uchar2 *, const __global uchar2 *, size_t, event_t);
12502 event_t __ovld async_work_group_copy(__local short2 *, const __global short2 *, size_t, event_t);
12503 event_t __ovld async_work_group_copy(__local ushort2 *, const __global ushort2 *, size_t, event_t);
12504 event_t __ovld async_work_group_copy(__local int2 *, const __global int2 *, size_t, event_t);
12505 event_t __ovld async_work_group_copy(__local uint2 *, const __global uint2 *, size_t, event_t);
12506 event_t __ovld async_work_group_copy(__local long2 *, const __global long2 *, size_t, event_t);
12507 event_t __ovld async_work_group_copy(__local ulong2 *, const __global ulong2 *, size_t, event_t);
12508 event_t __ovld async_work_group_copy(__local float2 *, const __global float2 *, size_t, event_t);
12509 event_t __ovld async_work_group_copy(__local char3 *, const __global char3 *, size_t, event_t);
12510 event_t __ovld async_work_group_copy(__local uchar3 *, const __global uchar3 *, size_t, event_t);
12511 event_t __ovld async_work_group_copy(__local short3 *, const __global short3 *, size_t, event_t);
12512 event_t __ovld async_work_group_copy(__local ushort3 *, const __global ushort3 *, size_t, event_t);
12513 event_t __ovld async_work_group_copy(__local int3 *, const __global int3 *, size_t, event_t);
12514 event_t __ovld async_work_group_copy(__local uint3 *, const __global uint3 *, size_t, event_t);
12515 event_t __ovld async_work_group_copy(__local long3 *, const __global long3 *, size_t, event_t);
12516 event_t __ovld async_work_group_copy(__local ulong3 *, const __global ulong3 *, size_t, event_t);
12517 event_t __ovld async_work_group_copy(__local float3 *, const __global float3 *, size_t, event_t);
12518 event_t __ovld async_work_group_copy(__local char4 *, const __global char4 *, size_t, event_t);
12519 event_t __ovld async_work_group_copy(__local uchar4 *, const __global uchar4 *, size_t, event_t);
12520 event_t __ovld async_work_group_copy(__local short4 *, const __global short4 *, size_t, event_t);
12521 event_t __ovld async_work_group_copy(__local ushort4 *, const __global ushort4 *, size_t, event_t);
12522 event_t __ovld async_work_group_copy(__local int4 *, const __global int4 *, size_t, event_t);
12523 event_t __ovld async_work_group_copy(__local uint4 *, const __global uint4 *, size_t, event_t);
12524 event_t __ovld async_work_group_copy(__local long4 *, const __global long4 *, size_t, event_t);
12525 event_t __ovld async_work_group_copy(__local ulong4 *, const __global ulong4 *, size_t, event_t);
12526 event_t __ovld async_work_group_copy(__local float4 *, const __global float4 *, size_t, event_t);
12527 event_t __ovld async_work_group_copy(__local char8 *, const __global char8 *, size_t, event_t);
12528 event_t __ovld async_work_group_copy(__local uchar8 *, const __global uchar8 *, size_t, event_t);
12529 event_t __ovld async_work_group_copy(__local short8 *, const __global short8 *, size_t, event_t);
12530 event_t __ovld async_work_group_copy(__local ushort8 *, const __global ushort8 *, size_t, event_t);
12531 event_t __ovld async_work_group_copy(__local int8 *, const __global int8 *, size_t, event_t);
12532 event_t __ovld async_work_group_copy(__local uint8 *, const __global uint8 *, size_t, event_t);
12533 event_t __ovld async_work_group_copy(__local long8 *, const __global long8 *, size_t, event_t);
12534 event_t __ovld async_work_group_copy(__local ulong8 *, const __global ulong8 *, size_t, event_t);
12535 event_t __ovld async_work_group_copy(__local float8 *, const __global float8 *, size_t, event_t);
12536 event_t __ovld async_work_group_copy(__local char16 *, const __global char16 *, size_t, event_t);
12537 event_t __ovld async_work_group_copy(__local uchar16 *, const __global uchar16 *, size_t, event_t);
12538 event_t __ovld async_work_group_copy(__local short16 *, const __global short16 *, size_t, event_t);
12539 event_t __ovld async_work_group_copy(__local ushort16 *, const __global ushort16 *, size_t, event_t);
12540 event_t __ovld async_work_group_copy(__local int16 *, const __global int16 *, size_t, event_t);
12541 event_t __ovld async_work_group_copy(__local uint16 *, const __global uint16 *, size_t, event_t);
12542 event_t __ovld async_work_group_copy(__local long16 *, const __global long16 *, size_t, event_t);
12543 event_t __ovld async_work_group_copy(__local ulong16 *, const __global ulong16 *, size_t, event_t);
12544 event_t __ovld async_work_group_copy(__local float16 *, const __global float16 *, size_t, event_t);
12545 event_t __ovld async_work_group_copy(__global char *, const __local char *, size_t, event_t);
12546 event_t __ovld async_work_group_copy(__global uchar *, const __local uchar *, size_t, event_t);
12547 event_t __ovld async_work_group_copy(__global short *, const __local short *, size_t, event_t);
12548 event_t __ovld async_work_group_copy(__global ushort *, const __local ushort *, size_t, event_t);
12549 event_t __ovld async_work_group_copy(__global int *, const __local int *, size_t, event_t);
12550 event_t __ovld async_work_group_copy(__global uint *, const __local uint *, size_t, event_t);
12551 event_t __ovld async_work_group_copy(__global long *, const __local long *, size_t, event_t);
12552 event_t __ovld async_work_group_copy(__global ulong *, const __local ulong *, size_t, event_t);
12553 event_t __ovld async_work_group_copy(__global float *, const __local float *, size_t, event_t);
12554 event_t __ovld async_work_group_copy(__global char2 *, const __local char2 *, size_t, event_t);
12555 event_t __ovld async_work_group_copy(__global uchar2 *, const __local uchar2 *, size_t, event_t);
12556 event_t __ovld async_work_group_copy(__global short2 *, const __local short2 *, size_t, event_t);
12557 event_t __ovld async_work_group_copy(__global ushort2 *, const __local ushort2 *, size_t, event_t);
12558 event_t __ovld async_work_group_copy(__global int2 *, const __local int2 *, size_t, event_t);
12559 event_t __ovld async_work_group_copy(__global uint2 *, const __local uint2 *, size_t, event_t);
12560 event_t __ovld async_work_group_copy(__global long2 *, const __local long2 *, size_t, event_t);
12561 event_t __ovld async_work_group_copy(__global ulong2 *, const __local ulong2 *, size_t, event_t);
12562 event_t __ovld async_work_group_copy(__global float2 *, const __local float2 *, size_t, event_t);
12563 event_t __ovld async_work_group_copy(__global char3 *, const __local char3 *, size_t, event_t);
12564 event_t __ovld async_work_group_copy(__global uchar3 *, const __local uchar3 *, size_t, event_t);
12565 event_t __ovld async_work_group_copy(__global short3 *, const __local short3 *, size_t, event_t);
12566 event_t __ovld async_work_group_copy(__global ushort3 *, const __local ushort3 *, size_t, event_t);
12567 event_t __ovld async_work_group_copy(__global int3 *, const __local int3 *, size_t, event_t);
12568 event_t __ovld async_work_group_copy(__global uint3 *, const __local uint3 *, size_t, event_t);
12569 event_t __ovld async_work_group_copy(__global long3 *, const __local long3 *, size_t, event_t);
12570 event_t __ovld async_work_group_copy(__global ulong3 *, const __local ulong3 *, size_t, event_t);
12571 event_t __ovld async_work_group_copy(__global float3 *, const __local float3 *, size_t, event_t);
12572 event_t __ovld async_work_group_copy(__global char4 *, const __local char4 *, size_t, event_t);
12573 event_t __ovld async_work_group_copy(__global uchar4 *, const __local uchar4 *, size_t, event_t);
12574 event_t __ovld async_work_group_copy(__global short4 *, const __local short4 *, size_t, event_t);
12575 event_t __ovld async_work_group_copy(__global ushort4 *, const __local ushort4 *, size_t, event_t);
12576 event_t __ovld async_work_group_copy(__global int4 *, const __local int4 *, size_t, event_t);
12577 event_t __ovld async_work_group_copy(__global uint4 *, const __local uint4 *, size_t, event_t);
12578 event_t __ovld async_work_group_copy(__global long4 *, const __local long4 *, size_t, event_t);
12579 event_t __ovld async_work_group_copy(__global ulong4 *, const __local ulong4 *, size_t, event_t);
12580 event_t __ovld async_work_group_copy(__global float4 *, const __local float4 *, size_t, event_t);
12581 event_t __ovld async_work_group_copy(__global char8 *, const __local char8 *, size_t, event_t);
12582 event_t __ovld async_work_group_copy(__global uchar8 *, const __local uchar8 *, size_t, event_t);
12583 event_t __ovld async_work_group_copy(__global short8 *, const __local short8 *, size_t, event_t);
12584 event_t __ovld async_work_group_copy(__global ushort8 *, const __local ushort8 *, size_t, event_t);
12585 event_t __ovld async_work_group_copy(__global int8 *, const __local int8 *, size_t, event_t);
12586 event_t __ovld async_work_group_copy(__global uint8 *, const __local uint8 *, size_t, event_t);
12587 event_t __ovld async_work_group_copy(__global long8 *, const __local long8 *, size_t, event_t);
12588 event_t __ovld async_work_group_copy(__global ulong8 *, const __local ulong8 *, size_t, event_t);
12589 event_t __ovld async_work_group_copy(__global float8 *, const __local float8 *, size_t, event_t);
12590 event_t __ovld async_work_group_copy(__global char16 *, const __local char16 *, size_t, event_t);
12591 event_t __ovld async_work_group_copy(__global uchar16 *, const __local uchar16 *, size_t, event_t);
12592 event_t __ovld async_work_group_copy(__global short16 *, const __local short16 *, size_t, event_t);
12593 event_t __ovld async_work_group_copy(__global ushort16 *, const __local ushort16 *, size_t, event_t);
12594 event_t __ovld async_work_group_copy(__global int16 *, const __local int16 *, size_t, event_t);
12595 event_t __ovld async_work_group_copy(__global uint16 *, const __local uint16 *, size_t, event_t);
12596 event_t __ovld async_work_group_copy(__global long16 *, const __local long16 *, size_t, event_t);
12597 event_t __ovld async_work_group_copy(__global ulong16 *, const __local ulong16 *, size_t, event_t);
12598 event_t __ovld async_work_group_copy(__global float16 *, const __local float16 *, size_t, event_t);
12599 #ifdef cl_khr_fp64
12600 event_t __ovld async_work_group_copy(__local double *, const __global double *, size_t, event_t);
12601 event_t __ovld async_work_group_copy(__local double2 *, const __global double2 *, size_t, event_t);
12602 event_t __ovld async_work_group_copy(__local double3 *, const __global double3 *, size_t, event_t);
12603 event_t __ovld async_work_group_copy(__local double4 *, const __global double4 *, size_t, event_t);
12604 event_t __ovld async_work_group_copy(__local double8 *, const __global double8 *, size_t, event_t);
12605 event_t __ovld async_work_group_copy(__local double16 *, const __global double16 *, size_t, event_t);
12606 event_t __ovld async_work_group_copy(__global double *, const __local double *, size_t, event_t);
12607 event_t __ovld async_work_group_copy(__global double2 *, const __local double2 *, size_t, event_t);
12608 event_t __ovld async_work_group_copy(__global double3 *, const __local double3 *, size_t, event_t);
12609 event_t __ovld async_work_group_copy(__global double4 *, const __local double4 *, size_t, event_t);
12610 event_t __ovld async_work_group_copy(__global double8 *, const __local double8 *, size_t, event_t);
12611 event_t __ovld async_work_group_copy(__global double16 *, const __local double16 *, size_t, event_t);
12612 #endif //cl_khr_fp64
12613 #ifdef cl_khr_fp16
12614 event_t __ovld async_work_group_copy(__local half *, const __global half *, size_t, event_t);
12615 event_t __ovld async_work_group_copy(__local half2 *, const __global half2 *, size_t, event_t);
12616 event_t __ovld async_work_group_copy(__local half3 *, const __global half3 *, size_t, event_t);
12617 event_t __ovld async_work_group_copy(__local half4 *, const __global half4 *, size_t, event_t);
12618 event_t __ovld async_work_group_copy(__local half8 *, const __global half8 *, size_t, event_t);
12619 event_t __ovld async_work_group_copy(__local half16 *, const __global half16 *, size_t, event_t);
12620 event_t __ovld async_work_group_copy(__global half *, const __local half *, size_t, event_t);
12621 event_t __ovld async_work_group_copy(__global half2 *, const __local half2 *, size_t, event_t);
12622 event_t __ovld async_work_group_copy(__global half3 *, const __local half3 *, size_t, event_t);
12623 event_t __ovld async_work_group_copy(__global half4 *, const __local half4 *, size_t, event_t);
12624 event_t __ovld async_work_group_copy(__global half8 *, const __local half8 *, size_t, event_t);
12625 event_t __ovld async_work_group_copy(__global half16 *, const __local half16 *, size_t, event_t);
12626 #endif //cl_khr_fp16
12627 
12628 /**
12629  * Perform an async gather of num_elements
12630  * gentype elements from src to dst. The
12631  * src_stride is the stride in elements for each
12632  * gentype element read from src. The dst_stride
12633  * is the stride in elements for each gentype
12634  * element written to dst. The async gather is
12635  * performed by all work-items in a work-group.
12636  * This built-in function must therefore be
12637  * encountered by all work-items in a work-group
12638  * executing the kernel with the same argument
12639  * values; otherwise the results are undefined.
12640  * Returns an event object that can be used by
12641  * wait_group_events to wait for the async copy
12642  * to finish. The event argument can also be used
12643  * to associate the
12644  * async_work_group_strided_copy with a
12645  * previous async copy allowing an event to be
12646  * shared by multiple async copies; otherwise event
12647  * should be zero.
12648  * If event argument is non-zero, the event object
12649  * supplied in event argument will be returned.
12650  * This function does not perform any implicit
12651  * synchronization of source data such as using a
12652  * barrier before performing the copy.
12653  */
12654 event_t __ovld async_work_group_strided_copy(__local char *, const __global char *, size_t, size_t, event_t);
12655 event_t __ovld async_work_group_strided_copy(__local uchar *, const __global uchar *, size_t, size_t, event_t);
12656 event_t __ovld async_work_group_strided_copy(__local short *, const __global short *, size_t, size_t, event_t);
12657 event_t __ovld async_work_group_strided_copy(__local ushort *, const __global ushort *, size_t, size_t, event_t);
12658 event_t __ovld async_work_group_strided_copy(__local int *, const __global int *, size_t, size_t, event_t);
12659 event_t __ovld async_work_group_strided_copy(__local uint *, const __global uint *, size_t, size_t, event_t);
12660 event_t __ovld async_work_group_strided_copy(__local long *, const __global long *, size_t, size_t, event_t);
12661 event_t __ovld async_work_group_strided_copy(__local ulong *, const __global ulong *, size_t, size_t, event_t);
12662 event_t __ovld async_work_group_strided_copy(__local float *, const __global float *, size_t, size_t, event_t);
12663 event_t __ovld async_work_group_strided_copy(__local char2 *, const __global char2 *, size_t, size_t, event_t);
12664 event_t __ovld async_work_group_strided_copy(__local uchar2 *, const __global uchar2 *, size_t, size_t, event_t);
12665 event_t __ovld async_work_group_strided_copy(__local short2 *, const __global short2 *, size_t, size_t, event_t);
12666 event_t __ovld async_work_group_strided_copy(__local ushort2 *, const __global ushort2 *, size_t, size_t, event_t);
12667 event_t __ovld async_work_group_strided_copy(__local int2 *, const __global int2 *, size_t, size_t, event_t);
12668 event_t __ovld async_work_group_strided_copy(__local uint2 *, const __global uint2 *, size_t, size_t, event_t);
12669 event_t __ovld async_work_group_strided_copy(__local long2 *, const __global long2 *, size_t, size_t, event_t);
12670 event_t __ovld async_work_group_strided_copy(__local ulong2 *, const __global ulong2 *, size_t, size_t, event_t);
12671 event_t __ovld async_work_group_strided_copy(__local float2 *, const __global float2 *, size_t, size_t, event_t);
12672 event_t __ovld async_work_group_strided_copy(__local char3 *, const __global char3 *, size_t, size_t, event_t);
12673 event_t __ovld async_work_group_strided_copy(__local uchar3 *, const __global uchar3 *, size_t, size_t, event_t);
12674 event_t __ovld async_work_group_strided_copy(__local short3 *, const __global short3 *, size_t, size_t, event_t);
12675 event_t __ovld async_work_group_strided_copy(__local ushort3 *, const __global ushort3 *, size_t, size_t, event_t);
12676 event_t __ovld async_work_group_strided_copy(__local int3 *, const __global int3 *, size_t, size_t, event_t);
12677 event_t __ovld async_work_group_strided_copy(__local uint3 *, const __global uint3 *, size_t, size_t, event_t);
12678 event_t __ovld async_work_group_strided_copy(__local long3 *, const __global long3 *, size_t, size_t, event_t);
12679 event_t __ovld async_work_group_strided_copy(__local ulong3 *, const __global ulong3 *, size_t, size_t, event_t);
12680 event_t __ovld async_work_group_strided_copy(__local float3 *, const __global float3 *, size_t, size_t, event_t);
12681 event_t __ovld async_work_group_strided_copy(__local char4 *, const __global char4 *, size_t, size_t, event_t);
12682 event_t __ovld async_work_group_strided_copy(__local uchar4 *, const __global uchar4 *, size_t, size_t, event_t);
12683 event_t __ovld async_work_group_strided_copy(__local short4 *, const __global short4 *, size_t, size_t, event_t);
12684 event_t __ovld async_work_group_strided_copy(__local ushort4 *, const __global ushort4 *, size_t, size_t, event_t);
12685 event_t __ovld async_work_group_strided_copy(__local int4 *, const __global int4 *, size_t, size_t, event_t);
12686 event_t __ovld async_work_group_strided_copy(__local uint4 *, const __global uint4 *, size_t, size_t, event_t);
12687 event_t __ovld async_work_group_strided_copy(__local long4 *, const __global long4 *, size_t, size_t, event_t);
12688 event_t __ovld async_work_group_strided_copy(__local ulong4 *, const __global ulong4 *, size_t, size_t, event_t);
12689 event_t __ovld async_work_group_strided_copy(__local float4 *, const __global float4 *, size_t, size_t, event_t);
12690 event_t __ovld async_work_group_strided_copy(__local char8 *, const __global char8 *, size_t, size_t, event_t);
12691 event_t __ovld async_work_group_strided_copy(__local uchar8 *, const __global uchar8 *, size_t, size_t, event_t);
12692 event_t __ovld async_work_group_strided_copy(__local short8 *, const __global short8 *, size_t, size_t, event_t);
12693 event_t __ovld async_work_group_strided_copy(__local ushort8 *, const __global ushort8 *, size_t, size_t, event_t);
12694 event_t __ovld async_work_group_strided_copy(__local int8 *, const __global int8 *, size_t, size_t, event_t);
12695 event_t __ovld async_work_group_strided_copy(__local uint8 *, const __global uint8 *, size_t, size_t, event_t);
12696 event_t __ovld async_work_group_strided_copy(__local long8 *, const __global long8 *, size_t, size_t, event_t);
12697 event_t __ovld async_work_group_strided_copy(__local ulong8 *, const __global ulong8 *, size_t, size_t, event_t);
12698 event_t __ovld async_work_group_strided_copy(__local float8 *, const __global float8 *, size_t, size_t, event_t);
12699 event_t __ovld async_work_group_strided_copy(__local char16 *, const __global char16 *, size_t, size_t, event_t);
12700 event_t __ovld async_work_group_strided_copy(__local uchar16 *, const __global uchar16 *, size_t, size_t, event_t);
12701 event_t __ovld async_work_group_strided_copy(__local short16 *, const __global short16 *, size_t, size_t, event_t);
12702 event_t __ovld async_work_group_strided_copy(__local ushort16 *, const __global ushort16 *, size_t, size_t, event_t);
12703 event_t __ovld async_work_group_strided_copy(__local int16 *, const __global int16 *, size_t, size_t, event_t);
12704 event_t __ovld async_work_group_strided_copy(__local uint16 *, const __global uint16 *, size_t, size_t, event_t);
12705 event_t __ovld async_work_group_strided_copy(__local long16 *, const __global long16 *, size_t, size_t, event_t);
12706 event_t __ovld async_work_group_strided_copy(__local ulong16 *, const __global ulong16 *, size_t, size_t, event_t);
12707 event_t __ovld async_work_group_strided_copy(__local float16 *, const __global float16 *, size_t, size_t, event_t);
12708 event_t __ovld async_work_group_strided_copy(__global char *, const __local char *, size_t, size_t, event_t);
12709 event_t __ovld async_work_group_strided_copy(__global uchar *, const __local uchar *, size_t, size_t, event_t);
12710 event_t __ovld async_work_group_strided_copy(__global short *, const __local short *, size_t, size_t, event_t);
12711 event_t __ovld async_work_group_strided_copy(__global ushort *, const __local ushort *, size_t, size_t, event_t);
12712 event_t __ovld async_work_group_strided_copy(__global int *, const __local int *, size_t, size_t, event_t);
12713 event_t __ovld async_work_group_strided_copy(__global uint *, const __local uint *, size_t, size_t, event_t);
12714 event_t __ovld async_work_group_strided_copy(__global long *, const __local long *, size_t, size_t, event_t);
12715 event_t __ovld async_work_group_strided_copy(__global ulong *, const __local ulong *, size_t, size_t, event_t);
12716 event_t __ovld async_work_group_strided_copy(__global float *, const __local float *, size_t, size_t, event_t);
12717 event_t __ovld async_work_group_strided_copy(__global char2 *, const __local char2 *, size_t, size_t, event_t);
12718 event_t __ovld async_work_group_strided_copy(__global uchar2 *, const __local uchar2 *, size_t, size_t, event_t);
12719 event_t __ovld async_work_group_strided_copy(__global short2 *, const __local short2 *, size_t, size_t, event_t);
12720 event_t __ovld async_work_group_strided_copy(__global ushort2 *, const __local ushort2 *, size_t, size_t, event_t);
12721 event_t __ovld async_work_group_strided_copy(__global int2 *, const __local int2 *, size_t, size_t, event_t);
12722 event_t __ovld async_work_group_strided_copy(__global uint2 *, const __local uint2 *, size_t, size_t, event_t);
12723 event_t __ovld async_work_group_strided_copy(__global long2 *, const __local long2 *, size_t, size_t, event_t);
12724 event_t __ovld async_work_group_strided_copy(__global ulong2 *, const __local ulong2 *, size_t, size_t, event_t);
12725 event_t __ovld async_work_group_strided_copy(__global float2 *, const __local float2 *, size_t, size_t, event_t);
12726 event_t __ovld async_work_group_strided_copy(__global char3 *, const __local char3 *, size_t, size_t, event_t);
12727 event_t __ovld async_work_group_strided_copy(__global uchar3 *, const __local uchar3 *, size_t, size_t, event_t);
12728 event_t __ovld async_work_group_strided_copy(__global short3 *, const __local short3 *, size_t, size_t, event_t);
12729 event_t __ovld async_work_group_strided_copy(__global ushort3 *, const __local ushort3 *, size_t, size_t, event_t);
12730 event_t __ovld async_work_group_strided_copy(__global int3 *, const __local int3 *, size_t, size_t, event_t);
12731 event_t __ovld async_work_group_strided_copy(__global uint3 *, const __local uint3 *, size_t, size_t, event_t);
12732 event_t __ovld async_work_group_strided_copy(__global long3 *, const __local long3 *, size_t, size_t, event_t);
12733 event_t __ovld async_work_group_strided_copy(__global ulong3 *, const __local ulong3 *, size_t, size_t, event_t);
12734 event_t __ovld async_work_group_strided_copy(__global float3 *, const __local float3 *, size_t, size_t, event_t);
12735 event_t __ovld async_work_group_strided_copy(__global char4 *, const __local char4 *, size_t, size_t, event_t);
12736 event_t __ovld async_work_group_strided_copy(__global uchar4 *, const __local uchar4 *, size_t, size_t, event_t);
12737 event_t __ovld async_work_group_strided_copy(__global short4 *, const __local short4 *, size_t, size_t, event_t);
12738 event_t __ovld async_work_group_strided_copy(__global ushort4 *, const __local ushort4 *, size_t, size_t, event_t);
12739 event_t __ovld async_work_group_strided_copy(__global int4 *, const __local int4 *, size_t, size_t, event_t);
12740 event_t __ovld async_work_group_strided_copy(__global uint4 *, const __local uint4 *, size_t, size_t, event_t);
12741 event_t __ovld async_work_group_strided_copy(__global long4 *, const __local long4 *, size_t, size_t, event_t);
12742 event_t __ovld async_work_group_strided_copy(__global ulong4 *, const __local ulong4 *, size_t, size_t, event_t);
12743 event_t __ovld async_work_group_strided_copy(__global float4 *, const __local float4 *, size_t, size_t, event_t);
12744 event_t __ovld async_work_group_strided_copy(__global char8 *, const __local char8 *, size_t, size_t, event_t);
12745 event_t __ovld async_work_group_strided_copy(__global uchar8 *, const __local uchar8 *, size_t, size_t, event_t);
12746 event_t __ovld async_work_group_strided_copy(__global short8 *, const __local short8 *, size_t, size_t, event_t);
12747 event_t __ovld async_work_group_strided_copy(__global ushort8 *, const __local ushort8 *, size_t, size_t, event_t);
12748 event_t __ovld async_work_group_strided_copy(__global int8 *, const __local int8 *, size_t, size_t, event_t);
12749 event_t __ovld async_work_group_strided_copy(__global uint8 *, const __local uint8 *, size_t, size_t, event_t);
12750 event_t __ovld async_work_group_strided_copy(__global long8 *, const __local long8 *, size_t, size_t, event_t);
12751 event_t __ovld async_work_group_strided_copy(__global ulong8 *, const __local ulong8 *, size_t, size_t, event_t);
12752 event_t __ovld async_work_group_strided_copy(__global float8 *, const __local float8 *, size_t, size_t, event_t);
12753 event_t __ovld async_work_group_strided_copy(__global char16 *, const __local char16 *, size_t, size_t, event_t);
12754 event_t __ovld async_work_group_strided_copy(__global uchar16 *, const __local uchar16 *, size_t, size_t, event_t);
12755 event_t __ovld async_work_group_strided_copy(__global short16 *, const __local short16 *, size_t, size_t, event_t);
12756 event_t __ovld async_work_group_strided_copy(__global ushort16 *, const __local ushort16 *, size_t, size_t, event_t);
12757 event_t __ovld async_work_group_strided_copy(__global int16 *, const __local int16 *, size_t, size_t, event_t);
12758 event_t __ovld async_work_group_strided_copy(__global uint16 *, const __local uint16 *, size_t, size_t, event_t);
12759 event_t __ovld async_work_group_strided_copy(__global long16 *, const __local long16 *, size_t, size_t, event_t);
12760 event_t __ovld async_work_group_strided_copy(__global ulong16 *, const __local ulong16 *, size_t, size_t, event_t);
12761 event_t __ovld async_work_group_strided_copy(__global float16 *, const __local float16 *, size_t, size_t, event_t);
12762 #ifdef cl_khr_fp64
12763 event_t __ovld async_work_group_strided_copy(__local double *, const __global double *, size_t, size_t, event_t);
12764 event_t __ovld async_work_group_strided_copy(__local double2 *, const __global double2 *, size_t, size_t, event_t);
12765 event_t __ovld async_work_group_strided_copy(__local double3 *, const __global double3 *, size_t, size_t, event_t);
12766 event_t __ovld async_work_group_strided_copy(__local double4 *, const __global double4 *, size_t, size_t, event_t);
12767 event_t __ovld async_work_group_strided_copy(__local double8 *, const __global double8 *, size_t, size_t, event_t);
12768 event_t __ovld async_work_group_strided_copy(__local double16 *, const __global double16 *, size_t, size_t, event_t);
12769 event_t __ovld async_work_group_strided_copy(__global double *, const __local double *, size_t, size_t, event_t);
12770 event_t __ovld async_work_group_strided_copy(__global double2 *, const __local double2 *, size_t, size_t, event_t);
12771 event_t __ovld async_work_group_strided_copy(__global double3 *, const __local double3 *, size_t, size_t, event_t);
12772 event_t __ovld async_work_group_strided_copy(__global double4 *, const __local double4 *, size_t, size_t, event_t);
12773 event_t __ovld async_work_group_strided_copy(__global double8 *, const __local double8 *, size_t, size_t, event_t);
12774 event_t __ovld async_work_group_strided_copy(__global double16 *, const __local double16 *, size_t, size_t, event_t);
12775 #endif //cl_khr_fp64
12776 #ifdef cl_khr_fp16
12777 event_t __ovld async_work_group_strided_copy(__local half *, const __global half *, size_t, size_t, event_t);
12778 event_t __ovld async_work_group_strided_copy(__local half2 *, const __global half2 *, size_t, size_t, event_t);
12779 event_t __ovld async_work_group_strided_copy(__local half3 *, const __global half3 *, size_t, size_t, event_t);
12780 event_t __ovld async_work_group_strided_copy(__local half4 *, const __global half4 *, size_t, size_t, event_t);
12781 event_t __ovld async_work_group_strided_copy(__local half8 *, const __global half8 *, size_t, size_t, event_t);
12782 event_t __ovld async_work_group_strided_copy(__local half16 *, const __global half16 *, size_t, size_t, event_t);
12783 event_t __ovld async_work_group_strided_copy(__global half *, const __local half *, size_t, size_t, event_t);
12784 event_t __ovld async_work_group_strided_copy(__global half2 *, const __local half2 *, size_t, size_t, event_t);
12785 event_t __ovld async_work_group_strided_copy(__global half3 *, const __local half3 *, size_t, size_t, event_t);
12786 event_t __ovld async_work_group_strided_copy(__global half4 *, const __local half4 *, size_t, size_t, event_t);
12787 event_t __ovld async_work_group_strided_copy(__global half8 *, const __local half8 *, size_t, size_t, event_t);
12788 event_t __ovld async_work_group_strided_copy(__global half16 *, const __local half16 *, size_t, size_t, event_t);
12789 #endif //cl_khr_fp16
12790 
12791 /**
12792  * Wait for events that identify the
12793  * async_work_group_copy operations to
12794  * complete. The event objects specified in
12795  * event_list will be released after the wait is
12796  * performed.
12797  * This function must be encountered by all workitems
12798  * in a work-group executing the kernel with
12799  * the same num_events and event objects specified
12800  * in event_list; otherwise the results are undefined.
12801  */
12802 void __ovld wait_group_events(int, event_t *);
12803 
12804 /**
12805  * Prefetch num_elements * sizeof(gentype)
12806  * bytes into the global cache. The prefetch
12807  * instruction is applied to a work-item in a workgroup
12808  * and does not affect the functional
12809  * behavior of the kernel.
12810  */
12811 void __ovld prefetch(const __global char *, size_t);
12812 void __ovld prefetch(const __global uchar *, size_t);
12813 void __ovld prefetch(const __global short *, size_t);
12814 void __ovld prefetch(const __global ushort *, size_t);
12815 void __ovld prefetch(const __global int *, size_t);
12816 void __ovld prefetch(const __global uint *, size_t);
12817 void __ovld prefetch(const __global long *, size_t);
12818 void __ovld prefetch(const __global ulong *, size_t);
12819 void __ovld prefetch(const __global float *, size_t);
12820 void __ovld prefetch(const __global char2 *, size_t);
12821 void __ovld prefetch(const __global uchar2 *, size_t);
12822 void __ovld prefetch(const __global short2 *, size_t);
12823 void __ovld prefetch(const __global ushort2 *, size_t);
12824 void __ovld prefetch(const __global int2 *, size_t);
12825 void __ovld prefetch(const __global uint2 *, size_t);
12826 void __ovld prefetch(const __global long2 *, size_t);
12827 void __ovld prefetch(const __global ulong2 *, size_t);
12828 void __ovld prefetch(const __global float2 *, size_t);
12829 void __ovld prefetch(const __global char3 *, size_t);
12830 void __ovld prefetch(const __global uchar3 *, size_t);
12831 void __ovld prefetch(const __global short3 *, size_t);
12832 void __ovld prefetch(const __global ushort3 *, size_t);
12833 void __ovld prefetch(const __global int3 *, size_t);
12834 void __ovld prefetch(const __global uint3 *, size_t);
12835 void __ovld prefetch(const __global long3 *, size_t);
12836 void __ovld prefetch(const __global ulong3 *, size_t);
12837 void __ovld prefetch(const __global float3 *, size_t);
12838 void __ovld prefetch(const __global char4 *, size_t);
12839 void __ovld prefetch(const __global uchar4 *, size_t);
12840 void __ovld prefetch(const __global short4 *, size_t);
12841 void __ovld prefetch(const __global ushort4 *, size_t);
12842 void __ovld prefetch(const __global int4 *, size_t);
12843 void __ovld prefetch(const __global uint4 *, size_t);
12844 void __ovld prefetch(const __global long4 *, size_t);
12845 void __ovld prefetch(const __global ulong4 *, size_t);
12846 void __ovld prefetch(const __global float4 *, size_t);
12847 void __ovld prefetch(const __global char8 *, size_t);
12848 void __ovld prefetch(const __global uchar8 *, size_t);
12849 void __ovld prefetch(const __global short8 *, size_t);
12850 void __ovld prefetch(const __global ushort8 *, size_t);
12851 void __ovld prefetch(const __global int8 *, size_t);
12852 void __ovld prefetch(const __global uint8 *, size_t);
12853 void __ovld prefetch(const __global long8 *, size_t);
12854 void __ovld prefetch(const __global ulong8 *, size_t);
12855 void __ovld prefetch(const __global float8 *, size_t);
12856 void __ovld prefetch(const __global char16 *, size_t);
12857 void __ovld prefetch(const __global uchar16 *, size_t);
12858 void __ovld prefetch(const __global short16 *, size_t);
12859 void __ovld prefetch(const __global ushort16 *, size_t);
12860 void __ovld prefetch(const __global int16 *, size_t);
12861 void __ovld prefetch(const __global uint16 *, size_t);
12862 void __ovld prefetch(const __global long16 *, size_t);
12863 void __ovld prefetch(const __global ulong16 *, size_t);
12864 void __ovld prefetch(const __global float16 *, size_t);
12865 #ifdef cl_khr_fp64
12866 void __ovld prefetch(const __global double *, size_t);
12867 void __ovld prefetch(const __global double2 *, size_t);
12868 void __ovld prefetch(const __global double3 *, size_t);
12869 void __ovld prefetch(const __global double4 *, size_t);
12870 void __ovld prefetch(const __global double8 *, size_t);
12871 void __ovld prefetch(const __global double16 *, size_t);
12872 #endif //cl_khr_fp64
12873 #ifdef cl_khr_fp16
12874 void __ovld prefetch(const __global half *, size_t);
12875 void __ovld prefetch(const __global half2 *, size_t);
12876 void __ovld prefetch(const __global half3 *, size_t);
12877 void __ovld prefetch(const __global half4 *, size_t);
12878 void __ovld prefetch(const __global half8 *, size_t);
12879 void __ovld prefetch(const __global half16 *, size_t);
12880 #endif // cl_khr_fp16
12881 
12882 // OpenCL v1.1 s6.11.1, v1.2 s6.12.11 - Atomic Functions
12883 
12884 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
12885 #pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
12886 #pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
12887 #endif
12888 /**
12889  * Read the 32-bit value (referred to as old)
12890  * stored at location pointed by p. Compute
12891  * (old + val) and store result at location
12892  * pointed by p. The function returns old.
12893  */
12894 int __ovld atomic_add(volatile __global int *, int);
12895 uint __ovld atomic_add(volatile __global uint *, uint);
12896 int __ovld atomic_add(volatile __local int *, int);
12897 uint __ovld atomic_add(volatile __local uint *, uint);
12898 #ifdef __OPENCL_CPP_VERSION__
12899 int __ovld atomic_add(volatile int *, int);
12900 uint __ovld atomic_add(volatile uint *, uint);
12901 #endif
12902 
12903 #if defined(cl_khr_global_int32_base_atomics)
12904 int __ovld atom_add(volatile __global int *, int);
12905 uint __ovld atom_add(volatile __global uint *, uint);
12906 #endif
12907 #if defined(cl_khr_local_int32_base_atomics)
12908 int __ovld atom_add(volatile __local int *, int);
12909 uint __ovld atom_add(volatile __local uint *, uint);
12910 #endif
12911 
12912 #if defined(cl_khr_int64_base_atomics)
12913 long __ovld atom_add(volatile __global long *, long);
12914 ulong __ovld atom_add(volatile __global ulong *, ulong);
12915 long __ovld atom_add(volatile __local long *, long);
12916 ulong __ovld atom_add(volatile __local ulong *, ulong);
12917 #endif
12918 
12919 /**
12920  * Read the 32-bit value (referred to as old) stored at location pointed by p.
12921  * Compute (old - val) and store result at location pointed by p. The function
12922  * returns old.
12923  */
12924 int __ovld atomic_sub(volatile __global int *, int);
12925 uint __ovld atomic_sub(volatile __global uint *, uint);
12926 int __ovld atomic_sub(volatile __local int *, int);
12927 uint __ovld atomic_sub(volatile __local uint *, uint);
12928 #ifdef __OPENCL_CPP_VERSION__
12929 int __ovld atomic_sub(volatile int *, int);
12930 uint __ovld atomic_sub(volatile uint *, uint);
12931 #endif
12932 
12933 #if defined(cl_khr_global_int32_base_atomics)
12934 int __ovld atom_sub(volatile __global int *, int);
12935 uint __ovld atom_sub(volatile __global uint *, uint);
12936 #endif
12937 #if defined(cl_khr_local_int32_base_atomics)
12938 int __ovld atom_sub(volatile __local int *, int);
12939 uint __ovld atom_sub(volatile __local uint *, uint);
12940 #endif
12941 
12942 #if defined(cl_khr_int64_base_atomics)
12943 long __ovld atom_sub(volatile __global long *, long);
12944 ulong __ovld atom_sub(volatile __global ulong *, ulong);
12945 long __ovld atom_sub(volatile __local long *, long);
12946 ulong __ovld atom_sub(volatile __local ulong *, ulong);
12947 #endif
12948 
12949 /**
12950  * Swaps the old value stored at location p
12951  * with new value given by val. Returns old
12952  * value.
12953  */
12954 int __ovld atomic_xchg(volatile __global int *, int);
12955 uint __ovld atomic_xchg(volatile __global uint *, uint);
12956 int __ovld atomic_xchg(volatile __local int *, int);
12957 uint __ovld atomic_xchg(volatile __local uint *, uint);
12958 float __ovld atomic_xchg(volatile __global float *, float);
12959 float __ovld atomic_xchg(volatile __local float *, float);
12960 #ifdef __OPENCL_CPP_VERSION__
12961 int __ovld atomic_xchg(volatile int *, int);
12962 uint __ovld atomic_xchg(volatile uint *, uint);
12963 float __ovld atomic_xchg(volatile float *, float);
12964 #endif
12965 
12966 #if defined(cl_khr_global_int32_base_atomics)
12967 int __ovld atom_xchg(volatile __global int *, int);
12968 uint __ovld atom_xchg(volatile __global uint *, uint);
12969 #endif
12970 #if defined(cl_khr_local_int32_base_atomics)
12971 int __ovld atom_xchg(volatile __local int *, int);
12972 uint __ovld atom_xchg(volatile __local uint *, uint);
12973 #endif
12974 
12975 #if defined(cl_khr_int64_base_atomics)
12976 long __ovld atom_xchg(volatile __global long *, long);
12977 long __ovld atom_xchg(volatile __local long *, long);
12978 ulong __ovld atom_xchg(volatile __global ulong *, ulong);
12979 ulong __ovld atom_xchg(volatile __local ulong *, ulong);
12980 #endif
12981 
12982 /**
12983  * Read the 32-bit value (referred to as old)
12984  * stored at location pointed by p. Compute
12985  * (old + 1) and store result at location
12986  * pointed by p. The function returns old.
12987  */
12988 int __ovld atomic_inc(volatile __global int *);
12989 uint __ovld atomic_inc(volatile __global uint *);
12990 int __ovld atomic_inc(volatile __local int *);
12991 uint __ovld atomic_inc(volatile __local uint *);
12992 #ifdef __OPENCL_CPP_VERSION__
12993 int __ovld atomic_inc(volatile int *);
12994 uint __ovld atomic_inc(volatile uint *);
12995 #endif
12996 
12997 #if defined(cl_khr_global_int32_base_atomics)
12998 int __ovld atom_inc(volatile __global int *);
12999 uint __ovld atom_inc(volatile __global uint *);
13000 #endif
13001 #if defined(cl_khr_local_int32_base_atomics)
13002 int __ovld atom_inc(volatile __local int *);
13003 uint __ovld atom_inc(volatile __local uint *);
13004 #endif
13005 
13006 #if defined(cl_khr_int64_base_atomics)
13007 long __ovld atom_inc(volatile __global long *);
13008 ulong __ovld atom_inc(volatile __global ulong *);
13009 long __ovld atom_inc(volatile __local long *);
13010 ulong __ovld atom_inc(volatile __local ulong *);
13011 #endif
13012 
13013 /**
13014  * Read the 32-bit value (referred to as old)
13015  * stored at location pointed by p. Compute
13016  * (old - 1) and store result at location
13017  * pointed by p. The function returns old.
13018  */
13019 int __ovld atomic_dec(volatile __global int *);
13020 uint __ovld atomic_dec(volatile __global uint *);
13021 int __ovld atomic_dec(volatile __local int *);
13022 uint __ovld atomic_dec(volatile __local uint *);
13023 #ifdef __OPENCL_CPP_VERSION__
13024 int __ovld atomic_dec(volatile int *);
13025 uint __ovld atomic_dec(volatile uint *);
13026 #endif
13027 
13028 #if defined(cl_khr_global_int32_base_atomics)
13029 int __ovld atom_dec(volatile __global int *);
13030 uint __ovld atom_dec(volatile __global uint *);
13031 #endif
13032 #if defined(cl_khr_local_int32_base_atomics)
13033 int __ovld atom_dec(volatile __local int *);
13034 uint __ovld atom_dec(volatile __local uint *);
13035 #endif
13036 
13037 #if defined(cl_khr_int64_base_atomics)
13038 long __ovld atom_dec(volatile __global long *);
13039 ulong __ovld atom_dec(volatile __global ulong *);
13040 long __ovld atom_dec(volatile __local long *);
13041 ulong __ovld atom_dec(volatile __local ulong *);
13042 #endif
13043 
13044 /**
13045  * Read the 32-bit value (referred to as old)
13046  * stored at location pointed by p. Compute
13047  * (old == cmp) ? val : old and store result at
13048  * location pointed by p. The function
13049  * returns old.
13050  */
13051 int __ovld atomic_cmpxchg(volatile __global int *, int, int);
13052 uint __ovld atomic_cmpxchg(volatile __global uint *, uint, uint);
13053 int __ovld atomic_cmpxchg(volatile __local int *, int, int);
13054 uint __ovld atomic_cmpxchg(volatile __local uint *, uint, uint);
13055 #ifdef __OPENCL_CPP_VERSION__
13056 int __ovld atomic_cmpxchg(volatile int *, int, int);
13057 uint __ovld atomic_cmpxchg(volatile uint *, uint, uint);
13058 #endif
13059 
13060 #if defined(cl_khr_global_int32_base_atomics)
13061 int __ovld atom_cmpxchg(volatile __global int *, int, int);
13062 uint __ovld atom_cmpxchg(volatile __global uint *, uint, uint);
13063 #endif
13064 #if defined(cl_khr_local_int32_base_atomics)
13065 int __ovld atom_cmpxchg(volatile __local int *, int, int);
13066 uint __ovld atom_cmpxchg(volatile __local uint *, uint, uint);
13067 #endif
13068 
13069 #if defined(cl_khr_int64_base_atomics)
13070 long __ovld atom_cmpxchg(volatile __global long *, long, long);
13071 ulong __ovld atom_cmpxchg(volatile __global ulong *, ulong, ulong);
13072 long __ovld atom_cmpxchg(volatile __local long *, long, long);
13073 ulong __ovld atom_cmpxchg(volatile __local ulong *, ulong, ulong);
13074 #endif
13075 
13076 /**
13077  * Read the 32-bit value (referred to as old)
13078  * stored at location pointed by p. Compute
13079  * min(old, val) and store minimum value at
13080  * location pointed by p. The function
13081  * returns old.
13082  */
13083 int __ovld atomic_min(volatile __global int *, int);
13084 uint __ovld atomic_min(volatile __global uint *, uint);
13085 int __ovld atomic_min(volatile __local int *, int);
13086 uint __ovld atomic_min(volatile __local uint *, uint);
13087 #ifdef __OPENCL_CPP_VERSION__
13088 int __ovld atomic_min(volatile int *, int);
13089 uint __ovld atomic_min(volatile uint *, uint);
13090 #endif
13091 
13092 #if defined(cl_khr_global_int32_extended_atomics)
13093 int __ovld atom_min(volatile __global int *, int);
13094 uint __ovld atom_min(volatile __global uint *, uint);
13095 #endif
13096 #if defined(cl_khr_local_int32_extended_atomics)
13097 int __ovld atom_min(volatile __local int *, int);
13098 uint __ovld atom_min(volatile __local uint *, uint);
13099 #endif
13100 
13101 #if defined(cl_khr_int64_extended_atomics)
13102 long __ovld atom_min(volatile __global long *, long);
13103 ulong __ovld atom_min(volatile __global ulong *, ulong);
13104 long __ovld atom_min(volatile __local long *, long);
13105 ulong __ovld atom_min(volatile __local ulong *, ulong);
13106 #endif
13107 
13108 /**
13109  * Read the 32-bit value (referred to as old)
13110  * stored at location pointed by p. Compute
13111  * max(old, val) and store maximum value at
13112  * location pointed by p. The function
13113  * returns old.
13114  */
13115 int __ovld atomic_max(volatile __global int *, int);
13116 uint __ovld atomic_max(volatile __global uint *, uint);
13117 int __ovld atomic_max(volatile __local int *, int);
13118 uint __ovld atomic_max(volatile __local uint *, uint);
13119 #ifdef __OPENCL_CPP_VERSION__
13120 int __ovld atomic_max(volatile int *, int);
13121 uint __ovld atomic_max(volatile uint *, uint);
13122 #endif
13123 
13124 #if defined(cl_khr_global_int32_extended_atomics)
13125 int __ovld atom_max(volatile __global int *, int);
13126 uint __ovld atom_max(volatile __global uint *, uint);
13127 #endif
13128 #if defined(cl_khr_local_int32_extended_atomics)
13129 int __ovld atom_max(volatile __local int *, int);
13130 uint __ovld atom_max(volatile __local uint *, uint);
13131 #endif
13132 
13133 #if defined(cl_khr_int64_extended_atomics)
13134 long __ovld atom_max(volatile __global long *, long);
13135 ulong __ovld atom_max(volatile __global ulong *, ulong);
13136 long __ovld atom_max(volatile __local long *, long);
13137 ulong __ovld atom_max(volatile __local ulong *, ulong);
13138 #endif
13139 
13140 /**
13141  * Read the 32-bit value (referred to as old)
13142  * stored at location pointed by p. Compute
13143  * (old & val) and store result at location
13144  * pointed by p. The function returns old.
13145  */
13146 int __ovld atomic_and(volatile __global int *, int);
13147 uint __ovld atomic_and(volatile __global uint *, uint);
13148 int __ovld atomic_and(volatile __local int *, int);
13149 uint __ovld atomic_and(volatile __local uint *, uint);
13150 #ifdef __OPENCL_CPP_VERSION__
13151 int __ovld atomic_and(volatile int *, int);
13152 uint __ovld atomic_and(volatile uint *, uint);
13153 #endif
13154 
13155 #if defined(cl_khr_global_int32_extended_atomics)
13156 int __ovld atom_and(volatile __global int *, int);
13157 uint __ovld atom_and(volatile __global uint *, uint);
13158 #endif
13159 #if defined(cl_khr_local_int32_extended_atomics)
13160 int __ovld atom_and(volatile __local int *, int);
13161 uint __ovld atom_and(volatile __local uint *, uint);
13162 #endif
13163 
13164 #if defined(cl_khr_int64_extended_atomics)
13165 long __ovld atom_and(volatile __global long *, long);
13166 ulong __ovld atom_and(volatile __global ulong *, ulong);
13167 long __ovld atom_and(volatile __local long *, long);
13168 ulong __ovld atom_and(volatile __local ulong *, ulong);
13169 #endif
13170 
13171 /**
13172  * Read the 32-bit value (referred to as old)
13173  * stored at location pointed by p. Compute
13174  * (old | val) and store result at location
13175  * pointed by p. The function returns old.
13176  */
13177 int __ovld atomic_or(volatile __global int *, int);
13178 uint __ovld atomic_or(volatile __global uint *, uint);
13179 int __ovld atomic_or(volatile __local int *, int);
13180 uint __ovld atomic_or(volatile __local uint *, uint);
13181 #ifdef __OPENCL_CPP_VERSION__
13182 int __ovld atomic_or(volatile int *, int);
13183 uint __ovld atomic_or(volatile uint *, uint);
13184 #endif
13185 
13186 #if defined(cl_khr_global_int32_extended_atomics)
13187 int __ovld atom_or(volatile __global int *, int);
13188 uint __ovld atom_or(volatile __global uint *, uint);
13189 #endif
13190 #if defined(cl_khr_local_int32_extended_atomics)
13191 int __ovld atom_or(volatile __local int *, int);
13192 uint __ovld atom_or(volatile __local uint *, uint);
13193 #endif
13194 
13195 #if defined(cl_khr_int64_extended_atomics)
13196 long __ovld atom_or(volatile __global long *, long);
13197 ulong __ovld atom_or(volatile __global ulong *, ulong);
13198 long __ovld atom_or(volatile __local long *, long);
13199 ulong __ovld atom_or(volatile __local ulong *, ulong);
13200 #endif
13201 
13202 /**
13203  * Read the 32-bit value (referred to as old)
13204  * stored at location pointed by p. Compute
13205  * (old ^ val) and store result at location
13206  * pointed by p. The function returns old.
13207  */
13208 int __ovld atomic_xor(volatile __global int *, int);
13209 uint __ovld atomic_xor(volatile __global uint *, uint);
13210 int __ovld atomic_xor(volatile __local int *, int);
13211 uint __ovld atomic_xor(volatile __local uint *, uint);
13212 #ifdef __OPENCL_CPP_VERSION__
13213 int __ovld atomic_xor(volatile int *, int);
13214 uint __ovld atomic_xor(volatile uint *, uint);
13215 #endif
13216 
13217 #if defined(cl_khr_global_int32_extended_atomics)
13218 int __ovld atom_xor(volatile __global int *, int);
13219 uint __ovld atom_xor(volatile __global uint *, uint);
13220 #endif
13221 #if defined(cl_khr_local_int32_extended_atomics)
13222 int __ovld atom_xor(volatile __local int *, int);
13223 uint __ovld atom_xor(volatile __local uint *, uint);
13224 #endif
13225 
13226 #if defined(cl_khr_int64_extended_atomics)
13227 long __ovld atom_xor(volatile __global long *, long);
13228 ulong __ovld atom_xor(volatile __global ulong *, ulong);
13229 long __ovld atom_xor(volatile __local long *, long);
13230 ulong __ovld atom_xor(volatile __local ulong *, ulong);
13231 #endif
13232 
13233 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13234 #pragma OPENCL EXTENSION cl_khr_int64_base_atomics : disable
13235 #pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : disable
13236 #endif
13237 
13238 // OpenCL v2.0 s6.13.11 - Atomics Functions
13239 
13240 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
13241 
13242 // double atomics support requires extensions cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics
13243 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13244 #pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
13245 #pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
13246 #endif
13247 
13248 // atomic_init()
13249 #if defined(__opencl_c_generic_address_space)
13250 void __ovld atomic_init(volatile atomic_int *, int);
13251 void __ovld atomic_init(volatile atomic_uint *, uint);
13252 void __ovld atomic_init(volatile atomic_float *, float);
13253 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13254 void __ovld atomic_init(volatile atomic_long *, long);
13255 void __ovld atomic_init(volatile atomic_ulong *, ulong);
13256 #ifdef cl_khr_fp64
13257 void __ovld atomic_init(volatile atomic_double *, double);
13258 #endif //cl_khr_fp64
13259 #endif
13260 #endif //defined(__opencl_c_generic_address_space)
13261 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13262 void __ovld atomic_init(volatile __global atomic_int *, int);
13263 void __ovld atomic_init(volatile __local atomic_int *, int);
13264 void __ovld atomic_init(volatile __global atomic_uint *, uint);
13265 void __ovld atomic_init(volatile __local atomic_uint *, uint);
13266 void __ovld atomic_init(volatile __global atomic_float *, float);
13267 void __ovld atomic_init(volatile __local atomic_float *, float);
13268 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13269 void __ovld atomic_init(volatile __global atomic_long *, long);
13270 void __ovld atomic_init(volatile __local atomic_long *, long);
13271 void __ovld atomic_init(volatile __global atomic_ulong *, ulong);
13272 void __ovld atomic_init(volatile __local atomic_ulong *, ulong);
13273 #ifdef cl_khr_fp64
13274 void __ovld atomic_init(volatile __global atomic_double *, double);
13275 void __ovld atomic_init(volatile __local atomic_double *, double);
13276 #endif //cl_khr_fp64
13277 #endif
13278 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13279 
13280 // atomic_work_item_fence()
13282 
13283 // atomic_fetch()
13284 // OpenCL v2.0 s6.13.11.7.5:
13285 // add/sub: atomic type argument can be uintptr_t/intptr_t, value type argument can be ptrdiff_t.
13286 
13287 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
13288 #if defined(__opencl_c_generic_address_space)
13289 int __ovld atomic_fetch_add(volatile atomic_int *, int);
13290 uint __ovld atomic_fetch_add(volatile atomic_uint *, uint);
13291 int __ovld atomic_fetch_sub(volatile atomic_int *, int);
13292 uint __ovld atomic_fetch_sub(volatile atomic_uint *, uint);
13293 int __ovld atomic_fetch_or(volatile atomic_int *, int);
13294 uint __ovld atomic_fetch_or(volatile atomic_uint *, uint);
13295 int __ovld atomic_fetch_xor(volatile atomic_int *, int);
13296 uint __ovld atomic_fetch_xor(volatile atomic_uint *, uint);
13297 int __ovld atomic_fetch_and(volatile atomic_int *, int);
13298 uint __ovld atomic_fetch_and(volatile atomic_uint *, uint);
13299 int __ovld atomic_fetch_min(volatile atomic_int *, int);
13300 uint __ovld atomic_fetch_min(volatile atomic_uint *, uint);
13301 int __ovld atomic_fetch_max(volatile atomic_int *, int);
13302 uint __ovld atomic_fetch_max(volatile atomic_uint *, uint);
13303 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13304 long __ovld atomic_fetch_add(volatile atomic_long *, long);
13305 ulong __ovld atomic_fetch_add(volatile atomic_ulong *, ulong);
13306 long __ovld atomic_fetch_sub(volatile atomic_long *, long);
13307 ulong __ovld atomic_fetch_sub(volatile atomic_ulong *, ulong);
13308 long __ovld atomic_fetch_or(volatile atomic_long *, long);
13309 ulong __ovld atomic_fetch_or(volatile atomic_ulong *, ulong);
13310 long __ovld atomic_fetch_xor(volatile atomic_long *, long);
13311 ulong __ovld atomic_fetch_xor(volatile atomic_ulong *, ulong);
13312 long __ovld atomic_fetch_and(volatile atomic_long *, long);
13313 ulong __ovld atomic_fetch_and(volatile atomic_ulong *, ulong);
13314 long __ovld atomic_fetch_min(volatile atomic_long *, long);
13315 ulong __ovld atomic_fetch_min(volatile atomic_ulong *, ulong);
13316 long __ovld atomic_fetch_max(volatile atomic_long *, long);
13317 ulong __ovld atomic_fetch_max(volatile atomic_ulong *, ulong);
13318 uintptr_t __ovld atomic_fetch_add(volatile atomic_uintptr_t *, ptrdiff_t);
13319 uintptr_t __ovld atomic_fetch_sub(volatile atomic_uintptr_t *, ptrdiff_t);
13320 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13321 #endif //defined(__opencl_c_generic_address_space)
13322 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13323 int __ovld atomic_fetch_add(volatile __global atomic_int *, int);
13324 int __ovld atomic_fetch_add(volatile __local atomic_int *, int);
13325 uint __ovld atomic_fetch_add(volatile __global atomic_uint *, uint);
13326 uint __ovld atomic_fetch_add(volatile __local atomic_uint *, uint);
13327 int __ovld atomic_fetch_sub(volatile __global atomic_int *, int);
13328 int __ovld atomic_fetch_sub(volatile __local atomic_int *, int);
13329 uint __ovld atomic_fetch_sub(volatile __global atomic_uint *, uint);
13330 uint __ovld atomic_fetch_sub(volatile __local atomic_uint *, uint);
13331 int __ovld atomic_fetch_or(volatile __global atomic_int *, int);
13332 int __ovld atomic_fetch_or(volatile __local atomic_int *, int);
13333 uint __ovld atomic_fetch_or(volatile __global atomic_uint *, uint);
13334 uint __ovld atomic_fetch_or(volatile __local atomic_uint *, uint);
13335 int __ovld atomic_fetch_xor(volatile __global atomic_int *, int);
13336 int __ovld atomic_fetch_xor(volatile __local atomic_int *, int);
13337 uint __ovld atomic_fetch_xor(volatile __global atomic_uint *, uint);
13338 uint __ovld atomic_fetch_xor(volatile __local atomic_uint *, uint);
13339 int __ovld atomic_fetch_and(volatile __global atomic_int *, int);
13340 int __ovld atomic_fetch_and(volatile __local atomic_int *, int);
13341 uint __ovld atomic_fetch_and(volatile __global atomic_uint *, uint);
13342 uint __ovld atomic_fetch_and(volatile __local atomic_uint *, uint);
13343 int __ovld atomic_fetch_min(volatile __global atomic_int *, int);
13344 int __ovld atomic_fetch_min(volatile __local atomic_int *, int);
13345 uint __ovld atomic_fetch_min(volatile __global atomic_uint *, uint);
13346 uint __ovld atomic_fetch_min(volatile __local atomic_uint *, uint);
13347 int __ovld atomic_fetch_max(volatile __global atomic_int *, int);
13348 int __ovld atomic_fetch_max(volatile __local atomic_int *, int);
13349 uint __ovld atomic_fetch_max(volatile __global atomic_uint *, uint);
13350 uint __ovld atomic_fetch_max(volatile __local atomic_uint *, uint);
13351 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13352 long __ovld atomic_fetch_add(volatile __global atomic_long *, long);
13353 long __ovld atomic_fetch_add(volatile __local atomic_long *, long);
13354 ulong __ovld atomic_fetch_add(volatile __global atomic_ulong *, ulong);
13355 ulong __ovld atomic_fetch_add(volatile __local atomic_ulong *, ulong);
13356 uintptr_t __ovld atomic_fetch_add(volatile __global atomic_uintptr_t *, ptrdiff_t);
13357 uintptr_t __ovld atomic_fetch_add(volatile __local atomic_uintptr_t *, ptrdiff_t);
13358 long __ovld atomic_fetch_sub(volatile __global atomic_long *, long);
13359 long __ovld atomic_fetch_sub(volatile __local atomic_long *, long);
13360 ulong __ovld atomic_fetch_sub(volatile __global atomic_ulong *, ulong);
13361 ulong __ovld atomic_fetch_sub(volatile __local atomic_ulong *, ulong);
13362 uintptr_t __ovld atomic_fetch_sub(volatile __global atomic_uintptr_t *, ptrdiff_t);
13363 uintptr_t __ovld atomic_fetch_sub(volatile __local atomic_uintptr_t *, ptrdiff_t);
13364 long __ovld atomic_fetch_or(volatile __global atomic_long *, long);
13365 long __ovld atomic_fetch_or(volatile __local atomic_long *, long);
13366 ulong __ovld atomic_fetch_or(volatile __global atomic_ulong *, ulong);
13367 ulong __ovld atomic_fetch_or(volatile __local atomic_ulong *, ulong);
13368 uintptr_t __ovld atomic_fetch_or(volatile __global atomic_uintptr_t *, intptr_t);
13369 uintptr_t __ovld atomic_fetch_or(volatile __local atomic_uintptr_t *, intptr_t);
13370 intptr_t __ovld atomic_fetch_or(volatile __global atomic_intptr_t *, uintptr_t);
13371 intptr_t __ovld atomic_fetch_or(volatile __local atomic_intptr_t *, uintptr_t);
13372 long __ovld atomic_fetch_xor(volatile __global atomic_long *, long);
13373 long __ovld atomic_fetch_xor(volatile __local atomic_long *, long);
13374 ulong __ovld atomic_fetch_xor(volatile __global atomic_ulong *, ulong);
13375 ulong __ovld atomic_fetch_xor(volatile __local atomic_ulong *, ulong);
13376 uintptr_t __ovld atomic_fetch_xor(volatile __global atomic_uintptr_t *, intptr_t);
13377 uintptr_t __ovld atomic_fetch_xor(volatile __local atomic_uintptr_t *, intptr_t);
13378 intptr_t __ovld atomic_fetch_xor(volatile __global atomic_intptr_t *, uintptr_t);
13379 intptr_t __ovld atomic_fetch_xor(volatile __local atomic_intptr_t *, uintptr_t);
13380 long __ovld atomic_fetch_and(volatile __global atomic_long *, long);
13381 long __ovld atomic_fetch_and(volatile __local atomic_long *, long);
13382 ulong __ovld atomic_fetch_and(volatile __global atomic_ulong *, ulong);
13383 ulong __ovld atomic_fetch_and(volatile __local atomic_ulong *, ulong);
13384 uintptr_t __ovld atomic_fetch_and(volatile __global atomic_uintptr_t *, intptr_t);
13385 uintptr_t __ovld atomic_fetch_and(volatile __local atomic_uintptr_t *, intptr_t);
13386 intptr_t __ovld atomic_fetch_and(volatile __global atomic_intptr_t *, uintptr_t);
13387 intptr_t __ovld atomic_fetch_and(volatile __local atomic_intptr_t *, uintptr_t);
13388 long __ovld atomic_fetch_min(volatile __global atomic_long *, long);
13389 long __ovld atomic_fetch_min(volatile __local atomic_long *, long);
13390 ulong __ovld atomic_fetch_min(volatile __global atomic_ulong *, ulong);
13391 ulong __ovld atomic_fetch_min(volatile __local atomic_ulong *, ulong);
13392 uintptr_t __ovld atomic_fetch_min(volatile __global atomic_uintptr_t *, intptr_t);
13393 uintptr_t __ovld atomic_fetch_min(volatile __local atomic_uintptr_t *, intptr_t);
13394 intptr_t __ovld atomic_fetch_min(volatile __global atomic_intptr_t *, uintptr_t);
13395 intptr_t __ovld atomic_fetch_min(volatile __local atomic_intptr_t *, uintptr_t);
13396 long __ovld atomic_fetch_max(volatile __global atomic_long *, long);
13397 long __ovld atomic_fetch_max(volatile __local atomic_long *, long);
13398 ulong __ovld atomic_fetch_max(volatile __global atomic_ulong *, ulong);
13399 ulong __ovld atomic_fetch_max(volatile __local atomic_ulong *, ulong);
13400 uintptr_t __ovld atomic_fetch_max(volatile __global atomic_uintptr_t *, uintptr_t);
13401 uintptr_t __ovld atomic_fetch_max(volatile __local atomic_uintptr_t *, uintptr_t);
13402 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13403 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13404 #endif
13405 
13406 #if defined(__opencl_c_atomic_scope_device)
13407 #if defined(__opencl_c_generic_address_space)
13408 int __ovld atomic_fetch_add_explicit(volatile atomic_int *, int, memory_order);
13409 uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *, uint, memory_order);
13410 int __ovld atomic_fetch_sub_explicit(volatile atomic_int *, int, memory_order);
13411 uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *, uint, memory_order);
13412 int __ovld atomic_fetch_or_explicit(volatile atomic_int *, int, memory_order);
13413 uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *, uint, memory_order);
13414 int __ovld atomic_fetch_xor_explicit(volatile atomic_int *, int, memory_order);
13415 uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *, uint, memory_order);
13416 int __ovld atomic_fetch_and_explicit(volatile atomic_int *, int, memory_order);
13417 uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *, uint, memory_order);
13418 int __ovld atomic_fetch_min_explicit(volatile atomic_int *, int, memory_order);
13419 uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *, uint, memory_order);
13420 int __ovld atomic_fetch_max_explicit(volatile atomic_int *, int, memory_order);
13421 uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *, uint, memory_order);
13422 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13423 long __ovld atomic_fetch_add_explicit(volatile atomic_long *, long, memory_order);
13424 ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *, ulong, memory_order);
13425 long __ovld atomic_fetch_sub_explicit(volatile atomic_long *, long, memory_order);
13426 ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *, ulong, memory_order);
13427 long __ovld atomic_fetch_or_explicit(volatile atomic_long *, long, memory_order);
13428 ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *, ulong, memory_order);
13429 long __ovld atomic_fetch_xor_explicit(volatile atomic_long *, long, memory_order);
13430 ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *, ulong, memory_order);
13431 long __ovld atomic_fetch_and_explicit(volatile atomic_long *, long, memory_order);
13432 ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *, ulong, memory_order);
13433 long __ovld atomic_fetch_min_explicit(volatile atomic_long *, long, memory_order);
13434 ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *, ulong, memory_order);
13435 long __ovld atomic_fetch_max_explicit(volatile atomic_long *, long, memory_order);
13436 ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *, ulong, memory_order);
13437 uintptr_t __ovld atomic_fetch_add_explicit(volatile atomic_uintptr_t *, ptrdiff_t, memory_order);
13438 uintptr_t __ovld atomic_fetch_sub_explicit(volatile atomic_uintptr_t *, ptrdiff_t, memory_order);
13439 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13440 #endif //defined(__opencl_c_generic_address_space)
13441 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13442 int __ovld atomic_fetch_add_explicit(volatile __global atomic_int *, int, memory_order);
13443 int __ovld atomic_fetch_add_explicit(volatile __local atomic_int *, int, memory_order);
13444 uint __ovld atomic_fetch_add_explicit(volatile __global atomic_uint *, uint, memory_order);
13445 uint __ovld atomic_fetch_add_explicit(volatile __local atomic_uint *, uint, memory_order);
13446 int __ovld atomic_fetch_sub_explicit(volatile __global atomic_int *, int, memory_order);
13447 int __ovld atomic_fetch_sub_explicit(volatile __local atomic_int *, int, memory_order);
13448 uint __ovld atomic_fetch_sub_explicit(volatile __global atomic_uint *, uint, memory_order);
13449 uint __ovld atomic_fetch_sub_explicit(volatile __local atomic_uint *, uint, memory_order);
13450 int __ovld atomic_fetch_or_explicit(volatile __global atomic_int *, int, memory_order);
13451 int __ovld atomic_fetch_or_explicit(volatile __local atomic_int *, int, memory_order);
13452 uint __ovld atomic_fetch_or_explicit(volatile __global atomic_uint *, uint, memory_order);
13453 uint __ovld atomic_fetch_or_explicit(volatile __local atomic_uint *, uint, memory_order);
13454 int __ovld atomic_fetch_xor_explicit(volatile __global atomic_int *, int, memory_order);
13455 int __ovld atomic_fetch_xor_explicit(volatile __local atomic_int *, int, memory_order);
13456 uint __ovld atomic_fetch_xor_explicit(volatile __global atomic_uint *, uint, memory_order);
13457 uint __ovld atomic_fetch_xor_explicit(volatile __local atomic_uint *, uint, memory_order);
13458 int __ovld atomic_fetch_and_explicit(volatile __global atomic_int *, int, memory_order);
13459 int __ovld atomic_fetch_and_explicit(volatile __local atomic_int *, int, memory_order);
13460 uint __ovld atomic_fetch_and_explicit(volatile __global atomic_uint *, uint, memory_order);
13461 uint __ovld atomic_fetch_and_explicit(volatile __local atomic_uint *, uint, memory_order);
13462 int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order);
13463 int __ovld atomic_fetch_min_explicit(volatile __local atomic_int *, int, memory_order);
13464 uint __ovld atomic_fetch_min_explicit(volatile __global atomic_uint *, uint, memory_order);
13465 uint __ovld atomic_fetch_min_explicit(volatile __local atomic_uint *, uint, memory_order);
13466 int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order);
13467 int __ovld atomic_fetch_max_explicit(volatile __local atomic_int *, int, memory_order);
13468 uint __ovld atomic_fetch_max_explicit(volatile __global atomic_uint *, uint, memory_order);
13469 uint __ovld atomic_fetch_max_explicit(volatile __local atomic_uint *, uint, memory_order);
13470 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13471 long __ovld atomic_fetch_add_explicit(volatile __global atomic_long *, long, memory_order);
13472 long __ovld atomic_fetch_add_explicit(volatile __local atomic_long *, long, memory_order);
13473 ulong __ovld atomic_fetch_add_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13474 ulong __ovld atomic_fetch_add_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13475 uintptr_t __ovld atomic_fetch_add_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order);
13476 uintptr_t __ovld atomic_fetch_add_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order);
13477 long __ovld atomic_fetch_sub_explicit(volatile __global atomic_long *, long, memory_order);
13478 long __ovld atomic_fetch_sub_explicit(volatile __local atomic_long *, long, memory_order);
13479 ulong __ovld atomic_fetch_sub_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13480 ulong __ovld atomic_fetch_sub_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13481 uintptr_t __ovld atomic_fetch_sub_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order);
13482 uintptr_t __ovld atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order);
13483 long __ovld atomic_fetch_or_explicit(volatile __global atomic_long *, long, memory_order);
13484 long __ovld atomic_fetch_or_explicit(volatile __local atomic_long *, long, memory_order);
13485 ulong __ovld atomic_fetch_or_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13486 ulong __ovld atomic_fetch_or_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13487 uintptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13488 uintptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13489 intptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13490 intptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13491 long __ovld atomic_fetch_xor_explicit(volatile __global atomic_long *, long, memory_order);
13492 long __ovld atomic_fetch_xor_explicit(volatile __local atomic_long *, long, memory_order);
13493 ulong __ovld atomic_fetch_xor_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13494 ulong __ovld atomic_fetch_xor_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13495 uintptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13496 uintptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13497 intptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13498 intptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13499 long __ovld atomic_fetch_and_explicit(volatile __global atomic_long *, long, memory_order);
13500 long __ovld atomic_fetch_and_explicit(volatile __local atomic_long *, long, memory_order);
13501 ulong __ovld atomic_fetch_and_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13502 ulong __ovld atomic_fetch_and_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13503 uintptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13504 uintptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13505 intptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13506 intptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13507 long __ovld atomic_fetch_min_explicit(volatile __global atomic_long *, long, memory_order);
13508 long __ovld atomic_fetch_min_explicit(volatile __local atomic_long *, long, memory_order);
13509 ulong __ovld atomic_fetch_min_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13510 ulong __ovld atomic_fetch_min_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13511 uintptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order);
13512 uintptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order);
13513 intptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order);
13514 intptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order);
13515 long __ovld atomic_fetch_max_explicit(volatile __global atomic_long *, long, memory_order);
13516 long __ovld atomic_fetch_max_explicit(volatile __local atomic_long *, long, memory_order);
13517 ulong __ovld atomic_fetch_max_explicit(volatile __global atomic_ulong *, ulong, memory_order);
13518 ulong __ovld atomic_fetch_max_explicit(volatile __local atomic_ulong *, ulong, memory_order);
13519 uintptr_t __ovld atomic_fetch_max_explicit(volatile __global atomic_uintptr_t *, uintptr_t, memory_order);
13520 uintptr_t __ovld atomic_fetch_max_explicit(volatile __local atomic_uintptr_t *, uintptr_t, memory_order);
13521 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13522 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13523 #endif
13524 
13525 #if defined(__opencl_c_generic_address_space)
13526 int __ovld atomic_fetch_add_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13528 int __ovld atomic_fetch_sub_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13530 int __ovld atomic_fetch_or_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13532 int __ovld atomic_fetch_xor_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13534 int __ovld atomic_fetch_and_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13536 int __ovld atomic_fetch_min_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13538 int __ovld atomic_fetch_max_explicit(volatile atomic_int *, int, memory_order, memory_scope);
13540 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13541 long __ovld atomic_fetch_add_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13543 long __ovld atomic_fetch_sub_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13545 long __ovld atomic_fetch_or_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13547 long __ovld atomic_fetch_xor_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13549 long __ovld atomic_fetch_and_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13551 long __ovld atomic_fetch_min_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13553 long __ovld atomic_fetch_max_explicit(volatile atomic_long *, long, memory_order, memory_scope);
13557 #endif
13558 #endif //defined(__opencl_c_generic_address_space)
13559 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13560 int __ovld atomic_fetch_add_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13561 int __ovld atomic_fetch_add_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13564 int __ovld atomic_fetch_sub_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13565 int __ovld atomic_fetch_sub_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13568 int __ovld atomic_fetch_or_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13569 int __ovld atomic_fetch_or_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13572 int __ovld atomic_fetch_xor_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13573 int __ovld atomic_fetch_xor_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13576 int __ovld atomic_fetch_and_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13577 int __ovld atomic_fetch_and_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13580 int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13581 int __ovld atomic_fetch_min_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13584 int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
13585 int __ovld atomic_fetch_max_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
13588 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13589 long __ovld atomic_fetch_add_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13590 long __ovld atomic_fetch_add_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13591 uintptr_t __ovld atomic_fetch_add_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13592 uintptr_t __ovld atomic_fetch_add_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13593 ulong __ovld atomic_fetch_add_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13594 ulong __ovld atomic_fetch_add_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13595 long __ovld atomic_fetch_sub_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13596 long __ovld atomic_fetch_sub_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13597 ulong __ovld atomic_fetch_sub_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13598 ulong __ovld atomic_fetch_sub_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13599 uintptr_t __ovld atomic_fetch_sub_explicit(volatile __global atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13600 uintptr_t __ovld atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *, ptrdiff_t, memory_order, memory_scope);
13601 long __ovld atomic_fetch_or_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13602 long __ovld atomic_fetch_or_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13603 ulong __ovld atomic_fetch_or_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13604 ulong __ovld atomic_fetch_or_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13605 uintptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13606 uintptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13607 intptr_t __ovld atomic_fetch_or_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13608 intptr_t __ovld atomic_fetch_or_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13609 long __ovld atomic_fetch_xor_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13610 long __ovld atomic_fetch_xor_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13611 ulong __ovld atomic_fetch_xor_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13612 ulong __ovld atomic_fetch_xor_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13613 uintptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13614 uintptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13615 intptr_t __ovld atomic_fetch_xor_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13616 intptr_t __ovld atomic_fetch_xor_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13617 long __ovld atomic_fetch_and_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13618 long __ovld atomic_fetch_and_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13619 ulong __ovld atomic_fetch_and_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13620 ulong __ovld atomic_fetch_and_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13621 uintptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13622 uintptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13623 intptr_t __ovld atomic_fetch_and_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13624 intptr_t __ovld atomic_fetch_and_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13625 long __ovld atomic_fetch_min_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13626 long __ovld atomic_fetch_min_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13627 ulong __ovld atomic_fetch_min_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13628 ulong __ovld atomic_fetch_min_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13629 uintptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13630 uintptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_uintptr_t *, intptr_t, memory_order, memory_scope);
13631 intptr_t __ovld atomic_fetch_min_explicit(volatile __global atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13632 intptr_t __ovld atomic_fetch_min_explicit(volatile __local atomic_intptr_t *, uintptr_t, memory_order, memory_scope);
13633 long __ovld atomic_fetch_max_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
13634 long __ovld atomic_fetch_max_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
13635 ulong __ovld atomic_fetch_max_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
13636 ulong __ovld atomic_fetch_max_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
13637 uintptr_t __ovld atomic_fetch_max_explicit(volatile __global atomic_uintptr_t *, uintptr_t, memory_order, memory_scope);
13638 uintptr_t __ovld atomic_fetch_max_explicit(volatile __local atomic_uintptr_t *, uintptr_t, memory_order, memory_scope);
13639 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13640 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13641 
13642 // The functionality added by cl_ext_float_atomics extension
13643 #if defined(cl_ext_float_atomics)
13644 
13645 #if defined(__opencl_c_ext_fp16_global_atomic_load_store)
13646 void __ovld atomic_store(volatile __global atomic_half *, half);
13647 void __ovld atomic_store_explicit(volatile __global atomic_half *,
13648  half, memory_order);
13649 void __ovld atomic_store_explicit(volatile __global atomic_half *,
13650  half, memory_order, memory_scope);
13651 half __ovld atomic_load(volatile __global atomic_half *);
13652 half __ovld atomic_load_explicit(volatile __global atomic_half *,
13653  memory_order);
13654 half __ovld atomic_load_explicit(volatile __global atomic_half *,
13656 half __ovld atomic_exchange(volatile __global atomic_half *, half);
13657 half __ovld atomic_exchange_explicit(volatile __global atomic_half *,
13658  half, memory_order);
13659 half __ovld atomic_exchange_explicit(volatile __global atomic_half *,
13660  half, memory_order, memory_scope);
13661 #endif // defined(__opencl_c_ext_fp16_global_atomic_load_store)
13662 
13663 #if defined(__opencl_c_ext_fp16_local_atomic_load_store)
13664 void __ovld atomic_store(volatile __local atomic_half *, half);
13665 void __ovld atomic_store_explicit(volatile __local atomic_half *,
13666  half, memory_order);
13667 void __ovld atomic_store_explicit(volatile __local atomic_half *,
13668  half, memory_order, memory_scope);
13669 half __ovld atomic_load(volatile __local atomic_half *);
13670 half __ovld atomic_load_explicit(volatile __local atomic_half *,
13671  memory_order);
13672 half __ovld atomic_load_explicit(volatile __local atomic_half *,
13674 half __ovld atomic_exchange(volatile __local atomic_half *, half);
13675 half __ovld atomic_exchange_explicit(volatile __local atomic_half *,
13676  half, memory_order);
13677 half __ovld atomic_exchange_explicit(volatile __local atomic_half *,
13678  half, memory_order, memory_scope);
13679 #endif // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13680 
13681 #if defined(__opencl_c_ext_fp16_global_atomic_load_store) && \
13682  defined(__opencl_c_ext_fp16_local_atomic_load_store)
13683 void __ovld atomic_store(volatile atomic_half *, half);
13684 void __ovld atomic_store_explicit(volatile atomic_half *, half,
13685  memory_order);
13686 void __ovld atomic_store_explicit(volatile atomic_half *, half,
13688 half __ovld atomic_load(volatile atomic_half *);
13689 half __ovld atomic_load_explicit(volatile atomic_half *,
13690  memory_order);
13691 half __ovld atomic_load_explicit(volatile atomic_half *,
13693 half __ovld atomic_exchange(volatile atomic_half *, half);
13694 half __ovld atomic_exchange_explicit(volatile atomic_half *, half,
13695  memory_order);
13696 half __ovld atomic_exchange_explicit(volatile atomic_half *, half,
13698 #endif // defined(__opencl_c_ext_fp16_global_atomic_load_store) &&
13699  // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13700 
13701 #if defined(__opencl_c_ext_fp16_global_atomic_min_max)
13702 half __ovld atomic_fetch_min(volatile __global atomic_half *, half);
13703 half __ovld atomic_fetch_max(volatile __global atomic_half *, half);
13704 half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *,
13705  half, memory_order);
13706 half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *,
13707  half, memory_order);
13708 half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *,
13709  half, memory_order, memory_scope);
13710 half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *,
13711  half, memory_order, memory_scope);
13712 #endif // defined(__opencl_c_ext_fp16_global_atomic_min_max)
13713 
13714 #if defined(__opencl_c_ext_fp16_local_atomic_min_max)
13715 half __ovld atomic_fetch_min(volatile __local atomic_half *, half);
13716 half __ovld atomic_fetch_max(volatile __local atomic_half *, half);
13717 half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *,
13718  half, memory_order);
13719 half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *,
13720  half, memory_order);
13721 half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *,
13722  half, memory_order, memory_scope);
13723 half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *,
13724  half, memory_order, memory_scope);
13725 #endif // defined(__opencl_c_ext_fp16_local_atomic_min_max)
13726 
13727 #if defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13728  defined(__opencl_c_ext_fp16_local_atomic_min_max)
13729 half __ovld atomic_fetch_min(volatile atomic_half *, half);
13730 half __ovld atomic_fetch_max(volatile atomic_half *, half);
13731 half __ovld atomic_fetch_min_explicit(volatile atomic_half *,
13732  half, memory_order);
13733 half __ovld atomic_fetch_max_explicit(volatile atomic_half *,
13734  half, memory_order);
13735 half __ovld atomic_fetch_min_explicit(volatile atomic_half *,
13736  half, memory_order, memory_scope);
13737 half __ovld atomic_fetch_max_explicit(volatile atomic_half *,
13738  half, memory_order, memory_scope);
13739 #endif // defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13740  defined(__opencl_c_ext_fp16_local_atomic_min_max)
13741 
13742 #if defined(__opencl_c_ext_fp32_global_atomic_min_max)
13743 float __ovld atomic_fetch_min(volatile __global atomic_float *, float);
13744 float __ovld atomic_fetch_max(volatile __global atomic_float *, float);
13745 float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *,
13746  float, memory_order);
13747 float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *,
13748  float, memory_order);
13749 float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *,
13750  float, memory_order, memory_scope);
13751 float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *,
13752  float, memory_order, memory_scope);
13753 #endif // defined(__opencl_c_ext_fp32_global_atomic_min_max)
13754 
13755 #if defined(__opencl_c_ext_fp32_local_atomic_min_max)
13756 float __ovld atomic_fetch_min(volatile __local atomic_float *, float);
13757 float __ovld atomic_fetch_max(volatile __local atomic_float *, float);
13758 float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *,
13759  float, memory_order);
13760 float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *,
13761  float, memory_order);
13762 float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *,
13763  float, memory_order, memory_scope);
13764 float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *,
13765  float, memory_order, memory_scope);
13766 #endif // defined(__opencl_c_ext_fp32_local_atomic_min_max)
13767 
13768 #if defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
13769  defined(__opencl_c_ext_fp32_local_atomic_min_max)
13770 float __ovld atomic_fetch_min(volatile atomic_float *, float);
13771 float __ovld atomic_fetch_max(volatile atomic_float *, float);
13772 float __ovld atomic_fetch_min_explicit(volatile atomic_float *,
13773  float, memory_order);
13774 float __ovld atomic_fetch_max_explicit(volatile atomic_float *,
13775  float, memory_order);
13776 float __ovld atomic_fetch_min_explicit(volatile atomic_float *,
13777  float, memory_order, memory_scope);
13778 float __ovld atomic_fetch_max_explicit(volatile atomic_float *,
13779  float, memory_order, memory_scope);
13780 #endif // defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
13781  defined(__opencl_c_ext_fp32_local_atomic_min_max)
13782 
13783 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13784 #if defined(__opencl_c_ext_fp64_global_atomic_min_max)
13785 double __ovld atomic_fetch_min(volatile __global atomic_double *, double);
13786 double __ovld atomic_fetch_max(volatile __global atomic_double *, double);
13787 double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *,
13788  double, memory_order);
13789 double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *,
13790  double, memory_order);
13791 double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *,
13792  double, memory_order, memory_scope);
13793 double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *,
13794  double, memory_order, memory_scope);
13795 #endif // defined(__opencl_c_ext_fp64_global_atomic_min_max)
13796 
13797 #if defined(__opencl_c_ext_fp64_local_atomic_min_max)
13798 double __ovld atomic_fetch_min(volatile __local atomic_double *, double);
13799 double __ovld atomic_fetch_max(volatile __local atomic_double *, double);
13800 double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *,
13801  double, memory_order);
13802 double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *,
13803  double, memory_order);
13804 double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *,
13805  double, memory_order, memory_scope);
13806 double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *,
13807  double, memory_order, memory_scope);
13808 #endif // defined(__opencl_c_ext_fp64_local_atomic_min_max)
13809 
13810 #if defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
13811  defined(__opencl_c_ext_fp64_local_atomic_min_max)
13812 double __ovld atomic_fetch_min(volatile atomic_double *, double);
13813 double __ovld atomic_fetch_max(volatile atomic_double *, double);
13814 double __ovld atomic_fetch_min_explicit(volatile atomic_double *,
13815  double, memory_order);
13816 double __ovld atomic_fetch_max_explicit(volatile atomic_double *,
13817  double, memory_order);
13818 double __ovld atomic_fetch_min_explicit(volatile atomic_double *,
13819  double, memory_order, memory_scope);
13820 double __ovld atomic_fetch_max_explicit(volatile atomic_double *,
13821  double, memory_order, memory_scope);
13822 #endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
13823  defined(__opencl_c_ext_fp64_local_atomic_min_max)
13824 #endif // defined(cl_khr_int64_base_atomics) && \
13825  defined(cl_khr_int64_extended_atomics)
13826 
13827 #if defined(__opencl_c_ext_fp16_global_atomic_add)
13828 half __ovld atomic_fetch_add(volatile __global atomic_half *, half);
13829 half __ovld atomic_fetch_sub(volatile __global atomic_half *, half);
13830 half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *,
13831  half, memory_order);
13832 half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *,
13833  half, memory_order);
13834 half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *,
13835  half, memory_order, memory_scope);
13836 half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *,
13837  half, memory_order, memory_scope);
13838 #endif // defined(__opencl_c_ext_fp16_global_atomic_add)
13839 
13840 #if defined(__opencl_c_ext_fp16_local_atomic_add)
13841 half __ovld atomic_fetch_add(volatile __local atomic_half *, half);
13842 half __ovld atomic_fetch_sub(volatile __local atomic_half *, half);
13843 half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *,
13844  half, memory_order);
13845 half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *,
13846  half, memory_order);
13847 half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *,
13848  half, memory_order, memory_scope);
13849 half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *,
13850  half, memory_order, memory_scope);
13851 #endif // defined(__opencl_c_ext_fp16_local_atomic_add)
13852 
13853 #if defined(__opencl_c_ext_fp16_global_atomic_add) && \
13854  defined(__opencl_c_ext_fp16_local_atomic_add)
13855 half __ovld atomic_fetch_add(volatile atomic_half *, half);
13856 half __ovld atomic_fetch_sub(volatile atomic_half *, half);
13857 half __ovld atomic_fetch_add_explicit(volatile atomic_half *,
13858  half, memory_order);
13859 half __ovld atomic_fetch_sub_explicit(volatile atomic_half *,
13860  half, memory_order);
13861 half __ovld atomic_fetch_add_explicit(volatile atomic_half *,
13862  half, memory_order, memory_scope);
13863 half __ovld atomic_fetch_sub_explicit(volatile atomic_half *,
13864  half, memory_order, memory_scope);
13865 #endif // defined(__opencl_c_ext_fp16_global_atomic_add) && \
13866  defined(__opencl_c_ext_fp16_local_atomic_add)
13867 
13868 #if defined(__opencl_c_ext_fp32_global_atomic_add)
13869 float __ovld atomic_fetch_add(volatile __global atomic_float *, float);
13870 float __ovld atomic_fetch_sub(volatile __global atomic_float *, float);
13871 float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *,
13872  float, memory_order);
13873 float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *,
13874  float, memory_order);
13875 float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *,
13876  float, memory_order, memory_scope);
13877 float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *,
13878  float, memory_order, memory_scope);
13879 #endif // defined(__opencl_c_ext_fp32_global_atomic_add)
13880 
13881 #if defined(__opencl_c_ext_fp32_local_atomic_add)
13882 float __ovld atomic_fetch_add(volatile __local atomic_float *, float);
13883 float __ovld atomic_fetch_sub(volatile __local atomic_float *, float);
13884 float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *,
13885  float, memory_order);
13886 float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *,
13887  float, memory_order);
13888 float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *,
13889  float, memory_order, memory_scope);
13890 float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *,
13891  float, memory_order, memory_scope);
13892 #endif // defined(__opencl_c_ext_fp32_local_atomic_add)
13893 
13894 #if defined(__opencl_c_ext_fp32_global_atomic_add) && \
13895  defined(__opencl_c_ext_fp32_local_atomic_add)
13896 float __ovld atomic_fetch_add(volatile atomic_float *, float);
13897 float __ovld atomic_fetch_sub(volatile atomic_float *, float);
13898 float __ovld atomic_fetch_add_explicit(volatile atomic_float *,
13899  float, memory_order);
13900 float __ovld atomic_fetch_sub_explicit(volatile atomic_float *,
13901  float, memory_order);
13902 float __ovld atomic_fetch_add_explicit(volatile atomic_float *,
13903  float, memory_order, memory_scope);
13904 float __ovld atomic_fetch_sub_explicit(volatile atomic_float *,
13905  float, memory_order, memory_scope);
13906 #endif // defined(__opencl_c_ext_fp32_global_atomic_add) && \
13907  defined(__opencl_c_ext_fp32_local_atomic_add)
13908 
13909 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13910 #if defined(__opencl_c_ext_fp64_global_atomic_add)
13911 double __ovld atomic_fetch_add(volatile __global atomic_double *, double);
13912 double __ovld atomic_fetch_sub(volatile __global atomic_double *, double);
13913 double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *,
13914  double, memory_order);
13915 double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *,
13916  double, memory_order);
13917 double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *,
13918  double, memory_order, memory_scope);
13919 double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *,
13920  double, memory_order, memory_scope);
13921 #endif // defined(__opencl_c_ext_fp64_global_atomic_add)
13922 
13923 #if defined(__opencl_c_ext_fp64_local_atomic_add)
13924 double __ovld atomic_fetch_add(volatile __local atomic_double *, double);
13925 double __ovld atomic_fetch_sub(volatile __local atomic_double *, double);
13926 double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *,
13927  double, memory_order);
13928 double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *,
13929  double, memory_order);
13930 double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *,
13931  double, memory_order, memory_scope);
13932 double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *,
13933  double, memory_order, memory_scope);
13934 #endif // defined(__opencl_c_ext_fp64_local_atomic_add)
13935 
13936 #if defined(__opencl_c_ext_fp64_global_atomic_add) && \
13937  defined(__opencl_c_ext_fp64_local_atomic_add)
13938 double __ovld atomic_fetch_add(volatile atomic_double *, double);
13939 double __ovld atomic_fetch_sub(volatile atomic_double *, double);
13940 double __ovld atomic_fetch_add_explicit(volatile atomic_double *,
13941  double, memory_order);
13942 double __ovld atomic_fetch_sub_explicit(volatile atomic_double *,
13943  double, memory_order);
13944 double __ovld atomic_fetch_add_explicit(volatile atomic_double *,
13945  double, memory_order, memory_scope);
13946 double __ovld atomic_fetch_sub_explicit(volatile atomic_double *,
13947  double, memory_order, memory_scope);
13948 #endif // defined(__opencl_c_ext_fp64_global_atomic_add) && \
13949  defined(__opencl_c_ext_fp64_local_atomic_add)
13950 #endif // defined(cl_khr_int64_base_atomics) && \
13951  defined(cl_khr_int64_extended_atomics)
13952 
13953 #endif // cl_ext_float_atomics
13954 
13955 // atomic_store()
13956 
13957 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
13958 #if defined(__opencl_c_generic_address_space)
13959 void __ovld atomic_store(volatile atomic_int *, int);
13960 void __ovld atomic_store(volatile atomic_uint *, uint);
13961 void __ovld atomic_store(volatile atomic_float *, float);
13962 
13963 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13964 #ifdef cl_khr_fp64
13965 void __ovld atomic_store(volatile atomic_double *, double);
13966 #endif //cl_khr_fp64
13967 void __ovld atomic_store(volatile atomic_long *, long);
13968 void __ovld atomic_store(volatile atomic_ulong *, ulong);
13969 #endif
13970 #endif //defined(__opencl_c_generic_address_space)
13971 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13972 void __ovld atomic_store(volatile __global atomic_int *, int);
13973 void __ovld atomic_store(volatile __local atomic_int *, int);
13974 void __ovld atomic_store(volatile __global atomic_uint *, uint);
13975 void __ovld atomic_store(volatile __local atomic_uint *, uint);
13976 void __ovld atomic_store(volatile __global atomic_float *, float);
13977 void __ovld atomic_store(volatile __local atomic_float *, float);
13978 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13979 #ifdef cl_khr_fp64
13980 void __ovld atomic_store(volatile __global atomic_double *, double);
13981 void __ovld atomic_store(volatile __local atomic_double *, double);
13982 #endif //cl_khr_fp64
13983 void __ovld atomic_store(volatile __global atomic_long *, long);
13984 void __ovld atomic_store(volatile __local atomic_long *, long);
13985 void __ovld atomic_store(volatile __global atomic_ulong *, ulong);
13986 void __ovld atomic_store(volatile __local atomic_ulong *, ulong);
13987 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13988 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
13989 #endif
13990 
13991 #if defined(__opencl_c_atomic_scope_device)
13992 #if defined(__opencl_c_generic_address_space)
13993 void __ovld atomic_store_explicit(volatile atomic_int *, int, memory_order);
13994 void __ovld atomic_store_explicit(volatile atomic_uint *, uint, memory_order);
13995 void __ovld atomic_store_explicit(volatile atomic_float *, float, memory_order);
13996 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
13997 #ifdef cl_khr_fp64
13998 void __ovld atomic_store_explicit(volatile atomic_double *, double, memory_order);
13999 #endif //cl_khr_fp64
14000 void __ovld atomic_store_explicit(volatile atomic_long *, long, memory_order);
14001 void __ovld atomic_store_explicit(volatile atomic_ulong *, ulong, memory_order);
14002 #endif
14003 #endif //defined(__opencl_c_generic_address_space)
14004 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14005 void __ovld atomic_store_explicit(volatile __global atomic_int *, int, memory_order);
14006 void __ovld atomic_store_explicit(volatile __local atomic_int *, int, memory_order);
14007 void __ovld atomic_store_explicit(volatile __global atomic_uint *, uint, memory_order);
14008 void __ovld atomic_store_explicit(volatile __local atomic_uint *, uint, memory_order);
14009 void __ovld atomic_store_explicit(volatile __global atomic_float *, float, memory_order);
14010 void __ovld atomic_store_explicit(volatile __local atomic_float *, float, memory_order);
14011 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14012 #ifdef cl_khr_fp64
14013 void __ovld atomic_store_explicit(volatile __global atomic_double *, double, memory_order);
14014 void __ovld atomic_store_explicit(volatile __local atomic_double *, double, memory_order);
14015 #endif
14016 void __ovld atomic_store_explicit(volatile __global atomic_long *, long, memory_order);
14017 void __ovld atomic_store_explicit(volatile __local atomic_long *, long, memory_order);
14018 void __ovld atomic_store_explicit(volatile __global atomic_ulong *, ulong, memory_order);
14019 void __ovld atomic_store_explicit(volatile __local atomic_ulong *, ulong, memory_order);
14020 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14021 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14022 #endif
14023 
14024 #if defined(__opencl_c_generic_address_space)
14025 void __ovld atomic_store_explicit(volatile atomic_int *, int, memory_order, memory_scope);
14026 void __ovld atomic_store_explicit(volatile atomic_uint *, uint, memory_order, memory_scope);
14027 void __ovld atomic_store_explicit(volatile atomic_float *, float, memory_order, memory_scope);
14028 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14029 #ifdef cl_khr_fp64
14030 void __ovld atomic_store_explicit(volatile atomic_double *, double, memory_order, memory_scope);
14031 #endif //cl_khr_fp64
14032 void __ovld atomic_store_explicit(volatile atomic_long *, long, memory_order, memory_scope);
14033 void __ovld atomic_store_explicit(volatile atomic_ulong *, ulong, memory_order, memory_scope);
14034 #endif
14035 #endif //defined(__opencl_c_generic_address_space)
14036 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14037 void __ovld atomic_store_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
14038 void __ovld atomic_store_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
14039 void __ovld atomic_store_explicit(volatile __global atomic_uint *, uint, memory_order, memory_scope);
14040 void __ovld atomic_store_explicit(volatile __local atomic_uint *, uint, memory_order, memory_scope);
14041 void __ovld atomic_store_explicit(volatile __global atomic_float *, float, memory_order, memory_scope);
14042 void __ovld atomic_store_explicit(volatile __local atomic_float *, float, memory_order, memory_scope);
14043 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14044 #ifdef cl_khr_fp64
14045 void __ovld atomic_store_explicit(volatile __global atomic_double *, double, memory_order, memory_scope);
14046 void __ovld atomic_store_explicit(volatile __local atomic_double *, double, memory_order, memory_scope);
14047 #endif //cl_khr_fp64
14048 void __ovld atomic_store_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
14049 void __ovld atomic_store_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
14050 void __ovld atomic_store_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
14051 void __ovld atomic_store_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
14052 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14053 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14054 
14055 // atomic_load()
14056 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14057 #if defined(__opencl_c_generic_address_space)
14058 int __ovld atomic_load(volatile atomic_int *);
14059 uint __ovld atomic_load(volatile atomic_uint *);
14060 float __ovld atomic_load(volatile atomic_float *);
14061 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14062 #ifdef cl_khr_fp64
14063 double __ovld atomic_load(volatile atomic_double *);
14064 #endif //cl_khr_fp64
14065 long __ovld atomic_load(volatile atomic_long *);
14066 ulong __ovld atomic_load(volatile atomic_ulong *);
14067 #endif
14068 #endif //defined(__opencl_c_generic_address_space)
14069 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14070 int __ovld atomic_load(volatile __global atomic_int *);
14071 int __ovld atomic_load(volatile __local atomic_int *);
14072 uint __ovld atomic_load(volatile __global atomic_uint *);
14073 uint __ovld atomic_load(volatile __local atomic_uint *);
14074 float __ovld atomic_load(volatile __global atomic_float *);
14075 float __ovld atomic_load(volatile __local atomic_float *);
14076 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14077 #ifdef cl_khr_fp64
14078 double __ovld atomic_load(volatile __global atomic_double *);
14079 double __ovld atomic_load(volatile __local atomic_double *);
14080 #endif //cl_khr_fp64
14081 long __ovld atomic_load(volatile __global atomic_long *);
14082 long __ovld atomic_load(volatile __local atomic_long *);
14083 ulong __ovld atomic_load(volatile __global atomic_ulong *);
14084 ulong __ovld atomic_load(volatile __local atomic_ulong *);
14085 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14086 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14087 #endif
14088 
14089 #if defined(__opencl_c_atomic_scope_device)
14090 #if defined(__opencl_c_generic_address_space)
14091 int __ovld atomic_load_explicit(volatile atomic_int *, memory_order);
14092 uint __ovld atomic_load_explicit(volatile atomic_uint *, memory_order);
14093 float __ovld atomic_load_explicit(volatile atomic_float *, memory_order);
14094 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14095 #ifdef cl_khr_fp64
14096 double __ovld atomic_load_explicit(volatile atomic_double *, memory_order);
14097 #endif //cl_khr_fp64
14098 long __ovld atomic_load_explicit(volatile atomic_long *, memory_order);
14099 ulong __ovld atomic_load_explicit(volatile atomic_ulong *, memory_order);
14100 #endif
14101 #endif //defined(__opencl_c_generic_address_space)
14102 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14103 int __ovld atomic_load_explicit(volatile __global atomic_int *, memory_order);
14104 int __ovld atomic_load_explicit(volatile __local atomic_int *, memory_order);
14105 uint __ovld atomic_load_explicit(volatile __global atomic_uint *, memory_order);
14106 uint __ovld atomic_load_explicit(volatile __local atomic_uint *, memory_order);
14107 float __ovld atomic_load_explicit(volatile __global atomic_float *, memory_order);
14108 float __ovld atomic_load_explicit(volatile __local atomic_float *, memory_order);
14109 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14110 #ifdef cl_khr_fp64
14111 double __ovld atomic_load_explicit(volatile __global atomic_double *, memory_order);
14112 double __ovld atomic_load_explicit(volatile __local atomic_double *, memory_order);
14113 #endif //cl_khr_fp64
14114 long __ovld atomic_load_explicit(volatile __global atomic_long *, memory_order);
14115 long __ovld atomic_load_explicit(volatile __local atomic_long *, memory_order);
14116 ulong __ovld atomic_load_explicit(volatile __global atomic_ulong *, memory_order);
14117 ulong __ovld atomic_load_explicit(volatile __local atomic_ulong *, memory_order);
14118 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14119 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14120 #endif
14121 
14122 #if defined(__opencl_c_generic_address_space)
14123 int __ovld atomic_load_explicit(volatile atomic_int *, memory_order, memory_scope);
14124 uint __ovld atomic_load_explicit(volatile atomic_uint *, memory_order, memory_scope);
14125 float __ovld atomic_load_explicit(volatile atomic_float *, memory_order, memory_scope);
14126 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14127 #ifdef cl_khr_fp64
14128 double __ovld atomic_load_explicit(volatile atomic_double *, memory_order, memory_scope);
14129 #endif //cl_khr_fp64
14130 long __ovld atomic_load_explicit(volatile atomic_long *, memory_order, memory_scope);
14131 ulong __ovld atomic_load_explicit(volatile atomic_ulong *, memory_order, memory_scope);
14132 #endif
14133 #endif //defined(__opencl_c_generic_address_space)
14134 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14135 int __ovld atomic_load_explicit(volatile __global atomic_int *, memory_order, memory_scope);
14136 int __ovld atomic_load_explicit(volatile __local atomic_int *, memory_order, memory_scope);
14137 uint __ovld atomic_load_explicit(volatile __global atomic_uint *, memory_order, memory_scope);
14138 uint __ovld atomic_load_explicit(volatile __local atomic_uint *, memory_order, memory_scope);
14139 float __ovld atomic_load_explicit(volatile __global atomic_float *, memory_order, memory_scope);
14140 float __ovld atomic_load_explicit(volatile __local atomic_float *, memory_order, memory_scope);
14141 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14142 #ifdef cl_khr_fp64
14143 double __ovld atomic_load_explicit(volatile __global atomic_double *, memory_order, memory_scope);
14144 double __ovld atomic_load_explicit(volatile __local atomic_double *, memory_order, memory_scope);
14145 #endif
14146 long __ovld atomic_load_explicit(volatile __global atomic_long *, memory_order, memory_scope);
14147 long __ovld atomic_load_explicit(volatile __local atomic_long *, memory_order, memory_scope);
14148 ulong __ovld atomic_load_explicit(volatile __global atomic_ulong *, memory_order, memory_scope);
14149 ulong __ovld atomic_load_explicit(volatile __local atomic_ulong *, memory_order, memory_scope);
14150 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14151 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14152 
14153 // atomic_exchange()
14154 
14155 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14156 #if defined(__opencl_c_generic_address_space)
14157 int __ovld atomic_exchange(volatile atomic_int *, int);
14158 uint __ovld atomic_exchange(volatile atomic_uint *, uint);
14159 float __ovld atomic_exchange(volatile atomic_float *, float);
14160 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14161 #ifdef cl_khr_fp64
14162 double __ovld atomic_exchange(volatile atomic_double *, double);
14163 #endif //cl_khr_fp64
14164 long __ovld atomic_exchange(volatile atomic_long *, long);
14165 ulong __ovld atomic_exchange(volatile atomic_ulong *, ulong);
14166 #endif
14167 #endif //defined(__opencl_c_generic_address_space)
14168 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14169 int __ovld atomic_exchange(volatile __global atomic_int *, int);
14170 int __ovld atomic_exchange(volatile __local atomic_int *, int);
14171 uint __ovld atomic_exchange(volatile __global atomic_uint *, uint);
14172 uint __ovld atomic_exchange(volatile __local atomic_uint *, uint);
14173 float __ovld atomic_exchange(volatile __global atomic_float *, float);
14174 float __ovld atomic_exchange(volatile __local atomic_float *, float);
14175 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14176 #ifdef cl_khr_fp64
14177 double __ovld atomic_exchange(volatile __global atomic_double *, double);
14178 double __ovld atomic_exchange(volatile __local atomic_double *, double);
14179 #endif //cl_khr_fp64
14180 long __ovld atomic_exchange(volatile __global atomic_long *, long);
14181 long __ovld atomic_exchange(volatile __local atomic_long *, long);
14182 ulong __ovld atomic_exchange(volatile __global atomic_ulong *, ulong);
14183 ulong __ovld atomic_exchange(volatile __local atomic_ulong *, ulong);
14184 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14185 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14186 #endif
14187 
14188 #if defined(__opencl_c_atomic_scope_device)
14189 #if defined(__opencl_c_generic_address_space)
14190 int __ovld atomic_exchange_explicit(volatile atomic_int *, int, memory_order);
14191 uint __ovld atomic_exchange_explicit(volatile atomic_uint *, uint, memory_order);
14192 float __ovld atomic_exchange_explicit(volatile atomic_float *, float, memory_order);
14193 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14194 #ifdef cl_khr_fp64
14195 double __ovld atomic_exchange_explicit(volatile atomic_double *, double, memory_order);
14196 #endif //cl_khr_fp64
14197 long __ovld atomic_exchange_explicit(volatile atomic_long *, long, memory_order);
14198 ulong __ovld atomic_exchange_explicit(volatile atomic_ulong *, ulong, memory_order);
14199 #endif
14200 #endif //defined(__opencl_c_generic_address_space)
14201 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14202 int __ovld atomic_exchange_explicit(volatile __global atomic_int *, int, memory_order);
14203 int __ovld atomic_exchange_explicit(volatile __local atomic_int *, int, memory_order);
14204 uint __ovld atomic_exchange_explicit(volatile __global atomic_uint *, uint, memory_order);
14205 uint __ovld atomic_exchange_explicit(volatile __local atomic_uint *, uint, memory_order);
14206 float __ovld atomic_exchange_explicit(volatile __global atomic_float *, float, memory_order);
14207 float __ovld atomic_exchange_explicit(volatile __local atomic_float *, float, memory_order);
14208 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14209 #ifdef cl_khr_fp64
14210 double __ovld atomic_exchange_explicit(volatile __global atomic_double *, double, memory_order);
14211 double __ovld atomic_exchange_explicit(volatile __local atomic_double *, double, memory_order);
14212 #endif //cl_khr_fp64
14213 long __ovld atomic_exchange_explicit(volatile __global atomic_long *, long, memory_order);
14214 long __ovld atomic_exchange_explicit(volatile __local atomic_long *, long, memory_order);
14215 ulong __ovld atomic_exchange_explicit(volatile __global atomic_ulong *, ulong, memory_order);
14216 ulong __ovld atomic_exchange_explicit(volatile __local atomic_ulong *, ulong, memory_order);
14217 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)wi
14218 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14219 #endif
14220 
14221 #if defined(__opencl_c_generic_address_space)
14222 int __ovld atomic_exchange_explicit(volatile atomic_int *, int, memory_order, memory_scope);
14224 float __ovld atomic_exchange_explicit(volatile atomic_float *, float, memory_order, memory_scope);
14225 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14226 #ifdef cl_khr_fp64
14227 double __ovld atomic_exchange_explicit(volatile atomic_double *, double, memory_order, memory_scope);
14228 #endif //cl_khr_fp64
14229 long __ovld atomic_exchange_explicit(volatile atomic_long *, long, memory_order, memory_scope);
14231 #endif
14232 #endif //defined(__opencl_c_generic_address_space)
14233 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14234 int __ovld atomic_exchange_explicit(volatile __global atomic_int *, int, memory_order, memory_scope);
14235 int __ovld atomic_exchange_explicit(volatile __local atomic_int *, int, memory_order, memory_scope);
14238 float __ovld atomic_exchange_explicit(volatile __global atomic_float *, float, memory_order, memory_scope);
14239 float __ovld atomic_exchange_explicit(volatile __local atomic_float *, float, memory_order, memory_scope);
14240 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14241 #ifdef cl_khr_fp64
14242 double __ovld atomic_exchange_explicit(volatile __global atomic_double *, double, memory_order, memory_scope);
14243 double __ovld atomic_exchange_explicit(volatile __local atomic_double *, double, memory_order, memory_scope);
14244 #endif //cl_khr_fp64
14245 long __ovld atomic_exchange_explicit(volatile __global atomic_long *, long, memory_order, memory_scope);
14246 long __ovld atomic_exchange_explicit(volatile __local atomic_long *, long, memory_order, memory_scope);
14247 ulong __ovld atomic_exchange_explicit(volatile __global atomic_ulong *, ulong, memory_order, memory_scope);
14248 ulong __ovld atomic_exchange_explicit(volatile __local atomic_ulong *, ulong, memory_order, memory_scope);
14249 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14250 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14251 
14252 // atomic_compare_exchange_strong() and atomic_compare_exchange_weak()
14253 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14254 #if defined(__opencl_c_generic_address_space)
14255 bool __ovld atomic_compare_exchange_strong(volatile atomic_int *, int *, int);
14256 bool __ovld atomic_compare_exchange_strong(volatile atomic_uint *, uint *, uint);
14257 bool __ovld atomic_compare_exchange_weak(volatile atomic_int *, int *, int);
14258 bool __ovld atomic_compare_exchange_weak(volatile atomic_uint *, uint *, uint);
14259 bool __ovld atomic_compare_exchange_strong(volatile atomic_float *, float *, float);
14260 bool __ovld atomic_compare_exchange_weak(volatile atomic_float *, float *, float);
14261 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14262 #ifdef cl_khr_fp64
14263 bool __ovld atomic_compare_exchange_strong(volatile atomic_double *, double *, double);
14264 bool __ovld atomic_compare_exchange_weak(volatile atomic_double *, double *, double);
14265 #endif //cl_khr_fp64
14266 bool __ovld atomic_compare_exchange_strong(volatile atomic_long *, long *, long);
14267 bool __ovld atomic_compare_exchange_weak(volatile atomic_long *, long *, long);
14268 bool __ovld atomic_compare_exchange_strong(volatile atomic_ulong *, ulong *, ulong);
14269 bool __ovld atomic_compare_exchange_weak(volatile atomic_ulong *, ulong *, ulong);
14270 #endif
14271 #endif //defined(__opencl_c_generic_address_space)
14272 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14273 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __global int *, int);
14274 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __local int *, int);
14275 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_int *, __private int *, int);
14276 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __global int *, int);
14277 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __local int *, int);
14278 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_int *, __private int *, int);
14279 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __global uint *, uint);
14280 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __local uint *, uint);
14281 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_uint *, __private uint *, uint);
14282 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __global uint *, uint);
14283 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __local uint *, uint);
14284 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_uint *, __private uint *, uint);
14285 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __global float *, float);
14286 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __local float *, float);
14287 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_float *, __private float *, float);
14288 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __global float *, float);
14289 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __local float *, float);
14290 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_float *, __private float *, float);
14291 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __global int *, int);
14292 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __local int *, int);
14293 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_int *, __private int *, int);
14294 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __global int *, int);
14295 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __local int *, int);
14296 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_int *, __private int *, int);
14297 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __global uint *, uint);
14298 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __local uint *, uint);
14299 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_uint *, __private uint *, uint);
14300 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __global uint *, uint);
14301 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __local uint *, uint);
14302 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_uint *, __private uint *, uint);
14303 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __global float *, float);
14304 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __local float *, float);
14305 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_float *, __private float *, float);
14306 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __global float *, float);
14307 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __local float *, float);
14308 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_float *, __private float *, float);
14309 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14310 #ifdef cl_khr_fp64
14311 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __global double *, double);
14312 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __local double *, double);
14313 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_double *, __private double *, double);
14314 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __global double *, double);
14315 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __local double *, double);
14316 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_double *, __private double *, double);
14317 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __global double *, double);
14318 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __local double *, double);
14319 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_double *, __private double *, double);
14320 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __global double *, double);
14321 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __local double *, double);
14322 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_double *, __private double *, double);
14323 #endif //cl_khr_fp64
14324 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __global long *, long);
14325 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __local long *, long);
14326 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_long *, __private long *, long);
14327 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __global long *, long);
14328 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __local long *, long);
14329 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_long *, __private long *, long);
14330 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __global ulong *, ulong);
14331 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __local ulong *, ulong);
14332 bool __ovld atomic_compare_exchange_strong(volatile __global atomic_ulong *, __private ulong *, ulong);
14333 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __global ulong *, ulong);
14334 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __local ulong *, ulong);
14335 bool __ovld atomic_compare_exchange_strong(volatile __local atomic_ulong *, __private ulong *, ulong);
14336 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __global long *, long);
14337 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __local long *, long);
14338 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_long *, __private long *, long);
14339 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __global long *, long);
14340 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __local long *, long);
14341 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_long *, __private long *, long);
14342 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __global ulong *, ulong);
14343 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __local ulong *, ulong);
14344 bool __ovld atomic_compare_exchange_weak(volatile __global atomic_ulong *, __private ulong *, ulong);
14345 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __global ulong *, ulong);
14346 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __local ulong *, ulong);
14347 bool __ovld atomic_compare_exchange_weak(volatile __local atomic_ulong *, __private ulong *, ulong);
14348 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14349 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14350 #endif
14351 
14352 #if defined(__opencl_c_atomic_scope_device)
14353 #if defined(__opencl_c_generic_address_space)
14354 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *, int *, int, memory_order, memory_order);
14356 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *, int *, int, memory_order, memory_order);
14358 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *, float *, float, memory_order, memory_order);
14359 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *, float *, float, memory_order, memory_order);
14360 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14361 #ifdef cl_khr_fp64
14362 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *, double *, double, memory_order, memory_order);
14363 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *, double *, double, memory_order, memory_order);
14364 #endif //cl_khr_fp64
14365 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *, long *, long, memory_order, memory_order);
14366 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *, long *, long, memory_order, memory_order);
14369 #endif
14370 #endif //defined(__opencl_c_generic_address_space)
14371 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14372 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order);
14373 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order);
14374 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order);
14375 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order);
14376 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order);
14377 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order);
14378 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order);
14379 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __local uint *, uint, memory_order, memory_order);
14380 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order);
14381 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __global uint *, uint, memory_order, memory_order);
14382 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __local uint *, uint, memory_order, memory_order);
14383 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order);
14384 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order);
14385 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order);
14386 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order);
14387 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order);
14388 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order);
14389 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order);
14390 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order);
14391 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order);
14392 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order);
14393 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order);
14394 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order);
14395 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order);
14396 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order);
14397 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __local uint *, uint, memory_order, memory_order);
14398 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order);
14399 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __global uint *, uint, memory_order, memory_order);
14400 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __local uint *, uint, memory_order, memory_order);
14401 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order);
14402 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order);
14403 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order);
14404 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order);
14405 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order);
14406 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order);
14407 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order);
14408 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14409 #ifdef cl_khr_fp64
14410 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order);
14411 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order);
14412 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order);
14413 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order);
14414 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order);
14415 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order);
14416 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order);
14417 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order);
14418 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order);
14419 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order);
14420 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order);
14421 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order);
14422 #endif //cl_khr_fp64
14423 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order);
14424 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order);
14425 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order);
14426 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order);
14427 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order);
14428 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order);
14429 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14430 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14431 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14432 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14433 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14434 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14435 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order);
14436 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order);
14437 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order);
14438 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order);
14439 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order);
14440 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order);
14441 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14442 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14443 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14444 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order);
14445 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order);
14446 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order);
14447 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14448 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14449 #endif //defined(__opencl_c_atomic_scope_device)
14450 
14451 #if defined(__opencl_c_generic_address_space)
14452 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *, int *, int, memory_order, memory_order, memory_scope);
14454 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *, int *, int, memory_order, memory_order, memory_scope);
14456 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *, float *, float, memory_order, memory_order, memory_scope);
14457 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *, float *, float, memory_order, memory_order, memory_scope);
14458 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14459 #ifdef cl_khr_fp64
14460 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *, double *, double, memory_order, memory_order, memory_scope);
14461 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *, double *, double, memory_order, memory_order, memory_scope);
14462 #endif //cl_khr_fp64
14463 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *, long *, long, memory_order, memory_order, memory_scope);
14464 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *, long *, long, memory_order, memory_order, memory_scope);
14467 #endif
14468 #endif //defined(__opencl_c_generic_address_space)
14469 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14470 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14471 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14472 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14473 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14474 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14475 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14476 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order, memory_scope);
14478 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order, memory_scope);
14481 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order, memory_scope);
14482 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14483 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14484 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14485 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14486 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14487 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14488 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14489 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14490 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14491 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __global int *, int, memory_order, memory_order, memory_scope);
14492 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __local int *, int, memory_order, memory_order, memory_scope);
14493 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_int *, __private int *, int, memory_order, memory_order, memory_scope);
14494 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __global uint *, uint, memory_order, memory_order, memory_scope);
14495 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __local uint *, uint, memory_order, memory_order, memory_scope);
14496 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_uint *, __private uint *, uint, memory_order, memory_order, memory_scope);
14497 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __global uint *, uint, memory_order, memory_order, memory_scope);
14499 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_uint *, __private uint *, uint, memory_order, memory_order, memory_scope);
14500 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14501 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14502 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14503 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __global float *, float, memory_order, memory_order, memory_scope);
14504 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __local float *, float, memory_order, memory_order, memory_scope);
14505 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_float *, __private float *, float, memory_order, memory_order, memory_scope);
14506 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14507 #ifdef cl_khr_fp64
14508 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14509 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14510 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14511 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14512 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14513 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14514 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14515 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14516 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14517 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __global double *, double, memory_order, memory_order, memory_scope);
14518 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __local double *, double, memory_order, memory_order, memory_scope);
14519 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_double *, __private double *, double, memory_order, memory_order, memory_scope);
14520 #endif //cl_khr_fp64
14521 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14522 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14523 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14524 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14525 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14526 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14527 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14528 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14529 bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14530 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14531 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14532 bool __ovld atomic_compare_exchange_strong_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14533 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14534 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14535 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14536 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __global long *, long, memory_order, memory_order, memory_scope);
14537 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __local long *, long, memory_order, memory_order, memory_scope);
14538 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_long *, __private long *, long, memory_order, memory_order, memory_scope);
14539 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14540 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14541 bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14542 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __global ulong *, ulong, memory_order, memory_order, memory_scope);
14543 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __local ulong *, ulong, memory_order, memory_order, memory_scope);
14544 bool __ovld atomic_compare_exchange_weak_explicit(volatile __local atomic_ulong *, __private ulong *, ulong, memory_order, memory_order, memory_scope);
14545 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
14546 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14547 
14548 // atomic_flag_test_and_set() and atomic_flag_clear()
14549 #if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
14550 #if defined(__opencl_c_generic_address_space)
14552 void __ovld atomic_flag_clear(volatile atomic_flag *);
14553 #endif //defined(__opencl_c_generic_address_space)
14554 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14555 bool __ovld atomic_flag_test_and_set(volatile __global atomic_flag *);
14556 bool __ovld atomic_flag_test_and_set(volatile __local atomic_flag *);
14557 void __ovld atomic_flag_clear(volatile __global atomic_flag *);
14558 void __ovld atomic_flag_clear(volatile __local atomic_flag *);
14559 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14560 #endif
14561 
14562 #if defined(__opencl_c_atomic_scope_device)
14563 #if defined(__opencl_c_generic_address_space)
14566 #endif //defined(__opencl_c_generic_address_space)
14567 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14570 void __ovld atomic_flag_clear_explicit(volatile __global atomic_flag *, memory_order);
14571 void __ovld atomic_flag_clear_explicit(volatile __local atomic_flag *, memory_order);
14572 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14573 #endif
14574 
14575 #if defined(__opencl_c_generic_address_space)
14578 #endif //defined(__opencl_c_generic_address_space)
14579 #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14584 #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 || __OPENCL_CPP_VERSION__ >= 202100)
14585 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
14586 
14587 // OpenCL v1.1 s6.11.12, v1.2 s6.12.12, v2.0 s6.13.12 - Miscellaneous Vector Functions
14588 
14589 /**
14590  * The shuffle and shuffle2 built-in functions construct
14591  * a permutation of elements from one or two input
14592  * vectors respectively that are of the same type,
14593  * returning a vector with the same element type as the
14594  * input and length that is the same as the shuffle mask.
14595  * The size of each element in the mask must match the
14596  * size of each element in the result. For shuffle, only
14597  * the ilogb(2m-1) least significant bits of each mask
14598  * element are considered. For shuffle2, only the
14599  * ilogb(2m-1)+1 least significant bits of each mask
14600  * element are considered. Other bits in the mask shall
14601  * be ignored.
14602  * The elements of the input vectors are numbered from
14603  * left to right across one or both of the vectors. For this
14604  * purpose, the number of elements in a vector is given
14605  * by vec_step(gentypem). The shuffle mask operand
14606  * specifies, for each element of the result vector, which
14607  * element of the one or two input vectors the result
14608  * element gets.
14609  * Examples:
14610  * uint4 mask = (uint4)(3, 2,
14611  * 1, 0);
14612  * float4 a;
14613  * float4 r = shuffle(a, mask);
14614  * // r.s0123 = a.wzyx
14615  * uint8 mask = (uint8)(0, 1, 2, 3,
14616  * 4, 5, 6, 7);
14617  * float4 a, b;
14618  * float8 r = shuffle2(a, b, mask);
14619  * // r.s0123 = a.xyzw
14620  * // r.s4567 = b.xyzw
14621  * uint4 mask;
14622  * float8 a;
14623  * float4 b;
14624  * b = shuffle(a, mask);
14625  * Examples that are not valid are:
14626  * uint8 mask;
14627  * short16 a;
14628  * short8 b;
14629  * b = shuffle(a, mask); <- not valid
14630  */
14631 char2 __ovld __cnfn shuffle(char2, uchar2);
14632 char2 __ovld __cnfn shuffle(char4, uchar2);
14633 char2 __ovld __cnfn shuffle(char8, uchar2);
14634 char2 __ovld __cnfn shuffle(char16, uchar2);
14635 
14636 uchar2 __ovld __cnfn shuffle(uchar2, uchar2);
14637 uchar2 __ovld __cnfn shuffle(uchar4, uchar2);
14638 uchar2 __ovld __cnfn shuffle(uchar8, uchar2);
14639 uchar2 __ovld __cnfn shuffle(uchar16, uchar2);
14640 
14641 short2 __ovld __cnfn shuffle(short2, ushort2);
14642 short2 __ovld __cnfn shuffle(short4, ushort2);
14643 short2 __ovld __cnfn shuffle(short8, ushort2);
14644 short2 __ovld __cnfn shuffle(short16, ushort2);
14645 
14646 ushort2 __ovld __cnfn shuffle(ushort2, ushort2);
14647 ushort2 __ovld __cnfn shuffle(ushort4, ushort2);
14648 ushort2 __ovld __cnfn shuffle(ushort8, ushort2);
14649 ushort2 __ovld __cnfn shuffle(ushort16, ushort2);
14650 
14655 
14660 
14661 long2 __ovld __cnfn shuffle(long2, ulong2);
14662 long2 __ovld __cnfn shuffle(long4, ulong2);
14663 long2 __ovld __cnfn shuffle(long8, ulong2);
14664 long2 __ovld __cnfn shuffle(long16, ulong2);
14665 
14666 ulong2 __ovld __cnfn shuffle(ulong2, ulong2);
14667 ulong2 __ovld __cnfn shuffle(ulong4, ulong2);
14668 ulong2 __ovld __cnfn shuffle(ulong8, ulong2);
14669 ulong2 __ovld __cnfn shuffle(ulong16, ulong2);
14670 
14675 
14676 char4 __ovld __cnfn shuffle(char2, uchar4);
14677 char4 __ovld __cnfn shuffle(char4, uchar4);
14678 char4 __ovld __cnfn shuffle(char8, uchar4);
14679 char4 __ovld __cnfn shuffle(char16, uchar4);
14680 
14681 uchar4 __ovld __cnfn shuffle(uchar2, uchar4);
14682 uchar4 __ovld __cnfn shuffle(uchar4, uchar4);
14683 uchar4 __ovld __cnfn shuffle(uchar8, uchar4);
14684 uchar4 __ovld __cnfn shuffle(uchar16, uchar4);
14685 
14686 short4 __ovld __cnfn shuffle(short2, ushort4);
14687 short4 __ovld __cnfn shuffle(short4, ushort4);
14688 short4 __ovld __cnfn shuffle(short8, ushort4);
14689 short4 __ovld __cnfn shuffle(short16, ushort4);
14690 
14691 ushort4 __ovld __cnfn shuffle(ushort2, ushort4);
14692 ushort4 __ovld __cnfn shuffle(ushort4, ushort4);
14693 ushort4 __ovld __cnfn shuffle(ushort8, ushort4);
14694 ushort4 __ovld __cnfn shuffle(ushort16, ushort4);
14695 
14700 
14705 
14706 long4 __ovld __cnfn shuffle(long2, ulong4);
14707 long4 __ovld __cnfn shuffle(long4, ulong4);
14708 long4 __ovld __cnfn shuffle(long8, ulong4);
14709 long4 __ovld __cnfn shuffle(long16, ulong4);
14710 
14711 ulong4 __ovld __cnfn shuffle(ulong2, ulong4);
14712 ulong4 __ovld __cnfn shuffle(ulong4, ulong4);
14713 ulong4 __ovld __cnfn shuffle(ulong8, ulong4);
14714 ulong4 __ovld __cnfn shuffle(ulong16, ulong4);
14715 
14720 
14721 char8 __ovld __cnfn shuffle(char2, uchar8);
14722 char8 __ovld __cnfn shuffle(char4, uchar8);
14723 char8 __ovld __cnfn shuffle(char8, uchar8);
14724 char8 __ovld __cnfn shuffle(char16, uchar8);
14725 
14726 uchar8 __ovld __cnfn shuffle(uchar2, uchar8);
14727 uchar8 __ovld __cnfn shuffle(uchar4, uchar8);
14728 uchar8 __ovld __cnfn shuffle(uchar8, uchar8);
14729 uchar8 __ovld __cnfn shuffle(uchar16, uchar8);
14730 
14731 short8 __ovld __cnfn shuffle(short2, ushort8);
14732 short8 __ovld __cnfn shuffle(short4, ushort8);
14733 short8 __ovld __cnfn shuffle(short8, ushort8);
14734 short8 __ovld __cnfn shuffle(short16, ushort8);
14735 
14736 ushort8 __ovld __cnfn shuffle(ushort2, ushort8);
14737 ushort8 __ovld __cnfn shuffle(ushort4, ushort8);
14738 ushort8 __ovld __cnfn shuffle(ushort8, ushort8);
14739 ushort8 __ovld __cnfn shuffle(ushort16, ushort8);
14740 
14741 int8 __ovld __cnfn shuffle(int2, uint8);
14742 int8 __ovld __cnfn shuffle(int4, uint8);
14743 int8 __ovld __cnfn shuffle(int8, uint8);
14744 int8 __ovld __cnfn shuffle(int16, uint8);
14745 
14746 uint8 __ovld __cnfn shuffle(uint2, uint8);
14747 uint8 __ovld __cnfn shuffle(uint4, uint8);
14748 uint8 __ovld __cnfn shuffle(uint8, uint8);
14749 uint8 __ovld __cnfn shuffle(uint16, uint8);
14750 
14751 long8 __ovld __cnfn shuffle(long2, ulong8);
14752 long8 __ovld __cnfn shuffle(long4, ulong8);
14753 long8 __ovld __cnfn shuffle(long8, ulong8);
14754 long8 __ovld __cnfn shuffle(long16, ulong8);
14755 
14756 ulong8 __ovld __cnfn shuffle(ulong2, ulong8);
14757 ulong8 __ovld __cnfn shuffle(ulong4, ulong8);
14758 ulong8 __ovld __cnfn shuffle(ulong8, ulong8);
14759 ulong8 __ovld __cnfn shuffle(ulong16, ulong8);
14760 
14761 float8 __ovld __cnfn shuffle(float2, uint8);
14762 float8 __ovld __cnfn shuffle(float4, uint8);
14763 float8 __ovld __cnfn shuffle(float8, uint8);
14764 float8 __ovld __cnfn shuffle(float16, uint8);
14765 
14766 char16 __ovld __cnfn shuffle(char2, uchar16);
14767 char16 __ovld __cnfn shuffle(char4, uchar16);
14768 char16 __ovld __cnfn shuffle(char8, uchar16);
14769 char16 __ovld __cnfn shuffle(char16, uchar16);
14770 
14771 uchar16 __ovld __cnfn shuffle(uchar2, uchar16);
14772 uchar16 __ovld __cnfn shuffle(uchar4, uchar16);
14773 uchar16 __ovld __cnfn shuffle(uchar8, uchar16);
14774 uchar16 __ovld __cnfn shuffle(uchar16, uchar16);
14775 
14776 short16 __ovld __cnfn shuffle(short2, ushort16);
14777 short16 __ovld __cnfn shuffle(short4, ushort16);
14778 short16 __ovld __cnfn shuffle(short8, ushort16);
14779 short16 __ovld __cnfn shuffle(short16, ushort16);
14780 
14781 ushort16 __ovld __cnfn shuffle(ushort2, ushort16);
14782 ushort16 __ovld __cnfn shuffle(ushort4, ushort16);
14783 ushort16 __ovld __cnfn shuffle(ushort8, ushort16);
14784 ushort16 __ovld __cnfn shuffle(ushort16, ushort16);
14785 
14786 int16 __ovld __cnfn shuffle(int2, uint16);
14787 int16 __ovld __cnfn shuffle(int4, uint16);
14788 int16 __ovld __cnfn shuffle(int8, uint16);
14789 int16 __ovld __cnfn shuffle(int16, uint16);
14790 
14791 uint16 __ovld __cnfn shuffle(uint2, uint16);
14792 uint16 __ovld __cnfn shuffle(uint4, uint16);
14793 uint16 __ovld __cnfn shuffle(uint8, uint16);
14794 uint16 __ovld __cnfn shuffle(uint16, uint16);
14795 
14796 long16 __ovld __cnfn shuffle(long2, ulong16);
14797 long16 __ovld __cnfn shuffle(long4, ulong16);
14798 long16 __ovld __cnfn shuffle(long8, ulong16);
14799 long16 __ovld __cnfn shuffle(long16, ulong16);
14800 
14801 ulong16 __ovld __cnfn shuffle(ulong2, ulong16);
14802 ulong16 __ovld __cnfn shuffle(ulong4, ulong16);
14803 ulong16 __ovld __cnfn shuffle(ulong8, ulong16);
14804 ulong16 __ovld __cnfn shuffle(ulong16, ulong16);
14805 
14806 float16 __ovld __cnfn shuffle(float2, uint16);
14807 float16 __ovld __cnfn shuffle(float4, uint16);
14808 float16 __ovld __cnfn shuffle(float8, uint16);
14809 float16 __ovld __cnfn shuffle(float16, uint16);
14810 
14811 #ifdef cl_khr_fp64
14814 double2 __ovld __cnfn shuffle(double8, ulong2);
14815 double2 __ovld __cnfn shuffle(double16, ulong2);
14816 
14819 double4 __ovld __cnfn shuffle(double8, ulong4);
14820 double4 __ovld __cnfn shuffle(double16, ulong4);
14821 
14822 double8 __ovld __cnfn shuffle(double2, ulong8);
14823 double8 __ovld __cnfn shuffle(double4, ulong8);
14824 double8 __ovld __cnfn shuffle(double8, ulong8);
14825 double8 __ovld __cnfn shuffle(double16, ulong8);
14826 
14827 double16 __ovld __cnfn shuffle(double2, ulong16);
14828 double16 __ovld __cnfn shuffle(double4, ulong16);
14829 double16 __ovld __cnfn shuffle(double8, ulong16);
14830 double16 __ovld __cnfn shuffle(double16, ulong16);
14831 #endif //cl_khr_fp64
14832 
14833 #ifdef cl_khr_fp16
14834 half2 __ovld __cnfn shuffle(half2, ushort2);
14835 half2 __ovld __cnfn shuffle(half4, ushort2);
14836 half2 __ovld __cnfn shuffle(half8, ushort2);
14837 half2 __ovld __cnfn shuffle(half16, ushort2);
14838 
14839 half4 __ovld __cnfn shuffle(half2, ushort4);
14840 half4 __ovld __cnfn shuffle(half4, ushort4);
14841 half4 __ovld __cnfn shuffle(half8, ushort4);
14842 half4 __ovld __cnfn shuffle(half16, ushort4);
14843 
14844 half8 __ovld __cnfn shuffle(half2, ushort8);
14845 half8 __ovld __cnfn shuffle(half4, ushort8);
14846 half8 __ovld __cnfn shuffle(half8, ushort8);
14847 half8 __ovld __cnfn shuffle(half16, ushort8);
14848 
14849 half16 __ovld __cnfn shuffle(half2, ushort16);
14850 half16 __ovld __cnfn shuffle(half4, ushort16);
14851 half16 __ovld __cnfn shuffle(half8, ushort16);
14852 half16 __ovld __cnfn shuffle(half16, ushort16);
14853 #endif //cl_khr_fp16
14854 
14855 char2 __ovld __cnfn shuffle2(char2, char2, uchar2);
14856 char2 __ovld __cnfn shuffle2(char4, char4, uchar2);
14857 char2 __ovld __cnfn shuffle2(char8, char8, uchar2);
14858 char2 __ovld __cnfn shuffle2(char16, char16, uchar2);
14859 
14860 uchar2 __ovld __cnfn shuffle2(uchar2, uchar2, uchar2);
14861 uchar2 __ovld __cnfn shuffle2(uchar4, uchar4, uchar2);
14862 uchar2 __ovld __cnfn shuffle2(uchar8, uchar8, uchar2);
14863 uchar2 __ovld __cnfn shuffle2(uchar16, uchar16, uchar2);
14864 
14865 short2 __ovld __cnfn shuffle2(short2, short2, ushort2);
14866 short2 __ovld __cnfn shuffle2(short4, short4, ushort2);
14867 short2 __ovld __cnfn shuffle2(short8, short8, ushort2);
14868 short2 __ovld __cnfn shuffle2(short16, short16, ushort2);
14869 
14870 ushort2 __ovld __cnfn shuffle2(ushort2, ushort2, ushort2);
14871 ushort2 __ovld __cnfn shuffle2(ushort4, ushort4, ushort2);
14872 ushort2 __ovld __cnfn shuffle2(ushort8, ushort8, ushort2);
14873 ushort2 __ovld __cnfn shuffle2(ushort16, ushort16, ushort2);
14874 
14879 
14883 uint2 __ovld __cnfn shuffle2(uint16, uint16, uint2);
14884 
14885 long2 __ovld __cnfn shuffle2(long2, long2, ulong2);
14886 long2 __ovld __cnfn shuffle2(long4, long4, ulong2);
14887 long2 __ovld __cnfn shuffle2(long8, long8, ulong2);
14888 long2 __ovld __cnfn shuffle2(long16, long16, ulong2);
14889 
14890 ulong2 __ovld __cnfn shuffle2(ulong2, ulong2, ulong2);
14891 ulong2 __ovld __cnfn shuffle2(ulong4, ulong4, ulong2);
14892 ulong2 __ovld __cnfn shuffle2(ulong8, ulong8, ulong2);
14893 ulong2 __ovld __cnfn shuffle2(ulong16, ulong16, ulong2);
14894 
14897 float2 __ovld __cnfn shuffle2(float8, float8, uint2);
14898 float2 __ovld __cnfn shuffle2(float16, float16, uint2);
14899 
14900 char4 __ovld __cnfn shuffle2(char2, char2, uchar4);
14901 char4 __ovld __cnfn shuffle2(char4, char4, uchar4);
14902 char4 __ovld __cnfn shuffle2(char8, char8, uchar4);
14903 char4 __ovld __cnfn shuffle2(char16, char16, uchar4);
14904 
14905 uchar4 __ovld __cnfn shuffle2(uchar2, uchar2, uchar4);
14906 uchar4 __ovld __cnfn shuffle2(uchar4, uchar4, uchar4);
14907 uchar4 __ovld __cnfn shuffle2(uchar8, uchar8, uchar4);
14908 uchar4 __ovld __cnfn shuffle2(uchar16, uchar16, uchar4);
14909 
14910 short4 __ovld __cnfn shuffle2(short2, short2, ushort4);
14911 short4 __ovld __cnfn shuffle2(short4, short4, ushort4);
14912 short4 __ovld __cnfn shuffle2(short8, short8, ushort4);
14913 short4 __ovld __cnfn shuffle2(short16, short16, ushort4);
14914 
14915 ushort4 __ovld __cnfn shuffle2(ushort2, ushort2, ushort4);
14916 ushort4 __ovld __cnfn shuffle2(ushort4, ushort4, ushort4);
14917 ushort4 __ovld __cnfn shuffle2(ushort8, ushort8, ushort4);
14918 ushort4 __ovld __cnfn shuffle2(ushort16, ushort16, ushort4);
14919 
14924 
14928 uint4 __ovld __cnfn shuffle2(uint16, uint16, uint4);
14929 
14930 long4 __ovld __cnfn shuffle2(long2, long2, ulong4);
14931 long4 __ovld __cnfn shuffle2(long4, long4, ulong4);
14932 long4 __ovld __cnfn shuffle2(long8, long8, ulong4);
14933 long4 __ovld __cnfn shuffle2(long16, long16, ulong4);
14934 
14935 ulong4 __ovld __cnfn shuffle2(ulong2, ulong2, ulong4);
14936 ulong4 __ovld __cnfn shuffle2(ulong4, ulong4, ulong4);
14937 ulong4 __ovld __cnfn shuffle2(ulong8, ulong8, ulong4);
14938 ulong4 __ovld __cnfn shuffle2(ulong16, ulong16, ulong4);
14939 
14942 float4 __ovld __cnfn shuffle2(float8, float8, uint4);
14943 float4 __ovld __cnfn shuffle2(float16, float16, uint4);
14944 
14945 char8 __ovld __cnfn shuffle2(char2, char2, uchar8);
14946 char8 __ovld __cnfn shuffle2(char4, char4, uchar8);
14947 char8 __ovld __cnfn shuffle2(char8, char8, uchar8);
14948 char8 __ovld __cnfn shuffle2(char16, char16, uchar8);
14949 
14950 uchar8 __ovld __cnfn shuffle2(uchar2, uchar2, uchar8);
14951 uchar8 __ovld __cnfn shuffle2(uchar4, uchar4, uchar8);
14952 uchar8 __ovld __cnfn shuffle2(uchar8, uchar8, uchar8);
14953 uchar8 __ovld __cnfn shuffle2(uchar16, uchar16, uchar8);
14954 
14955 short8 __ovld __cnfn shuffle2(short2, short2, ushort8);
14956 short8 __ovld __cnfn shuffle2(short4, short4, ushort8);
14957 short8 __ovld __cnfn shuffle2(short8, short8, ushort8);
14958 short8 __ovld __cnfn shuffle2(short16, short16, ushort8);
14959 
14960 ushort8 __ovld __cnfn shuffle2(ushort2, ushort2, ushort8);
14961 ushort8 __ovld __cnfn shuffle2(ushort4, ushort4, ushort8);
14962 ushort8 __ovld __cnfn shuffle2(ushort8, ushort8, ushort8);
14963 ushort8 __ovld __cnfn shuffle2(ushort16, ushort16, ushort8);
14964 
14967 int8 __ovld __cnfn shuffle2(int8, int8, uint8);
14968 int8 __ovld __cnfn shuffle2(int16, int16, uint8);
14969 
14972 uint8 __ovld __cnfn shuffle2(uint8, uint8, uint8);
14973 uint8 __ovld __cnfn shuffle2(uint16, uint16, uint8);
14974 
14975 long8 __ovld __cnfn shuffle2(long2, long2, ulong8);
14976 long8 __ovld __cnfn shuffle2(long4, long4, ulong8);
14977 long8 __ovld __cnfn shuffle2(long8, long8, ulong8);
14978 long8 __ovld __cnfn shuffle2(long16, long16, ulong8);
14979 
14980 ulong8 __ovld __cnfn shuffle2(ulong2, ulong2, ulong8);
14981 ulong8 __ovld __cnfn shuffle2(ulong4, ulong4, ulong8);
14982 ulong8 __ovld __cnfn shuffle2(ulong8, ulong8, ulong8);
14983 ulong8 __ovld __cnfn shuffle2(ulong16, ulong16, ulong8);
14984 
14987 float8 __ovld __cnfn shuffle2(float8, float8, uint8);
14988 float8 __ovld __cnfn shuffle2(float16, float16, uint8);
14989 
14990 char16 __ovld __cnfn shuffle2(char2, char2, uchar16);
14991 char16 __ovld __cnfn shuffle2(char4, char4, uchar16);
14992 char16 __ovld __cnfn shuffle2(char8, char8, uchar16);
14993 char16 __ovld __cnfn shuffle2(char16, char16, uchar16);
14994 
14995 uchar16 __ovld __cnfn shuffle2(uchar2, uchar2, uchar16);
14996 uchar16 __ovld __cnfn shuffle2(uchar4, uchar4, uchar16);
14997 uchar16 __ovld __cnfn shuffle2(uchar8, uchar8, uchar16);
14998 uchar16 __ovld __cnfn shuffle2(uchar16, uchar16, uchar16);
14999 
15000 short16 __ovld __cnfn shuffle2(short2, short2, ushort16);
15001 short16 __ovld __cnfn shuffle2(short4, short4, ushort16);
15002 short16 __ovld __cnfn shuffle2(short8, short8, ushort16);
15003 short16 __ovld __cnfn shuffle2(short16, short16, ushort16);
15004 
15005 ushort16 __ovld __cnfn shuffle2(ushort2, ushort2, ushort16);
15006 ushort16 __ovld __cnfn shuffle2(ushort4, ushort4, ushort16);
15007 ushort16 __ovld __cnfn shuffle2(ushort8, ushort8, ushort16);
15008 ushort16 __ovld __cnfn shuffle2(ushort16, ushort16, ushort16);
15009 
15010 int16 __ovld __cnfn shuffle2(int2, int2, uint16);
15011 int16 __ovld __cnfn shuffle2(int4, int4, uint16);
15012 int16 __ovld __cnfn shuffle2(int8, int8, uint16);
15013 int16 __ovld __cnfn shuffle2(int16, int16, uint16);
15014 
15015 uint16 __ovld __cnfn shuffle2(uint2, uint2, uint16);
15016 uint16 __ovld __cnfn shuffle2(uint4, uint4, uint16);
15017 uint16 __ovld __cnfn shuffle2(uint8, uint8, uint16);
15018 uint16 __ovld __cnfn shuffle2(uint16, uint16, uint16);
15019 
15020 long16 __ovld __cnfn shuffle2(long2, long2, ulong16);
15021 long16 __ovld __cnfn shuffle2(long4, long4, ulong16);
15022 long16 __ovld __cnfn shuffle2(long8, long8, ulong16);
15023 long16 __ovld __cnfn shuffle2(long16, long16, ulong16);
15024 
15025 ulong16 __ovld __cnfn shuffle2(ulong2, ulong2, ulong16);
15026 ulong16 __ovld __cnfn shuffle2(ulong4, ulong4, ulong16);
15027 ulong16 __ovld __cnfn shuffle2(ulong8, ulong8, ulong16);
15028 ulong16 __ovld __cnfn shuffle2(ulong16, ulong16, ulong16);
15029 
15030 float16 __ovld __cnfn shuffle2(float2, float2, uint16);
15031 float16 __ovld __cnfn shuffle2(float4, float4, uint16);
15032 float16 __ovld __cnfn shuffle2(float8, float8, uint16);
15033 float16 __ovld __cnfn shuffle2(float16, float16, uint16);
15034 
15035 #ifdef cl_khr_fp64
15038 double2 __ovld __cnfn shuffle2(double8, double8, ulong2);
15039 double2 __ovld __cnfn shuffle2(double16, double16, ulong2);
15040 
15043 double4 __ovld __cnfn shuffle2(double8, double8, ulong4);
15044 double4 __ovld __cnfn shuffle2(double16, double16, ulong4);
15045 
15046 double8 __ovld __cnfn shuffle2(double2, double2, ulong8);
15047 double8 __ovld __cnfn shuffle2(double4, double4, ulong8);
15048 double8 __ovld __cnfn shuffle2(double8, double8, ulong8);
15049 double8 __ovld __cnfn shuffle2(double16, double16, ulong8);
15050 
15051 double16 __ovld __cnfn shuffle2(double2, double2, ulong16);
15052 double16 __ovld __cnfn shuffle2(double4, double4, ulong16);
15053 double16 __ovld __cnfn shuffle2(double8, double8, ulong16);
15054 double16 __ovld __cnfn shuffle2(double16, double16, ulong16);
15055 #endif //cl_khr_fp64
15056 
15057 #ifdef cl_khr_fp16
15058 half2 __ovld __cnfn shuffle2(half2, half2, ushort2);
15059 half2 __ovld __cnfn shuffle2(half4, half4, ushort2);
15060 half2 __ovld __cnfn shuffle2(half8, half8, ushort2);
15061 half2 __ovld __cnfn shuffle2(half16, half16, ushort2);
15062 
15063 half4 __ovld __cnfn shuffle2(half2, half2, ushort4);
15064 half4 __ovld __cnfn shuffle2(half4, half4, ushort4);
15065 half4 __ovld __cnfn shuffle2(half8, half8, ushort4);
15066 half4 __ovld __cnfn shuffle2(half16, half16, ushort4);
15067 
15068 half8 __ovld __cnfn shuffle2(half2, half2, ushort8);
15069 half8 __ovld __cnfn shuffle2(half4, half4, ushort8);
15070 half8 __ovld __cnfn shuffle2(half8, half8, ushort8);
15071 half8 __ovld __cnfn shuffle2(half16, half16, ushort8);
15072 
15073 half16 __ovld __cnfn shuffle2(half2, half2, ushort16);
15074 half16 __ovld __cnfn shuffle2(half4, half4, ushort16);
15075 half16 __ovld __cnfn shuffle2(half8, half8, ushort16);
15076 half16 __ovld __cnfn shuffle2(half16, half16, ushort16);
15077 #endif //cl_khr_fp16
15078 
15079 // OpenCL v1.1 s6.11.3, v1.2 s6.12.14, v2.0 s6.13.14 - Image Read and Write Functions
15080 
15081 #ifdef cl_khr_gl_msaa_sharing
15082 #pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable
15083 #endif //cl_khr_gl_msaa_sharing
15084 
15085 /**
15086  * Use the coordinate (coord.xy) to do an element lookup in
15087  * the 2D image object specified by image.
15088  *
15089  * Use the coordinate (coord.x, coord.y, coord.z) to do
15090  * an element lookup in the 3D image object specified
15091  * by image. coord.w is ignored.
15092  *
15093  * Use the coordinate (coord.z) to index into the
15094  * 2D image array object specified by image_array
15095  * and (coord.x, coord.y) to do an element lookup in
15096  * the 2D image object specified by image.
15097  *
15098  * Use the coordinate (x) to do an element lookup in
15099  * the 1D image object specified by image.
15100  *
15101  * Use the coordinate (coord.y) to index into the
15102  * 1D image array object specified by image_array
15103  * and (coord.x) to do an element lookup in
15104  * the 1D image object specified by image.
15105  *
15106  * Use the coordinate (cood.xy) and sample to do an
15107  * element lookup in the 2D multi-sample image specified
15108  * by image.
15109  *
15110  * Use coord.xy and sample to do an element
15111  * lookup in the 2D multi-sample image layer
15112  * identified by index coord.z in the 2D multi-sample
15113  * image array specified by image.
15114  *
15115  * For mipmap images, use the mip-level specified by
15116  * the Level-of-Detail (lod) or use gradients for LOD
15117  * computation.
15118  *
15119  * read_imagef returns floating-point values in the
15120  * range [0.0 ... 1.0] for image objects created with
15121  * image_channel_data_type set to one of the predefined
15122  * packed formats or CL_UNORM_INT8, or
15123  * CL_UNORM_INT16.
15124  *
15125  * read_imagef returns floating-point values in the
15126  * range [-1.0 ... 1.0] for image objects created with
15127  * image_channel_data_type set to CL_SNORM_INT8,
15128  * or CL_SNORM_INT16.
15129  *
15130  * read_imagef returns floating-point values for image
15131  * objects created with image_channel_data_type set to
15132  * CL_HALF_FLOAT or CL_FLOAT.
15133  *
15134  * read_imagei and read_imageui return
15135  * unnormalized signed integer and unsigned integer
15136  * values respectively. Each channel will be stored in a
15137  * 32-bit integer.
15138  *
15139  * read_imagei can only be used with image objects
15140  * created with image_channel_data_type set to one of
15141  * the following values:
15142  * CL_SIGNED_INT8,
15143  * CL_SIGNED_INT16 and
15144  * CL_SIGNED_INT32.
15145  * If the image_channel_data_type is not one of the
15146  * above values, the values returned by read_imagei
15147  * are undefined.
15148  *
15149  * read_imageui can only be used with image objects
15150  * created with image_channel_data_type set to one of
15151  * the following values:
15152  * CL_UNSIGNED_INT8,
15153  * CL_UNSIGNED_INT16 and
15154  * CL_UNSIGNED_INT32.
15155  * If the image_channel_data_type is not one of the
15156  * above values, the values returned by read_imageui
15157  * are undefined.
15158  *
15159  * The read_image{i|ui} calls support a nearest filter
15160  * only. The filter_mode specified in sampler
15161  * must be set to CLK_FILTER_NEAREST; otherwise
15162  * the values returned are undefined.
15163 
15164  * The read_image{f|i|ui} calls that take
15165  * integer coordinates must use a sampler with
15166  * normalized coordinates set to
15167  * CLK_NORMALIZED_COORDS_FALSE and
15168  * addressing mode set to
15169  * CLK_ADDRESS_CLAMP_TO_EDGE,
15170  * CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE;
15171  * otherwise the values returned are undefined.
15172  *
15173  * Values returned by read_imagef for image objects
15174  * with image_channel_data_type values not specified
15175  * in the description above are undefined.
15176  */
15177 
15178 float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, int2);
15179 float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2);
15180 
15181 int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, int2);
15182 int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2);
15183 uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, int2);
15184 uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2);
15185 
15186 float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, int4);
15187 float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4);
15188 
15189 int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, int4);
15190 int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4);
15191 uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, int4);
15192 uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4);
15193 
15194 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15195 float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, int4);
15196 float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4);
15197 
15198 int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, int4);
15199 int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4);
15200 uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, int4);
15201 uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4);
15202 #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15203 
15204 float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, int);
15205 float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float);
15206 
15207 int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, int);
15208 int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float);
15209 uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, int);
15210 uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float);
15211 
15212 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15213 float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, int2);
15214 float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2);
15215 
15216 int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, int2);
15217 int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2);
15218 uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, int2);
15219 uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2);
15220 #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15221 
15222 #ifdef cl_khr_depth_images
15223 float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2);
15224 float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, int2);
15225 
15226 float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4);
15227 float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, int4);
15228 #endif //cl_khr_depth_images
15229 
15230 #if defined(cl_khr_gl_msaa_sharing)
15231 float4 __ovld __purefn read_imagef(read_only image2d_msaa_t, int2, int);
15232 int4 __ovld __purefn read_imagei(read_only image2d_msaa_t, int2, int);
15233 uint4 __ovld __purefn read_imageui(read_only image2d_msaa_t, int2, int);
15234 
15235 float __ovld __purefn read_imagef(read_only image2d_msaa_depth_t, int2, int);
15236 
15237 float4 __ovld __purefn read_imagef(read_only image2d_array_msaa_t, int4, int);
15238 int4 __ovld __purefn read_imagei(read_only image2d_array_msaa_t, int4, int);
15239 uint4 __ovld __purefn read_imageui(read_only image2d_array_msaa_t, int4, int);
15240 
15241 float __ovld __purefn read_imagef(read_only image2d_array_msaa_depth_t, int4, int);
15242 #endif //cl_khr_gl_msaa_sharing
15243 
15244 // OpenCL Extension v2.0 s9.18 - Mipmaps
15245 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15246 #ifdef cl_khr_mipmap_image
15247 
15248 float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float, float);
15249 int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float, float);
15250 uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float, float);
15251 
15252 float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2, float);
15253 int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2, float);
15254 uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2, float);
15255 
15256 float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2, float);
15257 int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2, float);
15258 uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2, float);
15259 
15260 #ifdef cl_khr_depth_images
15261 float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2, float);
15262 #endif // cl_khr_depth_images
15263 
15264 float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4, float);
15265 int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4, float);
15266 uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4, float);
15267 
15268 #ifdef cl_khr_depth_images
15269 float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4, float);
15270 #endif // cl_khr_depth_images
15271 
15272 float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4, float);
15273 int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4, float);
15274 uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4, float);
15275 
15276 float4 __ovld __purefn read_imagef(read_only image1d_t, sampler_t, float, float, float);
15277 int4 __ovld __purefn read_imagei(read_only image1d_t, sampler_t, float, float, float);
15278 uint4 __ovld __purefn read_imageui(read_only image1d_t, sampler_t, float, float, float);
15279 
15280 float4 __ovld __purefn read_imagef(read_only image1d_array_t, sampler_t, float2, float, float);
15281 int4 __ovld __purefn read_imagei(read_only image1d_array_t, sampler_t, float2, float, float);
15282 uint4 __ovld __purefn read_imageui(read_only image1d_array_t, sampler_t, float2, float, float);
15283 
15284 float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, float2, float2, float2);
15285 int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, float2, float2, float2);
15286 uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, float2, float2, float2);
15287 
15288 #ifdef cl_khr_depth_images
15289 float __ovld __purefn read_imagef(read_only image2d_depth_t, sampler_t, float2, float2, float2);
15290 #endif // cl_khr_depth_images
15291 
15292 float4 __ovld __purefn read_imagef(read_only image2d_array_t, sampler_t, float4, float2, float2);
15293 int4 __ovld __purefn read_imagei(read_only image2d_array_t, sampler_t, float4, float2, float2);
15294 uint4 __ovld __purefn read_imageui(read_only image2d_array_t, sampler_t, float4, float2, float2);
15295 
15296 #ifdef cl_khr_depth_images
15297 float __ovld __purefn read_imagef(read_only image2d_array_depth_t, sampler_t, float4, float2, float2);
15298 #endif // cl_khr_depth_images
15299 
15300 float4 __ovld __purefn read_imagef(read_only image3d_t, sampler_t, float4, float4, float4);
15301 int4 __ovld __purefn read_imagei(read_only image3d_t, sampler_t, float4, float4, float4);
15302 uint4 __ovld __purefn read_imageui(read_only image3d_t, sampler_t, float4, float4, float4);
15303 
15304 #endif //cl_khr_mipmap_image
15305 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15306 
15307 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15308 
15309 /**
15310 * Sampler-less Image Access
15311 */
15312 
15313 float4 __ovld __purefn read_imagef(read_only image1d_t, int);
15314 int4 __ovld __purefn read_imagei(read_only image1d_t, int);
15315 uint4 __ovld __purefn read_imageui(read_only image1d_t, int);
15316 
15317 float4 __ovld __purefn read_imagef(read_only image1d_buffer_t, int);
15318 int4 __ovld __purefn read_imagei(read_only image1d_buffer_t, int);
15319 uint4 __ovld __purefn read_imageui(read_only image1d_buffer_t, int);
15320 
15321 float4 __ovld __purefn read_imagef(read_only image1d_array_t, int2);
15322 int4 __ovld __purefn read_imagei(read_only image1d_array_t, int2);
15323 uint4 __ovld __purefn read_imageui(read_only image1d_array_t, int2);
15324 
15325 float4 __ovld __purefn read_imagef(read_only image2d_t, int2);
15326 int4 __ovld __purefn read_imagei(read_only image2d_t, int2);
15327 uint4 __ovld __purefn read_imageui(read_only image2d_t, int2);
15328 
15329 float4 __ovld __purefn read_imagef(read_only image2d_array_t, int4);
15330 int4 __ovld __purefn read_imagei(read_only image2d_array_t, int4);
15331 uint4 __ovld __purefn read_imageui(read_only image2d_array_t, int4);
15332 
15333 #ifdef cl_khr_depth_images
15334 float __ovld __purefn read_imagef(read_only image2d_depth_t, int2);
15335 float __ovld __purefn read_imagef(read_only image2d_array_depth_t, int4);
15336 #endif //cl_khr_depth_images
15337 
15338 float4 __ovld __purefn read_imagef(read_only image3d_t, int4);
15339 int4 __ovld __purefn read_imagei(read_only image3d_t, int4);
15340 uint4 __ovld __purefn read_imageui(read_only image3d_t, int4);
15341 
15342 #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15343 
15344 // Image read functions returning half4 type
15345 #ifdef cl_khr_fp16
15346 half4 __ovld __purefn read_imageh(read_only image1d_t, sampler_t, int);
15347 half4 __ovld __purefn read_imageh(read_only image1d_t, sampler_t, float);
15348 half4 __ovld __purefn read_imageh(read_only image2d_t, sampler_t, int2);
15349 half4 __ovld __purefn read_imageh(read_only image2d_t, sampler_t, float2);
15350 half4 __ovld __purefn read_imageh(read_only image3d_t, sampler_t, int4);
15351 half4 __ovld __purefn read_imageh(read_only image3d_t, sampler_t, float4);
15352 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15353 half4 __ovld __purefn read_imageh(read_only image1d_array_t, sampler_t, int2);
15354 half4 __ovld __purefn read_imageh(read_only image1d_array_t, sampler_t, float2);
15355 half4 __ovld __purefn read_imageh(read_only image2d_array_t, sampler_t, int4);
15356 half4 __ovld __purefn read_imageh(read_only image2d_array_t, sampler_t, float4);
15357 /**
15358  * Sampler-less Image Access
15359  */
15360 half4 __ovld __purefn read_imageh(read_only image1d_t, int);
15361 half4 __ovld __purefn read_imageh(read_only image2d_t, int2);
15362 half4 __ovld __purefn read_imageh(read_only image3d_t, int4);
15363 half4 __ovld __purefn read_imageh(read_only image1d_array_t, int2);
15364 half4 __ovld __purefn read_imageh(read_only image2d_array_t, int4);
15365 half4 __ovld __purefn read_imageh(read_only image1d_buffer_t, int);
15366 #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
15367 #endif //cl_khr_fp16
15368 
15369 // Image read functions for read_write images
15370 #if defined(__opencl_c_read_write_images)
15371 float4 __ovld __purefn read_imagef(read_write image1d_t, int);
15372 int4 __ovld __purefn read_imagei(read_write image1d_t, int);
15373 uint4 __ovld __purefn read_imageui(read_write image1d_t, int);
15374 
15375 float4 __ovld __purefn read_imagef(read_write image1d_buffer_t, int);
15376 int4 __ovld __purefn read_imagei(read_write image1d_buffer_t, int);
15377 uint4 __ovld __purefn read_imageui(read_write image1d_buffer_t, int);
15378 
15379 float4 __ovld __purefn read_imagef(read_write image1d_array_t, int2);
15380 int4 __ovld __purefn read_imagei(read_write image1d_array_t, int2);
15381 uint4 __ovld __purefn read_imageui(read_write image1d_array_t, int2);
15382 
15383 float4 __ovld __purefn read_imagef(read_write image2d_t, int2);
15384 int4 __ovld __purefn read_imagei(read_write image2d_t, int2);
15385 uint4 __ovld __purefn read_imageui(read_write image2d_t, int2);
15386 
15387 float4 __ovld __purefn read_imagef(read_write image2d_array_t, int4);
15388 int4 __ovld __purefn read_imagei(read_write image2d_array_t, int4);
15389 uint4 __ovld __purefn read_imageui(read_write image2d_array_t, int4);
15390 
15391 #ifdef cl_khr_3d_image_writes
15392 float4 __ovld __purefn read_imagef(read_write image3d_t, int4);
15393 int4 __ovld __purefn read_imagei(read_write image3d_t, int4);
15394 uint4 __ovld __purefn read_imageui(read_write image3d_t, int4);
15395 #endif // cl_khr_3d_image_writes
15396 
15397 #ifdef cl_khr_depth_images
15398 float __ovld __purefn read_imagef(read_write image2d_depth_t, int2);
15399 float __ovld __purefn read_imagef(read_write image2d_array_depth_t, int4);
15400 #endif //cl_khr_depth_images
15401 
15402 #if cl_khr_gl_msaa_sharing
15403 float4 __ovld __purefn read_imagef(read_write image2d_msaa_t, int2, int);
15404 int4 __ovld __purefn read_imagei(read_write image2d_msaa_t, int2, int);
15405 uint4 __ovld __purefn read_imageui(read_write image2d_msaa_t, int2, int);
15406 
15407 float4 __ovld __purefn read_imagef(read_write image2d_array_msaa_t, int4, int);
15408 int4 __ovld __purefn read_imagei(read_write image2d_array_msaa_t, int4, int);
15409 uint4 __ovld __purefn read_imageui(read_write image2d_array_msaa_t, int4, int);
15410 
15411 float __ovld __purefn read_imagef(read_write image2d_msaa_depth_t, int2, int);
15412 float __ovld __purefn read_imagef(read_write image2d_array_msaa_depth_t, int4, int);
15413 #endif //cl_khr_gl_msaa_sharing
15414 
15415 #ifdef cl_khr_mipmap_image
15416 float4 __ovld __purefn read_imagef(read_write image1d_t, sampler_t, float, float);
15417 int4 __ovld __purefn read_imagei(read_write image1d_t, sampler_t, float, float);
15418 uint4 __ovld __purefn read_imageui(read_write image1d_t, sampler_t, float, float);
15419 
15420 float4 __ovld __purefn read_imagef(read_write image1d_array_t, sampler_t, float2, float);
15421 int4 __ovld __purefn read_imagei(read_write image1d_array_t, sampler_t, float2, float);
15422 uint4 __ovld __purefn read_imageui(read_write image1d_array_t, sampler_t, float2, float);
15423 
15424 float4 __ovld __purefn read_imagef(read_write image2d_t, sampler_t, float2, float);
15425 int4 __ovld __purefn read_imagei(read_write image2d_t, sampler_t, float2, float);
15426 uint4 __ovld __purefn read_imageui(read_write image2d_t, sampler_t, float2, float);
15427 
15428 float __ovld __purefn read_imagef(read_write image2d_depth_t, sampler_t, float2, float);
15429 
15430 float4 __ovld __purefn read_imagef(read_write image2d_array_t, sampler_t, float4, float);
15431 int4 __ovld __purefn read_imagei(read_write image2d_array_t, sampler_t, float4, float);
15432 uint4 __ovld __purefn read_imageui(read_write image2d_array_t, sampler_t, float4, float);
15433 
15434 float __ovld __purefn read_imagef(read_write image2d_array_depth_t, sampler_t, float4, float);
15435 
15436 #ifdef cl_khr_3d_image_writes
15437 float4 __ovld __purefn read_imagef(read_write image3d_t, sampler_t, float4, float);
15438 int4 __ovld __purefn read_imagei(read_write image3d_t, sampler_t, float4, float);
15439 uint4 __ovld __purefn read_imageui(read_write image3d_t, sampler_t, float4, float);
15440 #endif // cl_khr_3d_image_writes
15441 
15442 float4 __ovld __purefn read_imagef(read_write image1d_t, sampler_t, float, float, float);
15443 int4 __ovld __purefn read_imagei(read_write image1d_t, sampler_t, float, float, float);
15444 uint4 __ovld __purefn read_imageui(read_write image1d_t, sampler_t, float, float, float);
15445 
15446 float4 __ovld __purefn read_imagef(read_write image1d_array_t, sampler_t, float2, float, float);
15447 int4 __ovld __purefn read_imagei(read_write image1d_array_t, sampler_t, float2, float, float);
15448 uint4 __ovld __purefn read_imageui(read_write image1d_array_t, sampler_t, float2, float, float);
15449 
15450 float4 __ovld __purefn read_imagef(read_write image2d_t, sampler_t, float2, float2, float2);
15451 int4 __ovld __purefn read_imagei(read_write image2d_t, sampler_t, float2, float2, float2);
15452 uint4 __ovld __purefn read_imageui(read_write image2d_t, sampler_t, float2, float2, float2);
15453 
15454 float __ovld __purefn read_imagef(read_write image2d_depth_t, sampler_t, float2, float2, float2);
15455 
15456 float4 __ovld __purefn read_imagef(read_write image2d_array_t, sampler_t, float4, float2, float2);
15457 int4 __ovld __purefn read_imagei(read_write image2d_array_t, sampler_t, float4, float2, float2);
15458 uint4 __ovld __purefn read_imageui(read_write image2d_array_t, sampler_t, float4, float2, float2);
15459 
15460 float __ovld __purefn read_imagef(read_write image2d_array_depth_t, sampler_t, float4, float2, float2);
15461 
15462 #ifdef cl_khr_3d_image_writes
15463 float4 __ovld __purefn read_imagef(read_write image3d_t, sampler_t, float4, float4, float4);
15464 int4 __ovld __purefn read_imagei(read_write image3d_t, sampler_t, float4, float4, float4);
15465 uint4 __ovld __purefn read_imageui(read_write image3d_t, sampler_t, float4, float4, float4);
15466 #endif // cl_khr_3d_image_writes
15467 
15468 #endif //cl_khr_mipmap_image
15469 
15470 // Image read functions returning half4 type
15471 #ifdef cl_khr_fp16
15472 half4 __ovld __purefn read_imageh(read_write image1d_t, int);
15473 half4 __ovld __purefn read_imageh(read_write image2d_t, int2);
15474 #ifdef cl_khr_3d_image_writes
15475 half4 __ovld __purefn read_imageh(read_write image3d_t, int4);
15476 #endif // cl_khr_3d_image_writes
15477 half4 __ovld __purefn read_imageh(read_write image1d_array_t, int2);
15478 half4 __ovld __purefn read_imageh(read_write image2d_array_t, int4);
15479 half4 __ovld __purefn read_imageh(read_write image1d_buffer_t, int);
15480 #endif //cl_khr_fp16
15481 #endif //defined(__opencl_c_read_write_images)
15482 
15483 /**
15484  * Write color value to location specified by coordinate
15485  * (coord.x, coord.y) in the 2D image object specified by image.
15486  * (coord.x, coord.y) are considered to be unnormalized coordinates
15487  * and must be in the range 0 ... image width - 1, and 0
15488  * ... image height - 1.
15489 
15490  * Write color value to location specified by coordinate
15491  * (coord.x, coord.y) in the 2D image object specified by index
15492  * (coord.z) of the 2D image array object image_array.
15493  * (coord.x, coord.y) are considered to be unnormalized
15494  * coordinates and must be in the range 0 ... image width
15495  * - 1.
15496  *
15497  * Write color value to location specified by coordinate
15498  * (coord) in the 1D image (buffer) object specified by image.
15499  * coord is considered to be unnormalized coordinates
15500  * and must be in the range 0 ... image width - 1.
15501  *
15502  * Write color value to location specified by coordinate
15503  * (coord.x) in the 1D image object specified by index
15504  * (coord.y) of the 1D image array object image_array.
15505  * x is considered to be unnormalized coordinates
15506  * and must be in the range 0 ... image width - 1.
15507  *
15508  * Write color value to location specified by coordinate
15509  * (coord.x, coord.y, coord.z) in the 3D image object specified by image.
15510  * coord.x & coord.y are considered to be unnormalized coordinates
15511  * and must be in the range 0 ... image width - 1, and 0
15512  * ... image height - 1.
15513  *
15514  * For mipmap images, use mip-level specified by lod.
15515  *
15516  * Appropriate data format conversion to the specified
15517  * image format is done before writing the color value.
15518  *
15519  * write_imagef can only be used with image objects
15520  * created with image_channel_data_type set to one of
15521  * the pre-defined packed formats or set to
15522  * CL_SNORM_INT8, CL_UNORM_INT8,
15523  * CL_SNORM_INT16, CL_UNORM_INT16,
15524  * CL_HALF_FLOAT or CL_FLOAT. Appropriate data
15525  * format conversion will be done to convert channel
15526  * data from a floating-point value to actual data format
15527  * in which the channels are stored.
15528  *
15529  * write_imagei can only be used with image objects
15530  * created with image_channel_data_type set to one of
15531  * the following values:
15532  * CL_SIGNED_INT8,
15533  * CL_SIGNED_INT16 and
15534  * CL_SIGNED_INT32.
15535  *
15536  * write_imageui can only be used with image objects
15537  * created with image_channel_data_type set to one of
15538  * the following values:
15539  * CL_UNSIGNED_INT8,
15540  * CL_UNSIGNED_INT16 and
15541  * CL_UNSIGNED_INT32.
15542  *
15543  * The behavior of write_imagef, write_imagei and
15544  * write_imageui for image objects created with
15545  * image_channel_data_type values not specified in
15546  * the description above or with (x, y) coordinate
15547  * values that are not in the range (0 ... image width -1,
15548  * 0 ... image height - 1), respectively, is undefined.
15549  */
15550 void __ovld write_imagef(write_only image2d_t, int2, float4);
15551 void __ovld write_imagei(write_only image2d_t, int2, int4);
15552 void __ovld write_imageui(write_only image2d_t, int2, uint4);
15553 
15554 void __ovld write_imagef(write_only image2d_array_t, int4, float4);
15555 void __ovld write_imagei(write_only image2d_array_t, int4, int4);
15556 void __ovld write_imageui(write_only image2d_array_t, int4, uint4);
15557 
15558 void __ovld write_imagef(write_only image1d_t, int, float4);
15559 void __ovld write_imagei(write_only image1d_t, int, int4);
15560 void __ovld write_imageui(write_only image1d_t, int, uint4);
15561 
15562 void __ovld write_imagef(write_only image1d_buffer_t, int, float4);
15563 void __ovld write_imagei(write_only image1d_buffer_t, int, int4);
15564 void __ovld write_imageui(write_only image1d_buffer_t, int, uint4);
15565 
15566 void __ovld write_imagef(write_only image1d_array_t, int2, float4);
15567 void __ovld write_imagei(write_only image1d_array_t, int2, int4);
15568 void __ovld write_imageui(write_only image1d_array_t, int2, uint4);
15569 
15570 #ifdef cl_khr_3d_image_writes
15571 void __ovld write_imagef(write_only image3d_t, int4, float4);
15572 void __ovld write_imagei(write_only image3d_t, int4, int4);
15573 void __ovld write_imageui(write_only image3d_t, int4, uint4);
15574 #endif
15575 
15576 #ifdef cl_khr_depth_images
15577 void __ovld write_imagef(write_only image2d_depth_t, int2, float);
15578 void __ovld write_imagef(write_only image2d_array_depth_t, int4, float);
15579 #endif //cl_khr_depth_images
15580 
15581 // OpenCL Extension v2.0 s9.18 - Mipmaps
15582 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15583 #if defined(cl_khr_mipmap_image_writes)
15584 void __ovld write_imagef(write_only image1d_t, int, int, float4);
15585 void __ovld write_imagei(write_only image1d_t, int, int, int4);
15586 void __ovld write_imageui(write_only image1d_t, int, int, uint4);
15587 
15588 void __ovld write_imagef(write_only image1d_array_t, int2, int, float4);
15589 void __ovld write_imagei(write_only image1d_array_t, int2, int, int4);
15590 void __ovld write_imageui(write_only image1d_array_t, int2, int, uint4);
15591 
15592 void __ovld write_imagef(write_only image2d_t, int2, int, float4);
15593 void __ovld write_imagei(write_only image2d_t, int2, int, int4);
15594 void __ovld write_imageui(write_only image2d_t, int2, int, uint4);
15595 
15596 void __ovld write_imagef(write_only image2d_array_t, int4, int, float4);
15597 void __ovld write_imagei(write_only image2d_array_t, int4, int, int4);
15598 void __ovld write_imageui(write_only image2d_array_t, int4, int, uint4);
15599 
15600 void __ovld write_imagef(write_only image2d_depth_t, int2, int, float);
15601 void __ovld write_imagef(write_only image2d_array_depth_t, int4, int, float);
15602 
15603 #ifdef cl_khr_3d_image_writes
15604 void __ovld write_imagef(write_only image3d_t, int4, int, float4);
15605 void __ovld write_imagei(write_only image3d_t, int4, int, int4);
15606 void __ovld write_imageui(write_only image3d_t, int4, int, uint4);
15607 #endif //cl_khr_3d_image_writes
15608 
15609 #endif //defined(cl_khr_mipmap_image_writes)
15610 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15611 
15612 // Image write functions for half4 type
15613 #ifdef cl_khr_fp16
15614 void __ovld write_imageh(write_only image1d_t, int, half4);
15615 void __ovld write_imageh(write_only image2d_t, int2, half4);
15616 #ifdef cl_khr_3d_image_writes
15617 void __ovld write_imageh(write_only image3d_t, int4, half4);
15618 #endif
15619 void __ovld write_imageh(write_only image1d_array_t, int2, half4);
15620 void __ovld write_imageh(write_only image2d_array_t, int4, half4);
15621 void __ovld write_imageh(write_only image1d_buffer_t, int, half4);
15622 #endif //cl_khr_fp16
15623 
15624 // Image write functions for read_write images
15625 #if defined(__opencl_c_read_write_images)
15626 void __ovld write_imagef(read_write image2d_t, int2, float4);
15627 void __ovld write_imagei(read_write image2d_t, int2, int4);
15628 void __ovld write_imageui(read_write image2d_t, int2, uint4);
15629 
15630 void __ovld write_imagef(read_write image2d_array_t, int4, float4);
15631 void __ovld write_imagei(read_write image2d_array_t, int4, int4);
15632 void __ovld write_imageui(read_write image2d_array_t, int4, uint4);
15633 
15634 void __ovld write_imagef(read_write image1d_t, int, float4);
15635 void __ovld write_imagei(read_write image1d_t, int, int4);
15636 void __ovld write_imageui(read_write image1d_t, int, uint4);
15637 
15638 void __ovld write_imagef(read_write image1d_buffer_t, int, float4);
15639 void __ovld write_imagei(read_write image1d_buffer_t, int, int4);
15640 void __ovld write_imageui(read_write image1d_buffer_t, int, uint4);
15641 
15642 void __ovld write_imagef(read_write image1d_array_t, int2, float4);
15643 void __ovld write_imagei(read_write image1d_array_t, int2, int4);
15644 void __ovld write_imageui(read_write image1d_array_t, int2, uint4);
15645 
15646 #ifdef cl_khr_3d_image_writes
15647 void __ovld write_imagef(read_write image3d_t, int4, float4);
15648 void __ovld write_imagei(read_write image3d_t, int4, int4);
15649 void __ovld write_imageui(read_write image3d_t, int4, uint4);
15650 #endif
15651 
15652 #ifdef cl_khr_depth_images
15653 void __ovld write_imagef(read_write image2d_depth_t, int2, float);
15654 void __ovld write_imagef(read_write image2d_array_depth_t, int4, float);
15655 #endif //cl_khr_depth_images
15656 
15657 #if defined(cl_khr_mipmap_image_writes)
15658 void __ovld write_imagef(read_write image1d_t, int, int, float4);
15659 void __ovld write_imagei(read_write image1d_t, int, int, int4);
15660 void __ovld write_imageui(read_write image1d_t, int, int, uint4);
15661 
15662 void __ovld write_imagef(read_write image1d_array_t, int2, int, float4);
15663 void __ovld write_imagei(read_write image1d_array_t, int2, int, int4);
15664 void __ovld write_imageui(read_write image1d_array_t, int2, int, uint4);
15665 
15666 void __ovld write_imagef(read_write image2d_t, int2, int, float4);
15667 void __ovld write_imagei(read_write image2d_t, int2, int, int4);
15668 void __ovld write_imageui(read_write image2d_t, int2, int, uint4);
15669 
15670 void __ovld write_imagef(read_write image2d_array_t, int4, int, float4);
15671 void __ovld write_imagei(read_write image2d_array_t, int4, int, int4);
15672 void __ovld write_imageui(read_write image2d_array_t, int4, int, uint4);
15673 
15674 void __ovld write_imagef(read_write image2d_depth_t, int2, int, float);
15675 void __ovld write_imagef(read_write image2d_array_depth_t, int4, int, float);
15676 
15677 #ifdef cl_khr_3d_image_writes
15678 void __ovld write_imagef(read_write image3d_t, int4, int, float4);
15679 void __ovld write_imagei(read_write image3d_t, int4, int, int4);
15680 void __ovld write_imageui(read_write image3d_t, int4, int, uint4);
15681 #endif //cl_khr_3d_image_writes
15682 
15683 #endif //cl_khr_mipmap_image_writes
15684 
15685 // Image write functions for half4 type
15686 #ifdef cl_khr_fp16
15687 void __ovld write_imageh(read_write image1d_t, int, half4);
15688 void __ovld write_imageh(read_write image2d_t, int2, half4);
15689 #ifdef cl_khr_3d_image_writes
15690 void __ovld write_imageh(read_write image3d_t, int4, half4);
15691 #endif
15692 void __ovld write_imageh(read_write image1d_array_t, int2, half4);
15693 void __ovld write_imageh(read_write image2d_array_t, int4, half4);
15694 void __ovld write_imageh(read_write image1d_buffer_t, int, half4);
15695 #endif //cl_khr_fp16
15696 #endif //defined(__opencl_c_read_write_images)
15697 
15698 // Note: In OpenCL v1.0/1.1/1.2, image argument of image query builtin functions does not have
15699 // access qualifier, which by default assume read_only access qualifier. Image query builtin
15700 // functions with write_only image argument should also be declared.
15701 
15702 /**
15703  * Return the image width in pixels.
15704  *
15705  */
15706 int __ovld __cnfn get_image_width(read_only image1d_t);
15707 int __ovld __cnfn get_image_width(read_only image1d_buffer_t);
15708 int __ovld __cnfn get_image_width(read_only image2d_t);
15709 int __ovld __cnfn get_image_width(read_only image3d_t);
15710 int __ovld __cnfn get_image_width(read_only image1d_array_t);
15711 int __ovld __cnfn get_image_width(read_only image2d_array_t);
15712 #ifdef cl_khr_depth_images
15713 int __ovld __cnfn get_image_width(read_only image2d_depth_t);
15714 int __ovld __cnfn get_image_width(read_only image2d_array_depth_t);
15715 #endif //cl_khr_depth_images
15716 #if defined(cl_khr_gl_msaa_sharing)
15717 int __ovld __cnfn get_image_width(read_only image2d_msaa_t);
15718 int __ovld __cnfn get_image_width(read_only image2d_msaa_depth_t);
15719 int __ovld __cnfn get_image_width(read_only image2d_array_msaa_t);
15720 int __ovld __cnfn get_image_width(read_only image2d_array_msaa_depth_t);
15721 #endif //cl_khr_gl_msaa_sharing
15722 
15723 int __ovld __cnfn get_image_width(write_only image1d_t);
15724 int __ovld __cnfn get_image_width(write_only image1d_buffer_t);
15725 int __ovld __cnfn get_image_width(write_only image2d_t);
15726 #ifdef cl_khr_3d_image_writes
15727 int __ovld __cnfn get_image_width(write_only image3d_t);
15728 #endif
15729 int __ovld __cnfn get_image_width(write_only image1d_array_t);
15730 int __ovld __cnfn get_image_width(write_only image2d_array_t);
15731 #ifdef cl_khr_depth_images
15732 int __ovld __cnfn get_image_width(write_only image2d_depth_t);
15733 int __ovld __cnfn get_image_width(write_only image2d_array_depth_t);
15734 #endif //cl_khr_depth_images
15735 #if defined(cl_khr_gl_msaa_sharing)
15736 int __ovld __cnfn get_image_width(write_only image2d_msaa_t);
15737 int __ovld __cnfn get_image_width(write_only image2d_msaa_depth_t);
15738 int __ovld __cnfn get_image_width(write_only image2d_array_msaa_t);
15739 int __ovld __cnfn get_image_width(write_only image2d_array_msaa_depth_t);
15740 #endif //cl_khr_gl_msaa_sharing
15741 
15742 #if defined(__opencl_c_read_write_images)
15743 int __ovld __cnfn get_image_width(read_write image1d_t);
15744 int __ovld __cnfn get_image_width(read_write image1d_buffer_t);
15745 int __ovld __cnfn get_image_width(read_write image2d_t);
15746 #ifdef cl_khr_3d_image_writes
15747 int __ovld __cnfn get_image_width(read_write image3d_t);
15748 #endif // cl_khr_3d_image_writes
15749 int __ovld __cnfn get_image_width(read_write image1d_array_t);
15750 int __ovld __cnfn get_image_width(read_write image2d_array_t);
15751 #ifdef cl_khr_depth_images
15752 int __ovld __cnfn get_image_width(read_write image2d_depth_t);
15753 int __ovld __cnfn get_image_width(read_write image2d_array_depth_t);
15754 #endif //cl_khr_depth_images
15755 #if defined(cl_khr_gl_msaa_sharing)
15756 int __ovld __cnfn get_image_width(read_write image2d_msaa_t);
15757 int __ovld __cnfn get_image_width(read_write image2d_msaa_depth_t);
15758 int __ovld __cnfn get_image_width(read_write image2d_array_msaa_t);
15759 int __ovld __cnfn get_image_width(read_write image2d_array_msaa_depth_t);
15760 #endif //cl_khr_gl_msaa_sharing
15761 #endif //defined(__opencl_c_read_write_images)
15762 
15763 /**
15764  * Return the image height in pixels.
15765  */
15766 int __ovld __cnfn get_image_height(read_only image2d_t);
15767 int __ovld __cnfn get_image_height(read_only image3d_t);
15768 int __ovld __cnfn get_image_height(read_only image2d_array_t);
15769 #ifdef cl_khr_depth_images
15770 int __ovld __cnfn get_image_height(read_only image2d_depth_t);
15771 int __ovld __cnfn get_image_height(read_only image2d_array_depth_t);
15772 #endif //cl_khr_depth_images
15773 #if defined(cl_khr_gl_msaa_sharing)
15774 int __ovld __cnfn get_image_height(read_only image2d_msaa_t);
15775 int __ovld __cnfn get_image_height(read_only image2d_msaa_depth_t);
15776 int __ovld __cnfn get_image_height(read_only image2d_array_msaa_t);
15777 int __ovld __cnfn get_image_height(read_only image2d_array_msaa_depth_t);
15778 #endif //cl_khr_gl_msaa_sharing
15779 
15780 int __ovld __cnfn get_image_height(write_only image2d_t);
15781 #ifdef cl_khr_3d_image_writes
15782 int __ovld __cnfn get_image_height(write_only image3d_t);
15783 #endif
15784 int __ovld __cnfn get_image_height(write_only image2d_array_t);
15785 #ifdef cl_khr_depth_images
15786 int __ovld __cnfn get_image_height(write_only image2d_depth_t);
15787 int __ovld __cnfn get_image_height(write_only image2d_array_depth_t);
15788 #endif //cl_khr_depth_images
15789 #if defined(cl_khr_gl_msaa_sharing)
15790 int __ovld __cnfn get_image_height(write_only image2d_msaa_t);
15791 int __ovld __cnfn get_image_height(write_only image2d_msaa_depth_t);
15792 int __ovld __cnfn get_image_height(write_only image2d_array_msaa_t);
15793 int __ovld __cnfn get_image_height(write_only image2d_array_msaa_depth_t);
15794 #endif //cl_khr_gl_msaa_sharing
15795 
15796 #if defined(__opencl_c_read_write_images)
15797 int __ovld __cnfn get_image_height(read_write image2d_t);
15798 #ifdef cl_khr_3d_image_writes
15799 int __ovld __cnfn get_image_height(read_write image3d_t);
15800 #endif // cl_khr_3d_image_writes
15801 int __ovld __cnfn get_image_height(read_write image2d_array_t);
15802 #ifdef cl_khr_depth_images
15803 int __ovld __cnfn get_image_height(read_write image2d_depth_t);
15804 int __ovld __cnfn get_image_height(read_write image2d_array_depth_t);
15805 #endif //cl_khr_depth_images
15806 #if defined(cl_khr_gl_msaa_sharing)
15807 int __ovld __cnfn get_image_height(read_write image2d_msaa_t);
15808 int __ovld __cnfn get_image_height(read_write image2d_msaa_depth_t);
15809 int __ovld __cnfn get_image_height(read_write image2d_array_msaa_t);
15810 int __ovld __cnfn get_image_height(read_write image2d_array_msaa_depth_t);
15811 #endif //cl_khr_gl_msaa_sharing
15812 #endif //defined(__opencl_c_read_write_images)
15813 
15814 /**
15815  * Return the image depth in pixels.
15816  */
15817 int __ovld __cnfn get_image_depth(read_only image3d_t);
15818 
15819 #ifdef cl_khr_3d_image_writes
15820 int __ovld __cnfn get_image_depth(write_only image3d_t);
15821 
15822 #if defined(__opencl_c_read_write_images)
15823 int __ovld __cnfn get_image_depth(read_write image3d_t);
15824 #endif //defined(__opencl_c_read_write_images)
15825 #endif // cl_khr_3d_image_writes
15826 
15827 // OpenCL Extension v2.0 s9.18 - Mipmaps
15828 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15829 #ifdef cl_khr_mipmap_image
15830 /**
15831  * Return the image miplevels.
15832  */
15833 
15834 int __ovld get_image_num_mip_levels(read_only image1d_t);
15835 int __ovld get_image_num_mip_levels(read_only image2d_t);
15836 int __ovld get_image_num_mip_levels(read_only image3d_t);
15837 
15838 int __ovld get_image_num_mip_levels(write_only image1d_t);
15839 int __ovld get_image_num_mip_levels(write_only image2d_t);
15840 #ifdef cl_khr_3d_image_writes
15841 int __ovld get_image_num_mip_levels(write_only image3d_t);
15842 #endif
15843 
15844 #if defined(__opencl_c_read_write_images)
15845 int __ovld get_image_num_mip_levels(read_write image1d_t);
15846 int __ovld get_image_num_mip_levels(read_write image2d_t);
15847 #ifdef cl_khr_3d_image_writes
15848 int __ovld get_image_num_mip_levels(read_write image3d_t);
15849 #endif // cl_khr_3d_image_writes
15850 #endif //defined(__opencl_c_read_write_images)
15851 
15852 int __ovld get_image_num_mip_levels(read_only image1d_array_t);
15853 int __ovld get_image_num_mip_levels(read_only image2d_array_t);
15854 #ifdef cl_khr_depth_images
15855 int __ovld get_image_num_mip_levels(read_only image2d_array_depth_t);
15856 int __ovld get_image_num_mip_levels(read_only image2d_depth_t);
15857 #endif // cl_khr_depth_images
15858 
15859 int __ovld get_image_num_mip_levels(write_only image1d_array_t);
15860 int __ovld get_image_num_mip_levels(write_only image2d_array_t);
15861 #ifdef cl_khr_depth_images
15862 int __ovld get_image_num_mip_levels(write_only image2d_array_depth_t);
15863 int __ovld get_image_num_mip_levels(write_only image2d_depth_t);
15864 #endif // cl_khr_depth_images
15865 
15866 #if defined(__opencl_c_read_write_images)
15867 int __ovld get_image_num_mip_levels(read_write image1d_array_t);
15868 int __ovld get_image_num_mip_levels(read_write image2d_array_t);
15869 #ifdef cl_khr_depth_images
15870 int __ovld get_image_num_mip_levels(read_write image2d_array_depth_t);
15871 int __ovld get_image_num_mip_levels(read_write image2d_depth_t);
15872 #endif // cl_khr_depth_images
15873 #endif //defined(__opencl_c_read_write_images)
15874 
15875 #endif //cl_khr_mipmap_image
15876 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
15877 
15878 /**
15879  * Return the channel data type. Valid values are:
15880  * CLK_SNORM_INT8
15881  * CLK_SNORM_INT16
15882  * CLK_UNORM_INT8
15883  * CLK_UNORM_INT16
15884  * CLK_UNORM_SHORT_565
15885  * CLK_UNORM_SHORT_555
15886  * CLK_UNORM_SHORT_101010
15887  * CLK_SIGNED_INT8
15888  * CLK_SIGNED_INT16
15889  * CLK_SIGNED_INT32
15890  * CLK_UNSIGNED_INT8
15891  * CLK_UNSIGNED_INT16
15892  * CLK_UNSIGNED_INT32
15893  * CLK_HALF_FLOAT
15894  * CLK_FLOAT
15895  */
15896 
15897 int __ovld __cnfn get_image_channel_data_type(read_only image1d_t);
15898 int __ovld __cnfn get_image_channel_data_type(read_only image1d_buffer_t);
15899 int __ovld __cnfn get_image_channel_data_type(read_only image2d_t);
15900 int __ovld __cnfn get_image_channel_data_type(read_only image3d_t);
15901 int __ovld __cnfn get_image_channel_data_type(read_only image1d_array_t);
15902 int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_t);
15903 #ifdef cl_khr_depth_images
15904 int __ovld __cnfn get_image_channel_data_type(read_only image2d_depth_t);
15905 int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_depth_t);
15906 #endif //cl_khr_depth_images
15907 #if defined(cl_khr_gl_msaa_sharing)
15908 int __ovld __cnfn get_image_channel_data_type(read_only image2d_msaa_t);
15909 int __ovld __cnfn get_image_channel_data_type(read_only image2d_msaa_depth_t);
15910 int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_msaa_t);
15911 int __ovld __cnfn get_image_channel_data_type(read_only image2d_array_msaa_depth_t);
15912 #endif //cl_khr_gl_msaa_sharing
15913 
15914 int __ovld __cnfn get_image_channel_data_type(write_only image1d_t);
15915 int __ovld __cnfn get_image_channel_data_type(write_only image1d_buffer_t);
15916 int __ovld __cnfn get_image_channel_data_type(write_only image2d_t);
15917 #ifdef cl_khr_3d_image_writes
15918 int __ovld __cnfn get_image_channel_data_type(write_only image3d_t);
15919 #endif
15920 int __ovld __cnfn get_image_channel_data_type(write_only image1d_array_t);
15921 int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_t);
15922 #ifdef cl_khr_depth_images
15923 int __ovld __cnfn get_image_channel_data_type(write_only image2d_depth_t);
15924 int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_depth_t);
15925 #endif //cl_khr_depth_images
15926 #if defined(cl_khr_gl_msaa_sharing)
15927 int __ovld __cnfn get_image_channel_data_type(write_only image2d_msaa_t);
15928 int __ovld __cnfn get_image_channel_data_type(write_only image2d_msaa_depth_t);
15929 int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_t);
15930 int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_depth_t);
15931 #endif //cl_khr_gl_msaa_sharing
15932 
15933 #if defined(__opencl_c_read_write_images)
15934 int __ovld __cnfn get_image_channel_data_type(read_write image1d_t);
15935 int __ovld __cnfn get_image_channel_data_type(read_write image1d_buffer_t);
15936 int __ovld __cnfn get_image_channel_data_type(read_write image2d_t);
15937 #ifdef cl_khr_3d_image_writes
15938 int __ovld __cnfn get_image_channel_data_type(read_write image3d_t);
15939 #endif // cl_khr_3d_image_writes
15940 int __ovld __cnfn get_image_channel_data_type(read_write image1d_array_t);
15941 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_t);
15942 #ifdef cl_khr_depth_images
15943 int __ovld __cnfn get_image_channel_data_type(read_write image2d_depth_t);
15944 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_depth_t);
15945 #endif //cl_khr_depth_images
15946 #if defined(cl_khr_gl_msaa_sharing)
15947 int __ovld __cnfn get_image_channel_data_type(read_write image2d_msaa_t);
15948 int __ovld __cnfn get_image_channel_data_type(read_write image2d_msaa_depth_t);
15949 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_t);
15950 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_depth_t);
15951 #endif //cl_khr_gl_msaa_sharing
15952 #endif //defined(__opencl_c_read_write_images)
15953 
15954 /**
15955  * Return the image channel order. Valid values are:
15956  * CLK_A
15957  * CLK_R
15958  * CLK_Rx
15959  * CLK_RG
15960  * CLK_RGx
15961  * CLK_RA
15962  * CLK_RGB
15963  * CLK_RGBx
15964  * CLK_RGBA
15965  * CLK_ARGB
15966  * CLK_BGRA
15967  * CLK_INTENSITY
15968  * CLK_LUMINANCE
15969  */
15970 
15971 int __ovld __cnfn get_image_channel_order(read_only image1d_t);
15972 int __ovld __cnfn get_image_channel_order(read_only image1d_buffer_t);
15973 int __ovld __cnfn get_image_channel_order(read_only image2d_t);
15974 int __ovld __cnfn get_image_channel_order(read_only image3d_t);
15975 int __ovld __cnfn get_image_channel_order(read_only image1d_array_t);
15976 int __ovld __cnfn get_image_channel_order(read_only image2d_array_t);
15977 #ifdef cl_khr_depth_images
15978 int __ovld __cnfn get_image_channel_order(read_only image2d_depth_t);
15979 int __ovld __cnfn get_image_channel_order(read_only image2d_array_depth_t);
15980 #endif //cl_khr_depth_images
15981 #if defined(cl_khr_gl_msaa_sharing)
15982 int __ovld __cnfn get_image_channel_order(read_only image2d_msaa_t);
15983 int __ovld __cnfn get_image_channel_order(read_only image2d_msaa_depth_t);
15984 int __ovld __cnfn get_image_channel_order(read_only image2d_array_msaa_t);
15985 int __ovld __cnfn get_image_channel_order(read_only image2d_array_msaa_depth_t);
15986 #endif //cl_khr_gl_msaa_sharing
15987 
15988 int __ovld __cnfn get_image_channel_order(write_only image1d_t);
15989 int __ovld __cnfn get_image_channel_order(write_only image1d_buffer_t);
15990 int __ovld __cnfn get_image_channel_order(write_only image2d_t);
15991 #ifdef cl_khr_3d_image_writes
15992 int __ovld __cnfn get_image_channel_order(write_only image3d_t);
15993 #endif
15994 int __ovld __cnfn get_image_channel_order(write_only image1d_array_t);
15995 int __ovld __cnfn get_image_channel_order(write_only image2d_array_t);
15996 #ifdef cl_khr_depth_images
15997 int __ovld __cnfn get_image_channel_order(write_only image2d_depth_t);
15998 int __ovld __cnfn get_image_channel_order(write_only image2d_array_depth_t);
15999 #endif //cl_khr_depth_images
16000 #if defined(cl_khr_gl_msaa_sharing)
16001 int __ovld __cnfn get_image_channel_order(write_only image2d_msaa_t);
16002 int __ovld __cnfn get_image_channel_order(write_only image2d_msaa_depth_t);
16003 int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_t);
16004 int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_depth_t);
16005 #endif //cl_khr_gl_msaa_sharing
16006 
16007 #if defined(__opencl_c_read_write_images)
16008 int __ovld __cnfn get_image_channel_order(read_write image1d_t);
16009 int __ovld __cnfn get_image_channel_order(read_write image1d_buffer_t);
16010 int __ovld __cnfn get_image_channel_order(read_write image2d_t);
16011 #ifdef cl_khr_3d_image_writes
16012 int __ovld __cnfn get_image_channel_order(read_write image3d_t);
16013 #endif // cl_khr_3d_image_writes
16014 int __ovld __cnfn get_image_channel_order(read_write image1d_array_t);
16015 int __ovld __cnfn get_image_channel_order(read_write image2d_array_t);
16016 #ifdef cl_khr_depth_images
16017 int __ovld __cnfn get_image_channel_order(read_write image2d_depth_t);
16018 int __ovld __cnfn get_image_channel_order(read_write image2d_array_depth_t);
16019 #endif //cl_khr_depth_images
16020 #if defined(cl_khr_gl_msaa_sharing)
16021 int __ovld __cnfn get_image_channel_order(read_write image2d_msaa_t);
16022 int __ovld __cnfn get_image_channel_order(read_write image2d_msaa_depth_t);
16023 int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_t);
16024 int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_depth_t);
16025 #endif //cl_khr_gl_msaa_sharing
16026 #endif //defined(__opencl_c_read_write_images)
16027 
16028 /**
16029  * Return the 2D image width and height as an int2
16030  * type. The width is returned in the x component, and
16031  * the height in the y component.
16032  */
16033 int2 __ovld __cnfn get_image_dim(read_only image2d_t);
16034 int2 __ovld __cnfn get_image_dim(read_only image2d_array_t);
16035 #ifdef cl_khr_depth_images
16036 int2 __ovld __cnfn get_image_dim(read_only image2d_array_depth_t);
16037 int2 __ovld __cnfn get_image_dim(read_only image2d_depth_t);
16038 #endif //cl_khr_depth_images
16039 #if defined(cl_khr_gl_msaa_sharing)
16040 int2 __ovld __cnfn get_image_dim(read_only image2d_msaa_t);
16041 int2 __ovld __cnfn get_image_dim(read_only image2d_msaa_depth_t);
16042 int2 __ovld __cnfn get_image_dim(read_only image2d_array_msaa_t);
16043 int2 __ovld __cnfn get_image_dim(read_only image2d_array_msaa_depth_t);
16044 #endif //cl_khr_gl_msaa_sharing
16045 
16046 int2 __ovld __cnfn get_image_dim(write_only image2d_t);
16047 int2 __ovld __cnfn get_image_dim(write_only image2d_array_t);
16048 #ifdef cl_khr_depth_images
16049 int2 __ovld __cnfn get_image_dim(write_only image2d_array_depth_t);
16050 int2 __ovld __cnfn get_image_dim(write_only image2d_depth_t);
16051 #endif //cl_khr_depth_images
16052 #if defined(cl_khr_gl_msaa_sharing)
16053 int2 __ovld __cnfn get_image_dim(write_only image2d_msaa_t);
16054 int2 __ovld __cnfn get_image_dim(write_only image2d_msaa_depth_t);
16055 int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_t);
16056 int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_depth_t);
16057 #endif //cl_khr_gl_msaa_sharing
16058 
16059 #if defined(__opencl_c_read_write_images)
16060 int2 __ovld __cnfn get_image_dim(read_write image2d_t);
16061 int2 __ovld __cnfn get_image_dim(read_write image2d_array_t);
16062 #ifdef cl_khr_depth_images
16063 int2 __ovld __cnfn get_image_dim(read_write image2d_array_depth_t);
16064 int2 __ovld __cnfn get_image_dim(read_write image2d_depth_t);
16065 #endif //cl_khr_depth_images
16066 #if defined(cl_khr_gl_msaa_sharing)
16067 int2 __ovld __cnfn get_image_dim(read_write image2d_msaa_t);
16068 int2 __ovld __cnfn get_image_dim(read_write image2d_msaa_depth_t);
16069 int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_t);
16070 int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_depth_t);
16071 #endif //cl_khr_gl_msaa_sharing
16072 #endif //defined(__opencl_c_read_write_images)
16073 
16074 /**
16075  * Return the 3D image width, height, and depth as an
16076  * int4 type. The width is returned in the x
16077  * component, height in the y component, depth in the z
16078  * component and the w component is 0.
16079  */
16080 int4 __ovld __cnfn get_image_dim(read_only image3d_t);
16081 #ifdef cl_khr_3d_image_writes
16082 int4 __ovld __cnfn get_image_dim(write_only image3d_t);
16083 #if defined(__opencl_c_read_write_images)
16084 int4 __ovld __cnfn get_image_dim(read_write image3d_t);
16085 #endif //defined(__opencl_c_read_write_images)
16086 #endif // cl_khr_3d_image_writes
16087 
16088 /**
16089  * Return the image array size.
16090  */
16091 
16092 size_t __ovld __cnfn get_image_array_size(read_only image1d_array_t);
16093 size_t __ovld __cnfn get_image_array_size(read_only image2d_array_t);
16094 #ifdef cl_khr_depth_images
16095 size_t __ovld __cnfn get_image_array_size(read_only image2d_array_depth_t);
16096 #endif //cl_khr_depth_images
16097 #if defined(cl_khr_gl_msaa_sharing)
16098 size_t __ovld __cnfn get_image_array_size(read_only image2d_array_msaa_t);
16099 size_t __ovld __cnfn get_image_array_size(read_only image2d_array_msaa_depth_t);
16100 #endif //cl_khr_gl_msaa_sharing
16101 
16102 size_t __ovld __cnfn get_image_array_size(write_only image1d_array_t);
16103 size_t __ovld __cnfn get_image_array_size(write_only image2d_array_t);
16104 #ifdef cl_khr_depth_images
16105 size_t __ovld __cnfn get_image_array_size(write_only image2d_array_depth_t);
16106 #endif //cl_khr_depth_images
16107 #if defined(cl_khr_gl_msaa_sharing)
16108 size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_t);
16109 size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_depth_t);
16110 #endif //cl_khr_gl_msaa_sharing
16111 
16112 #if defined(__opencl_c_read_write_images)
16113 size_t __ovld __cnfn get_image_array_size(read_write image1d_array_t);
16114 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_t);
16115 #ifdef cl_khr_depth_images
16116 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_depth_t);
16117 #endif //cl_khr_depth_images
16118 #if defined(cl_khr_gl_msaa_sharing)
16119 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_t);
16120 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_depth_t);
16121 #endif //cl_khr_gl_msaa_sharing
16122 #endif //defined(__opencl_c_read_write_images)
16123 
16124 /**
16125 * Return the number of samples associated with image
16126 */
16127 #if defined(cl_khr_gl_msaa_sharing)
16128 int __ovld __cnfn get_image_num_samples(read_only image2d_msaa_t);
16129 int __ovld __cnfn get_image_num_samples(read_only image2d_msaa_depth_t);
16130 int __ovld __cnfn get_image_num_samples(read_only image2d_array_msaa_t);
16131 int __ovld __cnfn get_image_num_samples(read_only image2d_array_msaa_depth_t);
16132 
16133 int __ovld __cnfn get_image_num_samples(write_only image2d_msaa_t);
16134 int __ovld __cnfn get_image_num_samples(write_only image2d_msaa_depth_t);
16135 int __ovld __cnfn get_image_num_samples(write_only image2d_array_msaa_t);
16136 int __ovld __cnfn get_image_num_samples(write_only image2d_array_msaa_depth_t);
16137 
16138 #if defined(__opencl_c_read_write_images)
16139 int __ovld __cnfn get_image_num_samples(read_write image2d_msaa_t);
16140 int __ovld __cnfn get_image_num_samples(read_write image2d_msaa_depth_t);
16141 int __ovld __cnfn get_image_num_samples(read_write image2d_array_msaa_t);
16142 int __ovld __cnfn get_image_num_samples(read_write image2d_array_msaa_depth_t);
16143 #endif //defined(__opencl_c_read_write_images)
16144 #endif
16145 
16146 // OpenCL v2.0 s6.13.15 - Work-group Functions
16147 
16148 #if defined(__opencl_c_work_group_collective_functions)
16149 int __ovld __conv work_group_all(int predicate);
16150 int __ovld __conv work_group_any(int predicate);
16151 
16152 #ifdef cl_khr_fp16
16153 half __ovld __conv work_group_broadcast(half, size_t local_id);
16154 half __ovld __conv work_group_broadcast(half, size_t, size_t);
16155 half __ovld __conv work_group_broadcast(half, size_t, size_t, size_t);
16156 #endif
16157 int __ovld __conv work_group_broadcast(int, size_t local_id);
16158 int __ovld __conv work_group_broadcast(int, size_t, size_t);
16159 int __ovld __conv work_group_broadcast(int, size_t, size_t, size_t);
16160 uint __ovld __conv work_group_broadcast(uint, size_t local_id);
16161 uint __ovld __conv work_group_broadcast(uint, size_t, size_t);
16162 uint __ovld __conv work_group_broadcast(uint, size_t, size_t, size_t);
16163 long __ovld __conv work_group_broadcast(long, size_t local_id);
16164 long __ovld __conv work_group_broadcast(long, size_t, size_t);
16165 long __ovld __conv work_group_broadcast(long, size_t, size_t, size_t);
16166 ulong __ovld __conv work_group_broadcast(ulong, size_t local_id);
16167 ulong __ovld __conv work_group_broadcast(ulong, size_t, size_t);
16168 ulong __ovld __conv work_group_broadcast(ulong, size_t, size_t, size_t);
16169 float __ovld __conv work_group_broadcast(float, size_t local_id);
16170 float __ovld __conv work_group_broadcast(float, size_t, size_t);
16171 float __ovld __conv work_group_broadcast(float, size_t, size_t, size_t);
16172 #ifdef cl_khr_fp64
16173 double __ovld __conv work_group_broadcast(double, size_t local_id);
16174 double __ovld __conv work_group_broadcast(double, size_t, size_t);
16175 double __ovld __conv work_group_broadcast(double, size_t, size_t, size_t);
16176 #endif //cl_khr_fp64
16177 
16178 #ifdef cl_khr_fp16
16179 half __ovld __conv work_group_reduce_add(half);
16180 half __ovld __conv work_group_reduce_min(half);
16181 half __ovld __conv work_group_reduce_max(half);
16182 half __ovld __conv work_group_scan_exclusive_add(half);
16183 half __ovld __conv work_group_scan_exclusive_min(half);
16184 half __ovld __conv work_group_scan_exclusive_max(half);
16185 half __ovld __conv work_group_scan_inclusive_add(half);
16186 half __ovld __conv work_group_scan_inclusive_min(half);
16187 half __ovld __conv work_group_scan_inclusive_max(half);
16188 #endif
16189 int __ovld __conv work_group_reduce_add(int);
16190 int __ovld __conv work_group_reduce_min(int);
16191 int __ovld __conv work_group_reduce_max(int);
16192 int __ovld __conv work_group_scan_exclusive_add(int);
16193 int __ovld __conv work_group_scan_exclusive_min(int);
16194 int __ovld __conv work_group_scan_exclusive_max(int);
16195 int __ovld __conv work_group_scan_inclusive_add(int);
16196 int __ovld __conv work_group_scan_inclusive_min(int);
16197 int __ovld __conv work_group_scan_inclusive_max(int);
16198 uint __ovld __conv work_group_reduce_add(uint);
16199 uint __ovld __conv work_group_reduce_min(uint);
16200 uint __ovld __conv work_group_reduce_max(uint);
16201 uint __ovld __conv work_group_scan_exclusive_add(uint);
16202 uint __ovld __conv work_group_scan_exclusive_min(uint);
16203 uint __ovld __conv work_group_scan_exclusive_max(uint);
16204 uint __ovld __conv work_group_scan_inclusive_add(uint);
16205 uint __ovld __conv work_group_scan_inclusive_min(uint);
16206 uint __ovld __conv work_group_scan_inclusive_max(uint);
16207 long __ovld __conv work_group_reduce_add(long);
16208 long __ovld __conv work_group_reduce_min(long);
16209 long __ovld __conv work_group_reduce_max(long);
16210 long __ovld __conv work_group_scan_exclusive_add(long);
16211 long __ovld __conv work_group_scan_exclusive_min(long);
16212 long __ovld __conv work_group_scan_exclusive_max(long);
16213 long __ovld __conv work_group_scan_inclusive_add(long);
16214 long __ovld __conv work_group_scan_inclusive_min(long);
16215 long __ovld __conv work_group_scan_inclusive_max(long);
16216 ulong __ovld __conv work_group_reduce_add(ulong);
16217 ulong __ovld __conv work_group_reduce_min(ulong);
16218 ulong __ovld __conv work_group_reduce_max(ulong);
16219 ulong __ovld __conv work_group_scan_exclusive_add(ulong);
16220 ulong __ovld __conv work_group_scan_exclusive_min(ulong);
16221 ulong __ovld __conv work_group_scan_exclusive_max(ulong);
16222 ulong __ovld __conv work_group_scan_inclusive_add(ulong);
16223 ulong __ovld __conv work_group_scan_inclusive_min(ulong);
16224 ulong __ovld __conv work_group_scan_inclusive_max(ulong);
16225 float __ovld __conv work_group_reduce_add(float);
16226 float __ovld __conv work_group_reduce_min(float);
16227 float __ovld __conv work_group_reduce_max(float);
16228 float __ovld __conv work_group_scan_exclusive_add(float);
16229 float __ovld __conv work_group_scan_exclusive_min(float);
16230 float __ovld __conv work_group_scan_exclusive_max(float);
16231 float __ovld __conv work_group_scan_inclusive_add(float);
16232 float __ovld __conv work_group_scan_inclusive_min(float);
16233 float __ovld __conv work_group_scan_inclusive_max(float);
16234 #ifdef cl_khr_fp64
16235 double __ovld __conv work_group_reduce_add(double);
16236 double __ovld __conv work_group_reduce_min(double);
16237 double __ovld __conv work_group_reduce_max(double);
16238 double __ovld __conv work_group_scan_exclusive_add(double);
16239 double __ovld __conv work_group_scan_exclusive_min(double);
16240 double __ovld __conv work_group_scan_exclusive_max(double);
16241 double __ovld __conv work_group_scan_inclusive_add(double);
16242 double __ovld __conv work_group_scan_inclusive_min(double);
16243 double __ovld __conv work_group_scan_inclusive_max(double);
16244 #endif //cl_khr_fp64
16245 
16246 #endif //defined(__opencl_c_work_group_collective_functions)
16247 
16248 // OpenCL v2.0 s6.13.16 - Pipe Functions
16249 #if defined(__opencl_c_pipes)
16250 bool __ovld is_valid_reserve_id(reserve_id_t reserve_id);
16251 #endif //defined(__opencl_c_pipes)
16252 
16253 
16254 // OpenCL v2.0 s6.13.17 - Enqueue Kernels
16255 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16256 
16257 #ifdef __opencl_c_device_enqueue
16258 ndrange_t __ovld ndrange_1D(size_t);
16259 ndrange_t __ovld ndrange_1D(size_t, size_t);
16260 ndrange_t __ovld ndrange_1D(size_t, size_t, size_t);
16261 
16262 ndrange_t __ovld ndrange_2D(const size_t[2]);
16263 ndrange_t __ovld ndrange_2D(const size_t[2], const size_t[2]);
16264 ndrange_t __ovld ndrange_2D(const size_t[2], const size_t[2], const size_t[2]);
16265 
16266 ndrange_t __ovld ndrange_3D(const size_t[3]);
16267 ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3]);
16268 ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3], const size_t[3]);
16269 
16270 int __ovld enqueue_marker(queue_t, uint, const clk_event_t*, clk_event_t*);
16271 
16272 void __ovld retain_event(clk_event_t);
16273 
16274 void __ovld release_event(clk_event_t);
16275 
16276 clk_event_t __ovld create_user_event(void);
16277 
16278 void __ovld set_user_event_status(clk_event_t e, int state);
16279 
16280 bool __ovld is_valid_event (clk_event_t event);
16281 
16282 void __ovld capture_event_profiling_info(clk_event_t, clk_profiling_info, __global void*);
16283 
16284 queue_t __ovld get_default_queue(void);
16285 #endif //__opencl_c_device_enqueue
16286 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16287 
16288 // OpenCL Extension v2.0 s9.17 - Sub-groups
16289 
16290 #if defined(__opencl_subgroup_builtins)
16291 // Shared Sub Group Functions
16292 uint __ovld get_sub_group_size(void);
16293 uint __ovld get_max_sub_group_size(void);
16294 uint __ovld get_num_sub_groups(void);
16295 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16296 uint __ovld get_enqueued_num_sub_groups(void);
16297 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16298 uint __ovld get_sub_group_id(void);
16299 uint __ovld get_sub_group_local_id(void);
16300 
16301 void __ovld __conv sub_group_barrier(cl_mem_fence_flags);
16302 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16303 void __ovld __conv sub_group_barrier(cl_mem_fence_flags, memory_scope);
16304 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
16305 
16306 int __ovld __conv sub_group_all(int predicate);
16307 int __ovld __conv sub_group_any(int predicate);
16308 
16309 int __ovld __conv sub_group_broadcast(int , uint sub_group_local_id);
16310 uint __ovld __conv sub_group_broadcast(uint , uint sub_group_local_id);
16311 long __ovld __conv sub_group_broadcast(long , uint sub_group_local_id);
16312 ulong __ovld __conv sub_group_broadcast(ulong, uint sub_group_local_id);
16313 float __ovld __conv sub_group_broadcast(float, uint sub_group_local_id);
16314 
16315 int __ovld __conv sub_group_reduce_add(int );
16316 uint __ovld __conv sub_group_reduce_add(uint );
16317 long __ovld __conv sub_group_reduce_add(long );
16318 ulong __ovld __conv sub_group_reduce_add(ulong);
16319 float __ovld __conv sub_group_reduce_add(float);
16320 int __ovld __conv sub_group_reduce_min(int );
16321 uint __ovld __conv sub_group_reduce_min(uint );
16322 long __ovld __conv sub_group_reduce_min(long );
16323 ulong __ovld __conv sub_group_reduce_min(ulong);
16324 float __ovld __conv sub_group_reduce_min(float);
16325 int __ovld __conv sub_group_reduce_max(int );
16326 uint __ovld __conv sub_group_reduce_max(uint );
16327 long __ovld __conv sub_group_reduce_max(long );
16328 ulong __ovld __conv sub_group_reduce_max(ulong);
16329 float __ovld __conv sub_group_reduce_max(float);
16330 
16331 int __ovld __conv sub_group_scan_exclusive_add(int );
16332 uint __ovld __conv sub_group_scan_exclusive_add(uint );
16333 long __ovld __conv sub_group_scan_exclusive_add(long );
16334 ulong __ovld __conv sub_group_scan_exclusive_add(ulong);
16335 float __ovld __conv sub_group_scan_exclusive_add(float);
16336 int __ovld __conv sub_group_scan_exclusive_min(int );
16337 uint __ovld __conv sub_group_scan_exclusive_min(uint );
16338 long __ovld __conv sub_group_scan_exclusive_min(long );
16339 ulong __ovld __conv sub_group_scan_exclusive_min(ulong);
16340 float __ovld __conv sub_group_scan_exclusive_min(float);
16341 int __ovld __conv sub_group_scan_exclusive_max(int );
16342 uint __ovld __conv sub_group_scan_exclusive_max(uint );
16343 long __ovld __conv sub_group_scan_exclusive_max(long );
16344 ulong __ovld __conv sub_group_scan_exclusive_max(ulong);
16345 float __ovld __conv sub_group_scan_exclusive_max(float);
16346 
16347 int __ovld __conv sub_group_scan_inclusive_add(int );
16348 uint __ovld __conv sub_group_scan_inclusive_add(uint );
16349 long __ovld __conv sub_group_scan_inclusive_add(long );
16350 ulong __ovld __conv sub_group_scan_inclusive_add(ulong);
16351 float __ovld __conv sub_group_scan_inclusive_add(float);
16352 int __ovld __conv sub_group_scan_inclusive_min(int );
16353 uint __ovld __conv sub_group_scan_inclusive_min(uint );
16354 long __ovld __conv sub_group_scan_inclusive_min(long );
16355 ulong __ovld __conv sub_group_scan_inclusive_min(ulong);
16356 float __ovld __conv sub_group_scan_inclusive_min(float);
16357 int __ovld __conv sub_group_scan_inclusive_max(int );
16358 uint __ovld __conv sub_group_scan_inclusive_max(uint );
16359 long __ovld __conv sub_group_scan_inclusive_max(long );
16360 ulong __ovld __conv sub_group_scan_inclusive_max(ulong);
16361 float __ovld __conv sub_group_scan_inclusive_max(float);
16362 
16363 #ifdef cl_khr_fp16
16364 half __ovld __conv sub_group_broadcast(half, uint sub_group_local_id);
16365 half __ovld __conv sub_group_reduce_add(half);
16366 half __ovld __conv sub_group_reduce_min(half);
16367 half __ovld __conv sub_group_reduce_max(half);
16368 half __ovld __conv sub_group_scan_exclusive_add(half);
16369 half __ovld __conv sub_group_scan_exclusive_min(half);
16370 half __ovld __conv sub_group_scan_exclusive_max(half);
16371 half __ovld __conv sub_group_scan_inclusive_add(half);
16372 half __ovld __conv sub_group_scan_inclusive_min(half);
16373 half __ovld __conv sub_group_scan_inclusive_max(half);
16374 #endif //cl_khr_fp16
16375 
16376 #ifdef cl_khr_fp64
16377 double __ovld __conv sub_group_broadcast(double, uint sub_group_local_id);
16378 double __ovld __conv sub_group_reduce_add(double);
16379 double __ovld __conv sub_group_reduce_min(double);
16380 double __ovld __conv sub_group_reduce_max(double);
16381 double __ovld __conv sub_group_scan_exclusive_add(double);
16382 double __ovld __conv sub_group_scan_exclusive_min(double);
16383 double __ovld __conv sub_group_scan_exclusive_max(double);
16384 double __ovld __conv sub_group_scan_inclusive_add(double);
16385 double __ovld __conv sub_group_scan_inclusive_min(double);
16386 double __ovld __conv sub_group_scan_inclusive_max(double);
16387 #endif //cl_khr_fp64
16388 
16389 #endif // __opencl_subgroup_builtins
16390 
16391 #if defined(cl_khr_subgroup_extended_types)
16392 char __ovld __conv sub_group_broadcast( char value, uint index );
16393 char2 __ovld __conv sub_group_broadcast( char2 value, uint index );
16394 char3 __ovld __conv sub_group_broadcast( char3 value, uint index );
16395 char4 __ovld __conv sub_group_broadcast( char4 value, uint index );
16396 char8 __ovld __conv sub_group_broadcast( char8 value, uint index );
16397 char16 __ovld __conv sub_group_broadcast( char16 value, uint index );
16398 
16399 uchar __ovld __conv sub_group_broadcast( uchar value, uint index );
16400 uchar2 __ovld __conv sub_group_broadcast( uchar2 value, uint index );
16401 uchar3 __ovld __conv sub_group_broadcast( uchar3 value, uint index );
16402 uchar4 __ovld __conv sub_group_broadcast( uchar4 value, uint index );
16403 uchar8 __ovld __conv sub_group_broadcast( uchar8 value, uint index );
16404 uchar16 __ovld __conv sub_group_broadcast( uchar16 value, uint index );
16405 
16406 short __ovld __conv sub_group_broadcast( short value, uint index );
16407 short2 __ovld __conv sub_group_broadcast( short2 value, uint index );
16408 short3 __ovld __conv sub_group_broadcast( short3 value, uint index );
16409 short4 __ovld __conv sub_group_broadcast( short4 value, uint index );
16410 short8 __ovld __conv sub_group_broadcast( short8 value, uint index );
16411 short16 __ovld __conv sub_group_broadcast( short16 value, uint index );
16412 
16413 ushort __ovld __conv sub_group_broadcast( ushort value, uint index );
16414 ushort2 __ovld __conv sub_group_broadcast( ushort2 value, uint index );
16415 ushort3 __ovld __conv sub_group_broadcast( ushort3 value, uint index );
16416 ushort4 __ovld __conv sub_group_broadcast( ushort4 value, uint index );
16417 ushort8 __ovld __conv sub_group_broadcast( ushort8 value, uint index );
16418 ushort16 __ovld __conv sub_group_broadcast( ushort16 value, uint index );
16419 
16420 // scalar int broadcast is part of cl_khr_subgroups
16421 int2 __ovld __conv sub_group_broadcast( int2 value, uint index );
16422 int3 __ovld __conv sub_group_broadcast( int3 value, uint index );
16423 int4 __ovld __conv sub_group_broadcast( int4 value, uint index );
16424 int8 __ovld __conv sub_group_broadcast( int8 value, uint index );
16425 int16 __ovld __conv sub_group_broadcast( int16 value, uint index );
16426 
16427 // scalar uint broadcast is part of cl_khr_subgroups
16428 uint2 __ovld __conv sub_group_broadcast( uint2 value, uint index );
16429 uint3 __ovld __conv sub_group_broadcast( uint3 value, uint index );
16430 uint4 __ovld __conv sub_group_broadcast( uint4 value, uint index );
16431 uint8 __ovld __conv sub_group_broadcast( uint8 value, uint index );
16432 uint16 __ovld __conv sub_group_broadcast( uint16 value, uint index );
16433 
16434 // scalar long broadcast is part of cl_khr_subgroups
16435 long2 __ovld __conv sub_group_broadcast( long2 value, uint index );
16436 long3 __ovld __conv sub_group_broadcast( long3 value, uint index );
16437 long4 __ovld __conv sub_group_broadcast( long4 value, uint index );
16438 long8 __ovld __conv sub_group_broadcast( long8 value, uint index );
16439 long16 __ovld __conv sub_group_broadcast( long16 value, uint index );
16440 
16441 // scalar ulong broadcast is part of cl_khr_subgroups
16442 ulong2 __ovld __conv sub_group_broadcast( ulong2 value, uint index );
16443 ulong3 __ovld __conv sub_group_broadcast( ulong3 value, uint index );
16444 ulong4 __ovld __conv sub_group_broadcast( ulong4 value, uint index );
16445 ulong8 __ovld __conv sub_group_broadcast( ulong8 value, uint index );
16446 ulong16 __ovld __conv sub_group_broadcast( ulong16 value, uint index );
16447 
16448 // scalar float broadcast is part of cl_khr_subgroups
16449 float2 __ovld __conv sub_group_broadcast( float2 value, uint index );
16450 float3 __ovld __conv sub_group_broadcast( float3 value, uint index );
16451 float4 __ovld __conv sub_group_broadcast( float4 value, uint index );
16452 float8 __ovld __conv sub_group_broadcast( float8 value, uint index );
16453 float16 __ovld __conv sub_group_broadcast( float16 value, uint index );
16454 
16455 char __ovld __conv sub_group_reduce_add( char value );
16456 uchar __ovld __conv sub_group_reduce_add( uchar value );
16457 short __ovld __conv sub_group_reduce_add( short value );
16458 ushort __ovld __conv sub_group_reduce_add( ushort value );
16459 
16460 char __ovld __conv sub_group_reduce_min( char value );
16461 uchar __ovld __conv sub_group_reduce_min( uchar value );
16462 short __ovld __conv sub_group_reduce_min( short value );
16463 ushort __ovld __conv sub_group_reduce_min( ushort value );
16464 
16465 char __ovld __conv sub_group_reduce_max( char value );
16466 uchar __ovld __conv sub_group_reduce_max( uchar value );
16467 short __ovld __conv sub_group_reduce_max( short value );
16468 ushort __ovld __conv sub_group_reduce_max( ushort value );
16469 
16470 char __ovld __conv sub_group_scan_inclusive_add( char value );
16471 uchar __ovld __conv sub_group_scan_inclusive_add( uchar value );
16472 short __ovld __conv sub_group_scan_inclusive_add( short value );
16473 ushort __ovld __conv sub_group_scan_inclusive_add( ushort value );
16474 
16475 char __ovld __conv sub_group_scan_inclusive_min( char value );
16476 uchar __ovld __conv sub_group_scan_inclusive_min( uchar value );
16477 short __ovld __conv sub_group_scan_inclusive_min( short value );
16478 ushort __ovld __conv sub_group_scan_inclusive_min( ushort value );
16479 
16480 char __ovld __conv sub_group_scan_inclusive_max( char value );
16481 uchar __ovld __conv sub_group_scan_inclusive_max( uchar value );
16482 short __ovld __conv sub_group_scan_inclusive_max( short value );
16483 ushort __ovld __conv sub_group_scan_inclusive_max( ushort value );
16484 
16485 char __ovld __conv sub_group_scan_exclusive_add( char value );
16486 uchar __ovld __conv sub_group_scan_exclusive_add( uchar value );
16487 short __ovld __conv sub_group_scan_exclusive_add( short value );
16488 ushort __ovld __conv sub_group_scan_exclusive_add( ushort value );
16489 
16490 char __ovld __conv sub_group_scan_exclusive_min( char value );
16491 uchar __ovld __conv sub_group_scan_exclusive_min( uchar value );
16492 short __ovld __conv sub_group_scan_exclusive_min( short value );
16493 ushort __ovld __conv sub_group_scan_exclusive_min( ushort value );
16494 
16495 char __ovld __conv sub_group_scan_exclusive_max( char value );
16496 uchar __ovld __conv sub_group_scan_exclusive_max( uchar value );
16497 short __ovld __conv sub_group_scan_exclusive_max( short value );
16498 ushort __ovld __conv sub_group_scan_exclusive_max( ushort value );
16499 
16500 #if defined(cl_khr_fp16)
16501 // scalar half broadcast is part of cl_khr_subgroups
16502 half2 __ovld __conv sub_group_broadcast( half2 value, uint index );
16503 half3 __ovld __conv sub_group_broadcast( half3 value, uint index );
16504 half4 __ovld __conv sub_group_broadcast( half4 value, uint index );
16505 half8 __ovld __conv sub_group_broadcast( half8 value, uint index );
16506 half16 __ovld __conv sub_group_broadcast( half16 value, uint index );
16507 #endif // cl_khr_fp16
16508 
16509 #if defined(cl_khr_fp64)
16510 // scalar double broadcast is part of cl_khr_subgroups
16511 double2 __ovld __conv sub_group_broadcast( double2 value, uint index );
16512 double3 __ovld __conv sub_group_broadcast( double3 value, uint index );
16513 double4 __ovld __conv sub_group_broadcast( double4 value, uint index );
16514 double8 __ovld __conv sub_group_broadcast( double8 value, uint index );
16515 double16 __ovld __conv sub_group_broadcast( double16 value, uint index );
16516 #endif // cl_khr_fp64
16517 
16518 #endif // cl_khr_subgroup_extended_types
16519 
16520 #if defined(cl_khr_subgroup_non_uniform_vote)
16521 int __ovld sub_group_elect(void);
16522 int __ovld sub_group_non_uniform_all( int predicate );
16523 int __ovld sub_group_non_uniform_any( int predicate );
16524 
16525 int __ovld sub_group_non_uniform_all_equal( char value );
16526 int __ovld sub_group_non_uniform_all_equal( uchar value );
16527 int __ovld sub_group_non_uniform_all_equal( short value );
16528 int __ovld sub_group_non_uniform_all_equal( ushort value );
16529 int __ovld sub_group_non_uniform_all_equal( int value );
16530 int __ovld sub_group_non_uniform_all_equal( uint value );
16531 int __ovld sub_group_non_uniform_all_equal( long value );
16532 int __ovld sub_group_non_uniform_all_equal( ulong value );
16533 int __ovld sub_group_non_uniform_all_equal( float value );
16534 
16535 #if defined(cl_khr_fp16)
16536 int __ovld sub_group_non_uniform_all_equal( half value );
16537 #endif // cl_khr_fp16
16538 
16539 #if defined(cl_khr_fp64)
16540 int __ovld sub_group_non_uniform_all_equal( double value );
16541 #endif // cl_khr_fp64
16542 
16543 #endif // cl_khr_subgroup_non_uniform_vote
16544 
16545 #if defined(cl_khr_subgroup_ballot)
16546 char __ovld sub_group_non_uniform_broadcast( char value, uint index );
16547 char2 __ovld sub_group_non_uniform_broadcast( char2 value, uint index );
16548 char3 __ovld sub_group_non_uniform_broadcast( char3 value, uint index );
16549 char4 __ovld sub_group_non_uniform_broadcast( char4 value, uint index );
16550 char8 __ovld sub_group_non_uniform_broadcast( char8 value, uint index );
16551 char16 __ovld sub_group_non_uniform_broadcast( char16 value, uint index );
16552 
16553 uchar __ovld sub_group_non_uniform_broadcast( uchar value, uint index );
16554 uchar2 __ovld sub_group_non_uniform_broadcast( uchar2 value, uint index );
16555 uchar3 __ovld sub_group_non_uniform_broadcast( uchar3 value, uint index );
16556 uchar4 __ovld sub_group_non_uniform_broadcast( uchar4 value, uint index );
16557 uchar8 __ovld sub_group_non_uniform_broadcast( uchar8 value, uint index );
16558 uchar16 __ovld sub_group_non_uniform_broadcast( uchar16 value, uint index );
16559 
16560 short __ovld sub_group_non_uniform_broadcast( short value, uint index );
16561 short2 __ovld sub_group_non_uniform_broadcast( short2 value, uint index );
16562 short3 __ovld sub_group_non_uniform_broadcast( short3 value, uint index );
16563 short4 __ovld sub_group_non_uniform_broadcast( short4 value, uint index );
16564 short8 __ovld sub_group_non_uniform_broadcast( short8 value, uint index );
16565 short16 __ovld sub_group_non_uniform_broadcast( short16 value, uint index );
16566 
16567 ushort __ovld sub_group_non_uniform_broadcast( ushort value, uint index );
16568 ushort2 __ovld sub_group_non_uniform_broadcast( ushort2 value, uint index );
16569 ushort3 __ovld sub_group_non_uniform_broadcast( ushort3 value, uint index );
16570 ushort4 __ovld sub_group_non_uniform_broadcast( ushort4 value, uint index );
16571 ushort8 __ovld sub_group_non_uniform_broadcast( ushort8 value, uint index );
16572 ushort16 __ovld sub_group_non_uniform_broadcast( ushort16 value, uint index );
16573 
16574 int __ovld sub_group_non_uniform_broadcast( int value, uint index );
16575 int2 __ovld sub_group_non_uniform_broadcast( int2 value, uint index );
16576 int3 __ovld sub_group_non_uniform_broadcast( int3 value, uint index );
16577 int4 __ovld sub_group_non_uniform_broadcast( int4 value, uint index );
16578 int8 __ovld sub_group_non_uniform_broadcast( int8 value, uint index );
16579 int16 __ovld sub_group_non_uniform_broadcast( int16 value, uint index );
16580 
16581 uint __ovld sub_group_non_uniform_broadcast( uint value, uint index );
16582 uint2 __ovld sub_group_non_uniform_broadcast( uint2 value, uint index );
16583 uint3 __ovld sub_group_non_uniform_broadcast( uint3 value, uint index );
16584 uint4 __ovld sub_group_non_uniform_broadcast( uint4 value, uint index );
16585 uint8 __ovld sub_group_non_uniform_broadcast( uint8 value, uint index );
16586 uint16 __ovld sub_group_non_uniform_broadcast( uint16 value, uint index );
16587 
16588 long __ovld sub_group_non_uniform_broadcast( long value, uint index );
16589 long2 __ovld sub_group_non_uniform_broadcast( long2 value, uint index );
16590 long3 __ovld sub_group_non_uniform_broadcast( long3 value, uint index );
16591 long4 __ovld sub_group_non_uniform_broadcast( long4 value, uint index );
16592 long8 __ovld sub_group_non_uniform_broadcast( long8 value, uint index );
16593 long16 __ovld sub_group_non_uniform_broadcast( long16 value, uint index );
16594 
16595 ulong __ovld sub_group_non_uniform_broadcast( ulong value, uint index );
16596 ulong2 __ovld sub_group_non_uniform_broadcast( ulong2 value, uint index );
16597 ulong3 __ovld sub_group_non_uniform_broadcast( ulong3 value, uint index );
16598 ulong4 __ovld sub_group_non_uniform_broadcast( ulong4 value, uint index );
16599 ulong8 __ovld sub_group_non_uniform_broadcast( ulong8 value, uint index );
16600 ulong16 __ovld sub_group_non_uniform_broadcast( ulong16 value, uint index );
16601 
16602 float __ovld sub_group_non_uniform_broadcast( float value, uint index );
16603 float2 __ovld sub_group_non_uniform_broadcast( float2 value, uint index );
16604 float3 __ovld sub_group_non_uniform_broadcast( float3 value, uint index );
16605 float4 __ovld sub_group_non_uniform_broadcast( float4 value, uint index );
16606 float8 __ovld sub_group_non_uniform_broadcast( float8 value, uint index );
16607 float16 __ovld sub_group_non_uniform_broadcast( float16 value, uint index );
16608 
16609 char __ovld sub_group_broadcast_first( char value );
16610 uchar __ovld sub_group_broadcast_first( uchar value );
16611 short __ovld sub_group_broadcast_first( short value );
16612 ushort __ovld sub_group_broadcast_first( ushort value );
16613 int __ovld sub_group_broadcast_first( int value );
16614 uint __ovld sub_group_broadcast_first( uint value );
16615 long __ovld sub_group_broadcast_first( long value );
16616 ulong __ovld sub_group_broadcast_first( ulong value );
16617 float __ovld sub_group_broadcast_first( float value );
16618 
16619 uint4 __ovld sub_group_ballot( int predicate );
16620 int __ovld __cnfn sub_group_inverse_ballot( uint4 value );
16621 int __ovld __cnfn sub_group_ballot_bit_extract( uint4 value, uint index );
16622 uint __ovld __cnfn sub_group_ballot_bit_count( uint4 value );
16623 
16624 uint __ovld sub_group_ballot_inclusive_scan( uint4 value );
16625 uint __ovld sub_group_ballot_exclusive_scan( uint4 value );
16626 uint __ovld sub_group_ballot_find_lsb( uint4 value );
16627 uint __ovld sub_group_ballot_find_msb( uint4 value );
16628 
16629 uint4 __ovld __cnfn get_sub_group_eq_mask(void);
16630 uint4 __ovld __cnfn get_sub_group_ge_mask(void);
16631 uint4 __ovld __cnfn get_sub_group_gt_mask(void);
16632 uint4 __ovld __cnfn get_sub_group_le_mask(void);
16633 uint4 __ovld __cnfn get_sub_group_lt_mask(void);
16634 
16635 #if defined(cl_khr_fp16)
16636 half __ovld sub_group_non_uniform_broadcast( half value, uint index );
16637 half2 __ovld sub_group_non_uniform_broadcast( half2 value, uint index );
16638 half3 __ovld sub_group_non_uniform_broadcast( half3 value, uint index );
16639 half4 __ovld sub_group_non_uniform_broadcast( half4 value, uint index );
16640 half8 __ovld sub_group_non_uniform_broadcast( half8 value, uint index );
16641 half16 __ovld sub_group_non_uniform_broadcast( half16 value, uint index );
16642 
16643 half __ovld sub_group_broadcast_first( half value );
16644 #endif // cl_khr_fp16
16645 
16646 #if defined(cl_khr_fp64)
16647 double __ovld sub_group_non_uniform_broadcast( double value, uint index );
16648 double2 __ovld sub_group_non_uniform_broadcast( double2 value, uint index );
16649 double3 __ovld sub_group_non_uniform_broadcast( double3 value, uint index );
16650 double4 __ovld sub_group_non_uniform_broadcast( double4 value, uint index );
16651 double8 __ovld sub_group_non_uniform_broadcast( double8 value, uint index );
16652 double16 __ovld sub_group_non_uniform_broadcast( double16 value, uint index );
16653 
16654 double __ovld sub_group_broadcast_first( double value );
16655 #endif // cl_khr_fp64
16656 
16657 #endif // cl_khr_subgroup_ballot
16658 
16659 #if defined(cl_khr_subgroup_non_uniform_arithmetic)
16660 char __ovld sub_group_non_uniform_reduce_add( char value );
16661 uchar __ovld sub_group_non_uniform_reduce_add( uchar value );
16662 short __ovld sub_group_non_uniform_reduce_add( short value );
16663 ushort __ovld sub_group_non_uniform_reduce_add( ushort value );
16664 int __ovld sub_group_non_uniform_reduce_add( int value );
16665 uint __ovld sub_group_non_uniform_reduce_add( uint value );
16666 long __ovld sub_group_non_uniform_reduce_add( long value );
16667 ulong __ovld sub_group_non_uniform_reduce_add( ulong value );
16668 float __ovld sub_group_non_uniform_reduce_add( float value );
16669 
16670 char __ovld sub_group_non_uniform_reduce_mul( char value );
16671 uchar __ovld sub_group_non_uniform_reduce_mul( uchar value );
16672 short __ovld sub_group_non_uniform_reduce_mul( short value );
16673 ushort __ovld sub_group_non_uniform_reduce_mul( ushort value );
16674 int __ovld sub_group_non_uniform_reduce_mul( int value );
16675 uint __ovld sub_group_non_uniform_reduce_mul( uint value );
16676 long __ovld sub_group_non_uniform_reduce_mul( long value );
16677 ulong __ovld sub_group_non_uniform_reduce_mul( ulong value );
16678 float __ovld sub_group_non_uniform_reduce_mul( float value );
16679 
16680 char __ovld sub_group_non_uniform_reduce_min( char value );
16681 uchar __ovld sub_group_non_uniform_reduce_min( uchar value );
16682 short __ovld sub_group_non_uniform_reduce_min( short value );
16683 ushort __ovld sub_group_non_uniform_reduce_min( ushort value );
16684 int __ovld sub_group_non_uniform_reduce_min( int value );
16685 uint __ovld sub_group_non_uniform_reduce_min( uint value );
16686 long __ovld sub_group_non_uniform_reduce_min( long value );
16687 ulong __ovld sub_group_non_uniform_reduce_min( ulong value );
16688 float __ovld sub_group_non_uniform_reduce_min( float value );
16689 
16690 char __ovld sub_group_non_uniform_reduce_max( char value );
16691 uchar __ovld sub_group_non_uniform_reduce_max( uchar value );
16692 short __ovld sub_group_non_uniform_reduce_max( short value );
16693 ushort __ovld sub_group_non_uniform_reduce_max( ushort value );
16694 int __ovld sub_group_non_uniform_reduce_max( int value );
16695 uint __ovld sub_group_non_uniform_reduce_max( uint value );
16696 long __ovld sub_group_non_uniform_reduce_max( long value );
16697 ulong __ovld sub_group_non_uniform_reduce_max( ulong value );
16698 float __ovld sub_group_non_uniform_reduce_max( float value );
16699 
16700 char __ovld sub_group_non_uniform_scan_inclusive_add( char value );
16701 uchar __ovld sub_group_non_uniform_scan_inclusive_add( uchar value );
16702 short __ovld sub_group_non_uniform_scan_inclusive_add( short value );
16703 ushort __ovld sub_group_non_uniform_scan_inclusive_add( ushort value );
16704 int __ovld sub_group_non_uniform_scan_inclusive_add( int value );
16705 uint __ovld sub_group_non_uniform_scan_inclusive_add( uint value );
16706 long __ovld sub_group_non_uniform_scan_inclusive_add( long value );
16707 ulong __ovld sub_group_non_uniform_scan_inclusive_add( ulong value );
16708 float __ovld sub_group_non_uniform_scan_inclusive_add( float value );
16709 
16710 char __ovld sub_group_non_uniform_scan_inclusive_mul( char value );
16711 uchar __ovld sub_group_non_uniform_scan_inclusive_mul( uchar value );
16712 short __ovld sub_group_non_uniform_scan_inclusive_mul( short value );
16713 ushort __ovld sub_group_non_uniform_scan_inclusive_mul( ushort value );
16714 int __ovld sub_group_non_uniform_scan_inclusive_mul( int value );
16715 uint __ovld sub_group_non_uniform_scan_inclusive_mul( uint value );
16716 long __ovld sub_group_non_uniform_scan_inclusive_mul( long value );
16717 ulong __ovld sub_group_non_uniform_scan_inclusive_mul( ulong value );
16718 float __ovld sub_group_non_uniform_scan_inclusive_mul( float value );
16719 
16720 char __ovld sub_group_non_uniform_scan_inclusive_min( char value );
16721 uchar __ovld sub_group_non_uniform_scan_inclusive_min( uchar value );
16722 short __ovld sub_group_non_uniform_scan_inclusive_min( short value );
16723 ushort __ovld sub_group_non_uniform_scan_inclusive_min( ushort value );
16724 int __ovld sub_group_non_uniform_scan_inclusive_min( int value );
16725 uint __ovld sub_group_non_uniform_scan_inclusive_min( uint value );
16726 long __ovld sub_group_non_uniform_scan_inclusive_min( long value );
16727 ulong __ovld sub_group_non_uniform_scan_inclusive_min( ulong value );
16728 float __ovld sub_group_non_uniform_scan_inclusive_min( float value );
16729 
16730 char __ovld sub_group_non_uniform_scan_inclusive_max( char value );
16731 uchar __ovld sub_group_non_uniform_scan_inclusive_max( uchar value );
16732 short __ovld sub_group_non_uniform_scan_inclusive_max( short value );
16733 ushort __ovld sub_group_non_uniform_scan_inclusive_max( ushort value );
16734 int __ovld sub_group_non_uniform_scan_inclusive_max( int value );
16735 uint __ovld sub_group_non_uniform_scan_inclusive_max( uint value );
16736 long __ovld sub_group_non_uniform_scan_inclusive_max( long value );
16737 ulong __ovld sub_group_non_uniform_scan_inclusive_max( ulong value );
16738 float __ovld sub_group_non_uniform_scan_inclusive_max( float value );
16739 
16740 char __ovld sub_group_non_uniform_scan_exclusive_add( char value );
16741 uchar __ovld sub_group_non_uniform_scan_exclusive_add( uchar value );
16742 short __ovld sub_group_non_uniform_scan_exclusive_add( short value );
16743 ushort __ovld sub_group_non_uniform_scan_exclusive_add( ushort value );
16744 int __ovld sub_group_non_uniform_scan_exclusive_add( int value );
16745 uint __ovld sub_group_non_uniform_scan_exclusive_add( uint value );
16746 long __ovld sub_group_non_uniform_scan_exclusive_add( long value );
16747 ulong __ovld sub_group_non_uniform_scan_exclusive_add( ulong value );
16748 float __ovld sub_group_non_uniform_scan_exclusive_add( float value );
16749 
16750 char __ovld sub_group_non_uniform_scan_exclusive_mul( char value );
16751 uchar __ovld sub_group_non_uniform_scan_exclusive_mul( uchar value );
16752 short __ovld sub_group_non_uniform_scan_exclusive_mul( short value );
16753 ushort __ovld sub_group_non_uniform_scan_exclusive_mul( ushort value );
16754 int __ovld sub_group_non_uniform_scan_exclusive_mul( int value );
16755 uint __ovld sub_group_non_uniform_scan_exclusive_mul( uint value );
16756 long __ovld sub_group_non_uniform_scan_exclusive_mul( long value );
16757 ulong __ovld sub_group_non_uniform_scan_exclusive_mul( ulong value );
16758 float __ovld sub_group_non_uniform_scan_exclusive_mul( float value );
16759 
16760 char __ovld sub_group_non_uniform_scan_exclusive_min( char value );
16761 uchar __ovld sub_group_non_uniform_scan_exclusive_min( uchar value );
16762 short __ovld sub_group_non_uniform_scan_exclusive_min( short value );
16763 ushort __ovld sub_group_non_uniform_scan_exclusive_min( ushort value );
16764 int __ovld sub_group_non_uniform_scan_exclusive_min( int value );
16765 uint __ovld sub_group_non_uniform_scan_exclusive_min( uint value );
16766 long __ovld sub_group_non_uniform_scan_exclusive_min( long value );
16767 ulong __ovld sub_group_non_uniform_scan_exclusive_min( ulong value );
16768 float __ovld sub_group_non_uniform_scan_exclusive_min( float value );
16769 
16770 char __ovld sub_group_non_uniform_scan_exclusive_max( char value );
16771 uchar __ovld sub_group_non_uniform_scan_exclusive_max( uchar value );
16772 short __ovld sub_group_non_uniform_scan_exclusive_max( short value );
16773 ushort __ovld sub_group_non_uniform_scan_exclusive_max( ushort value );
16774 int __ovld sub_group_non_uniform_scan_exclusive_max( int value );
16775 uint __ovld sub_group_non_uniform_scan_exclusive_max( uint value );
16776 long __ovld sub_group_non_uniform_scan_exclusive_max( long value );
16777 ulong __ovld sub_group_non_uniform_scan_exclusive_max( ulong value );
16778 float __ovld sub_group_non_uniform_scan_exclusive_max( float value );
16779 
16780 char __ovld sub_group_non_uniform_reduce_and( char value );
16781 uchar __ovld sub_group_non_uniform_reduce_and( uchar value );
16782 short __ovld sub_group_non_uniform_reduce_and( short value );
16783 ushort __ovld sub_group_non_uniform_reduce_and( ushort value );
16784 int __ovld sub_group_non_uniform_reduce_and( int value );
16785 uint __ovld sub_group_non_uniform_reduce_and( uint value );
16786 long __ovld sub_group_non_uniform_reduce_and( long value );
16787 ulong __ovld sub_group_non_uniform_reduce_and( ulong value );
16788 
16789 char __ovld sub_group_non_uniform_reduce_or( char value );
16790 uchar __ovld sub_group_non_uniform_reduce_or( uchar value );
16791 short __ovld sub_group_non_uniform_reduce_or( short value );
16792 ushort __ovld sub_group_non_uniform_reduce_or( ushort value );
16793 int __ovld sub_group_non_uniform_reduce_or( int value );
16794 uint __ovld sub_group_non_uniform_reduce_or( uint value );
16795 long __ovld sub_group_non_uniform_reduce_or( long value );
16796 ulong __ovld sub_group_non_uniform_reduce_or( ulong value );
16797 
16798 char __ovld sub_group_non_uniform_reduce_xor( char value );
16799 uchar __ovld sub_group_non_uniform_reduce_xor( uchar value );
16800 short __ovld sub_group_non_uniform_reduce_xor( short value );
16801 ushort __ovld sub_group_non_uniform_reduce_xor( ushort value );
16802 int __ovld sub_group_non_uniform_reduce_xor( int value );
16803 uint __ovld sub_group_non_uniform_reduce_xor( uint value );
16804 long __ovld sub_group_non_uniform_reduce_xor( long value );
16805 ulong __ovld sub_group_non_uniform_reduce_xor( ulong value );
16806 
16807 char __ovld sub_group_non_uniform_scan_inclusive_and( char value );
16808 uchar __ovld sub_group_non_uniform_scan_inclusive_and( uchar value );
16809 short __ovld sub_group_non_uniform_scan_inclusive_and( short value );
16810 ushort __ovld sub_group_non_uniform_scan_inclusive_and( ushort value );
16811 int __ovld sub_group_non_uniform_scan_inclusive_and( int value );
16812 uint __ovld sub_group_non_uniform_scan_inclusive_and( uint value );
16813 long __ovld sub_group_non_uniform_scan_inclusive_and( long value );
16814 ulong __ovld sub_group_non_uniform_scan_inclusive_and( ulong value );
16815 
16816 char __ovld sub_group_non_uniform_scan_inclusive_or( char value );
16817 uchar __ovld sub_group_non_uniform_scan_inclusive_or( uchar value );
16818 short __ovld sub_group_non_uniform_scan_inclusive_or( short value );
16819 ushort __ovld sub_group_non_uniform_scan_inclusive_or( ushort value );
16820 int __ovld sub_group_non_uniform_scan_inclusive_or( int value );
16821 uint __ovld sub_group_non_uniform_scan_inclusive_or( uint value );
16822 long __ovld sub_group_non_uniform_scan_inclusive_or( long value );
16823 ulong __ovld sub_group_non_uniform_scan_inclusive_or( ulong value );
16824 
16825 char __ovld sub_group_non_uniform_scan_inclusive_xor( char value );
16826 uchar __ovld sub_group_non_uniform_scan_inclusive_xor( uchar value );
16827 short __ovld sub_group_non_uniform_scan_inclusive_xor( short value );
16828 ushort __ovld sub_group_non_uniform_scan_inclusive_xor( ushort value );
16829 int __ovld sub_group_non_uniform_scan_inclusive_xor( int value );
16830 uint __ovld sub_group_non_uniform_scan_inclusive_xor( uint value );
16831 long __ovld sub_group_non_uniform_scan_inclusive_xor( long value );
16832 ulong __ovld sub_group_non_uniform_scan_inclusive_xor( ulong value );
16833 
16834 char __ovld sub_group_non_uniform_scan_exclusive_and( char value );
16835 uchar __ovld sub_group_non_uniform_scan_exclusive_and( uchar value );
16836 short __ovld sub_group_non_uniform_scan_exclusive_and( short value );
16837 ushort __ovld sub_group_non_uniform_scan_exclusive_and( ushort value );
16838 int __ovld sub_group_non_uniform_scan_exclusive_and( int value );
16839 uint __ovld sub_group_non_uniform_scan_exclusive_and( uint value );
16840 long __ovld sub_group_non_uniform_scan_exclusive_and( long value );
16841 ulong __ovld sub_group_non_uniform_scan_exclusive_and( ulong value );
16842 
16843 char __ovld sub_group_non_uniform_scan_exclusive_or( char value );
16844 uchar __ovld sub_group_non_uniform_scan_exclusive_or( uchar value );
16845 short __ovld sub_group_non_uniform_scan_exclusive_or( short value );
16846 ushort __ovld sub_group_non_uniform_scan_exclusive_or( ushort value );
16847 int __ovld sub_group_non_uniform_scan_exclusive_or( int value );
16848 uint __ovld sub_group_non_uniform_scan_exclusive_or( uint value );
16849 long __ovld sub_group_non_uniform_scan_exclusive_or( long value );
16850 ulong __ovld sub_group_non_uniform_scan_exclusive_or( ulong value );
16851 
16852 char __ovld sub_group_non_uniform_scan_exclusive_xor( char value );
16853 uchar __ovld sub_group_non_uniform_scan_exclusive_xor( uchar value );
16854 short __ovld sub_group_non_uniform_scan_exclusive_xor( short value );
16855 ushort __ovld sub_group_non_uniform_scan_exclusive_xor( ushort value );
16856 int __ovld sub_group_non_uniform_scan_exclusive_xor( int value );
16857 uint __ovld sub_group_non_uniform_scan_exclusive_xor( uint value );
16858 long __ovld sub_group_non_uniform_scan_exclusive_xor( long value );
16859 ulong __ovld sub_group_non_uniform_scan_exclusive_xor( ulong value );
16860 
16861 int __ovld sub_group_non_uniform_reduce_logical_and( int predicate );
16862 int __ovld sub_group_non_uniform_reduce_logical_or( int predicate );
16863 int __ovld sub_group_non_uniform_reduce_logical_xor( int predicate );
16864 
16865 int __ovld sub_group_non_uniform_scan_inclusive_logical_and( int predicate );
16866 int __ovld sub_group_non_uniform_scan_inclusive_logical_or( int predicate );
16867 int __ovld sub_group_non_uniform_scan_inclusive_logical_xor( int predicate );
16868 
16869 int __ovld sub_group_non_uniform_scan_exclusive_logical_and( int predicate );
16870 int __ovld sub_group_non_uniform_scan_exclusive_logical_or( int predicate );
16871 int __ovld sub_group_non_uniform_scan_exclusive_logical_xor( int predicate );
16872 
16873 #if defined(cl_khr_fp16)
16874 half __ovld sub_group_non_uniform_reduce_add( half value );
16875 half __ovld sub_group_non_uniform_reduce_mul( half value );
16876 half __ovld sub_group_non_uniform_reduce_min( half value );
16877 half __ovld sub_group_non_uniform_reduce_max( half value );
16878 half __ovld sub_group_non_uniform_scan_inclusive_add( half value );
16879 half __ovld sub_group_non_uniform_scan_inclusive_mul( half value );
16880 half __ovld sub_group_non_uniform_scan_inclusive_min( half value );
16881 half __ovld sub_group_non_uniform_scan_inclusive_max( half value );
16882 half __ovld sub_group_non_uniform_scan_exclusive_add( half value );
16883 half __ovld sub_group_non_uniform_scan_exclusive_mul( half value );
16884 half __ovld sub_group_non_uniform_scan_exclusive_min( half value );
16885 half __ovld sub_group_non_uniform_scan_exclusive_max( half value );
16886 #endif // cl_khr_fp16
16887 
16888 #if defined(cl_khr_fp64)
16889 double __ovld sub_group_non_uniform_reduce_add( double value );
16890 double __ovld sub_group_non_uniform_reduce_mul( double value );
16891 double __ovld sub_group_non_uniform_reduce_min( double value );
16892 double __ovld sub_group_non_uniform_reduce_max( double value );
16893 double __ovld sub_group_non_uniform_scan_inclusive_add( double value );
16894 double __ovld sub_group_non_uniform_scan_inclusive_mul( double value );
16895 double __ovld sub_group_non_uniform_scan_inclusive_min( double value );
16896 double __ovld sub_group_non_uniform_scan_inclusive_max( double value );
16897 double __ovld sub_group_non_uniform_scan_exclusive_add( double value );
16898 double __ovld sub_group_non_uniform_scan_exclusive_mul( double value );
16899 double __ovld sub_group_non_uniform_scan_exclusive_min( double value );
16900 double __ovld sub_group_non_uniform_scan_exclusive_max( double value );
16901 #endif // cl_khr_fp64
16902 
16903 #endif // cl_khr_subgroup_non_uniform_arithmetic
16904 
16905 #if defined(cl_khr_subgroup_shuffle)
16906 char __ovld sub_group_shuffle( char value, uint index );
16907 uchar __ovld sub_group_shuffle( uchar value, uint index );
16908 short __ovld sub_group_shuffle( short value, uint index );
16909 ushort __ovld sub_group_shuffle( ushort value, uint index );
16910 int __ovld sub_group_shuffle( int value, uint index );
16911 uint __ovld sub_group_shuffle( uint value, uint index );
16912 long __ovld sub_group_shuffle( long value, uint index );
16913 ulong __ovld sub_group_shuffle( ulong value, uint index );
16914 float __ovld sub_group_shuffle( float value, uint index );
16915 
16916 char __ovld sub_group_shuffle_xor( char value, uint mask );
16917 uchar __ovld sub_group_shuffle_xor( uchar value, uint mask );
16918 short __ovld sub_group_shuffle_xor( short value, uint mask );
16919 ushort __ovld sub_group_shuffle_xor( ushort value, uint mask );
16920 int __ovld sub_group_shuffle_xor( int value, uint mask );
16921 uint __ovld sub_group_shuffle_xor( uint value, uint mask );
16922 long __ovld sub_group_shuffle_xor( long value, uint mask );
16923 ulong __ovld sub_group_shuffle_xor( ulong value, uint mask );
16924 float __ovld sub_group_shuffle_xor( float value, uint mask );
16925 
16926 #if defined(cl_khr_fp16)
16927 half __ovld sub_group_shuffle( half value, uint index );
16928 half __ovld sub_group_shuffle_xor( half value, uint mask );
16929 #endif // cl_khr_fp16
16930 
16931 #if defined(cl_khr_fp64)
16932 double __ovld sub_group_shuffle( double value, uint index );
16933 double __ovld sub_group_shuffle_xor( double value, uint mask );
16934 #endif // cl_khr_fp64
16935 
16936 #endif // cl_khr_subgroup_shuffle
16937 
16938 #if defined(cl_khr_subgroup_shuffle_relative)
16939 char __ovld sub_group_shuffle_up( char value, uint delta );
16940 uchar __ovld sub_group_shuffle_up( uchar value, uint delta );
16941 short __ovld sub_group_shuffle_up( short value, uint delta );
16942 ushort __ovld sub_group_shuffle_up( ushort value, uint delta );
16943 int __ovld sub_group_shuffle_up( int value, uint delta );
16944 uint __ovld sub_group_shuffle_up( uint value, uint delta );
16945 long __ovld sub_group_shuffle_up( long value, uint delta );
16946 ulong __ovld sub_group_shuffle_up( ulong value, uint delta );
16947 float __ovld sub_group_shuffle_up( float value, uint delta );
16948 
16949 char __ovld sub_group_shuffle_down( char value, uint delta );
16950 uchar __ovld sub_group_shuffle_down( uchar value, uint delta );
16951 short __ovld sub_group_shuffle_down( short value, uint delta );
16952 ushort __ovld sub_group_shuffle_down( ushort value, uint delta );
16953 int __ovld sub_group_shuffle_down( int value, uint delta );
16954 uint __ovld sub_group_shuffle_down( uint value, uint delta );
16955 long __ovld sub_group_shuffle_down( long value, uint delta );
16956 ulong __ovld sub_group_shuffle_down( ulong value, uint delta );
16957 float __ovld sub_group_shuffle_down( float value, uint delta );
16958 
16959 #if defined(cl_khr_fp16)
16960 half __ovld sub_group_shuffle_up( half value, uint delta );
16961 half __ovld sub_group_shuffle_down( half value, uint delta );
16962 #endif // cl_khr_fp16
16963 
16964 #if defined(cl_khr_fp64)
16965 double __ovld sub_group_shuffle_up( double value, uint delta );
16966 double __ovld sub_group_shuffle_down( double value, uint delta );
16967 #endif // cl_khr_fp64
16968 
16969 #endif // cl_khr_subgroup_shuffle_relative
16970 
16971 #if defined(cl_khr_subgroup_clustered_reduce)
16972 char __ovld sub_group_clustered_reduce_add( char value, uint clustersize );
16973 uchar __ovld sub_group_clustered_reduce_add( uchar value, uint clustersize );
16974 short __ovld sub_group_clustered_reduce_add( short value, uint clustersize );
16975 ushort __ovld sub_group_clustered_reduce_add( ushort value, uint clustersize );
16976 int __ovld sub_group_clustered_reduce_add( int value, uint clustersize );
16977 uint __ovld sub_group_clustered_reduce_add( uint value, uint clustersize );
16978 long __ovld sub_group_clustered_reduce_add( long value, uint clustersize );
16979 ulong __ovld sub_group_clustered_reduce_add( ulong value, uint clustersize );
16980 float __ovld sub_group_clustered_reduce_add( float value, uint clustersize );
16981 
16982 char __ovld sub_group_clustered_reduce_mul( char value, uint clustersize );
16983 uchar __ovld sub_group_clustered_reduce_mul( uchar value, uint clustersize );
16984 short __ovld sub_group_clustered_reduce_mul( short value, uint clustersize );
16985 ushort __ovld sub_group_clustered_reduce_mul( ushort value, uint clustersize );
16986 int __ovld sub_group_clustered_reduce_mul( int value, uint clustersize );
16987 uint __ovld sub_group_clustered_reduce_mul( uint value, uint clustersize );
16988 long __ovld sub_group_clustered_reduce_mul( long value, uint clustersize );
16989 ulong __ovld sub_group_clustered_reduce_mul( ulong value, uint clustersize );
16990 float __ovld sub_group_clustered_reduce_mul( float value, uint clustersize );
16991 
16992 char __ovld sub_group_clustered_reduce_min( char value, uint clustersize );
16993 uchar __ovld sub_group_clustered_reduce_min( uchar value, uint clustersize );
16994 short __ovld sub_group_clustered_reduce_min( short value, uint clustersize );
16995 ushort __ovld sub_group_clustered_reduce_min( ushort value, uint clustersize );
16996 int __ovld sub_group_clustered_reduce_min( int value, uint clustersize );
16997 uint __ovld sub_group_clustered_reduce_min( uint value, uint clustersize );
16998 long __ovld sub_group_clustered_reduce_min( long value, uint clustersize );
16999 ulong __ovld sub_group_clustered_reduce_min( ulong value, uint clustersize );
17000 float __ovld sub_group_clustered_reduce_min( float value, uint clustersize );
17001 
17002 char __ovld sub_group_clustered_reduce_max( char value, uint clustersize );
17003 uchar __ovld sub_group_clustered_reduce_max( uchar value, uint clustersize );
17004 short __ovld sub_group_clustered_reduce_max( short value, uint clustersize );
17005 ushort __ovld sub_group_clustered_reduce_max( ushort value, uint clustersize );
17006 int __ovld sub_group_clustered_reduce_max( int value, uint clustersize );
17007 uint __ovld sub_group_clustered_reduce_max( uint value, uint clustersize );
17008 long __ovld sub_group_clustered_reduce_max( long value, uint clustersize );
17009 ulong __ovld sub_group_clustered_reduce_max( ulong value, uint clustersize );
17010 float __ovld sub_group_clustered_reduce_max( float value, uint clustersize );
17011 
17012 char __ovld sub_group_clustered_reduce_and( char value, uint clustersize );
17013 uchar __ovld sub_group_clustered_reduce_and( uchar value, uint clustersize );
17014 short __ovld sub_group_clustered_reduce_and( short value, uint clustersize );
17015 ushort __ovld sub_group_clustered_reduce_and( ushort value, uint clustersize );
17016 int __ovld sub_group_clustered_reduce_and( int value, uint clustersize );
17017 uint __ovld sub_group_clustered_reduce_and( uint value, uint clustersize );
17018 long __ovld sub_group_clustered_reduce_and( long value, uint clustersize );
17019 ulong __ovld sub_group_clustered_reduce_and( ulong value, uint clustersize );
17020 
17021 char __ovld sub_group_clustered_reduce_or( char value, uint clustersize );
17022 uchar __ovld sub_group_clustered_reduce_or( uchar value, uint clustersize );
17023 short __ovld sub_group_clustered_reduce_or( short value, uint clustersize );
17024 ushort __ovld sub_group_clustered_reduce_or( ushort value, uint clustersize );
17025 int __ovld sub_group_clustered_reduce_or( int value, uint clustersize );
17026 uint __ovld sub_group_clustered_reduce_or( uint value, uint clustersize );
17027 long __ovld sub_group_clustered_reduce_or( long value, uint clustersize );
17028 ulong __ovld sub_group_clustered_reduce_or( ulong value, uint clustersize );
17029 
17030 char __ovld sub_group_clustered_reduce_xor( char value, uint clustersize );
17031 uchar __ovld sub_group_clustered_reduce_xor( uchar value, uint clustersize );
17032 short __ovld sub_group_clustered_reduce_xor( short value, uint clustersize );
17033 ushort __ovld sub_group_clustered_reduce_xor( ushort value, uint clustersize );
17034 int __ovld sub_group_clustered_reduce_xor( int value, uint clustersize );
17035 uint __ovld sub_group_clustered_reduce_xor( uint value, uint clustersize );
17036 long __ovld sub_group_clustered_reduce_xor( long value, uint clustersize );
17037 ulong __ovld sub_group_clustered_reduce_xor( ulong value, uint clustersize );
17038 
17039 int __ovld sub_group_clustered_reduce_logical_and( int predicate, uint clustersize );
17040 int __ovld sub_group_clustered_reduce_logical_or( int predicate, uint clustersize );
17041 int __ovld sub_group_clustered_reduce_logical_xor( int predicate, uint clustersize );
17042 
17043 #if defined(cl_khr_fp16)
17044 half __ovld sub_group_clustered_reduce_add( half value, uint clustersize );
17045 half __ovld sub_group_clustered_reduce_mul( half value, uint clustersize );
17046 half __ovld sub_group_clustered_reduce_min( half value, uint clustersize );
17047 half __ovld sub_group_clustered_reduce_max( half value, uint clustersize );
17048 #endif // cl_khr_fp16
17049 
17050 #if defined(cl_khr_fp64)
17051 double __ovld sub_group_clustered_reduce_add( double value, uint clustersize );
17052 double __ovld sub_group_clustered_reduce_mul( double value, uint clustersize );
17053 double __ovld sub_group_clustered_reduce_min( double value, uint clustersize );
17054 double __ovld sub_group_clustered_reduce_max( double value, uint clustersize );
17055 #endif // cl_khr_fp64
17056 
17057 #endif // cl_khr_subgroup_clustered_reduce
17058 
17059 #if defined(cl_khr_extended_bit_ops)
17060 char __ovld __cnfn bitfield_insert(char, char, uint, uint);
17061 uchar __ovld __cnfn bitfield_insert(uchar, uchar, uint, uint);
17062 short __ovld __cnfn bitfield_insert(short, short, uint, uint);
17063 ushort __ovld __cnfn bitfield_insert(ushort, ushort, uint, uint);
17064 int __ovld __cnfn bitfield_insert(int, int, uint, uint);
17065 uint __ovld __cnfn bitfield_insert(uint, uint, uint, uint);
17066 long __ovld __cnfn bitfield_insert(long, long, uint, uint);
17067 ulong __ovld __cnfn bitfield_insert(ulong, ulong, uint, uint);
17068 char2 __ovld __cnfn bitfield_insert(char2, char2, uint, uint);
17069 uchar2 __ovld __cnfn bitfield_insert(uchar2, uchar2, uint, uint);
17070 short2 __ovld __cnfn bitfield_insert(short2, short2, uint, uint);
17071 ushort2 __ovld __cnfn bitfield_insert(ushort2, ushort2, uint, uint);
17072 int2 __ovld __cnfn bitfield_insert(int2, int2, uint, uint);
17073 uint2 __ovld __cnfn bitfield_insert(uint2, uint2, uint, uint);
17074 long2 __ovld __cnfn bitfield_insert(long2, long2, uint, uint);
17075 ulong2 __ovld __cnfn bitfield_insert(ulong2, ulong2, uint, uint);
17076 char3 __ovld __cnfn bitfield_insert(char3, char3, uint, uint);
17077 uchar3 __ovld __cnfn bitfield_insert(uchar3, uchar3, uint, uint);
17078 short3 __ovld __cnfn bitfield_insert(short3, short3, uint, uint);
17079 ushort3 __ovld __cnfn bitfield_insert(ushort3, ushort3, uint, uint);
17080 int3 __ovld __cnfn bitfield_insert(int3, int3, uint, uint);
17081 uint3 __ovld __cnfn bitfield_insert(uint3, uint3, uint, uint);
17082 long3 __ovld __cnfn bitfield_insert(long3, long3, uint, uint);
17083 ulong3 __ovld __cnfn bitfield_insert(ulong3, ulong3, uint, uint);
17084 char4 __ovld __cnfn bitfield_insert(char4, char4, uint, uint);
17085 uchar4 __ovld __cnfn bitfield_insert(uchar4, uchar4, uint, uint);
17086 short4 __ovld __cnfn bitfield_insert(short4, short4, uint, uint);
17087 ushort4 __ovld __cnfn bitfield_insert(ushort4, ushort4, uint, uint);
17088 int4 __ovld __cnfn bitfield_insert(int4, int4, uint, uint);
17089 uint4 __ovld __cnfn bitfield_insert(uint4, uint4, uint, uint);
17090 long4 __ovld __cnfn bitfield_insert(long4, long4, uint, uint);
17091 ulong4 __ovld __cnfn bitfield_insert(ulong4, ulong4, uint, uint);
17092 char8 __ovld __cnfn bitfield_insert(char8, char8, uint, uint);
17093 uchar8 __ovld __cnfn bitfield_insert(uchar8, uchar8, uint, uint);
17094 short8 __ovld __cnfn bitfield_insert(short8, short8, uint, uint);
17095 ushort8 __ovld __cnfn bitfield_insert(ushort8, ushort8, uint, uint);
17096 int8 __ovld __cnfn bitfield_insert(int8, int8, uint, uint);
17097 uint8 __ovld __cnfn bitfield_insert(uint8, uint8, uint, uint);
17098 long8 __ovld __cnfn bitfield_insert(long8, long8, uint, uint);
17099 ulong8 __ovld __cnfn bitfield_insert(ulong8, ulong8, uint, uint);
17100 char16 __ovld __cnfn bitfield_insert(char16, char16, uint, uint);
17101 uchar16 __ovld __cnfn bitfield_insert(uchar16, uchar16, uint, uint);
17102 short16 __ovld __cnfn bitfield_insert(short16, short16, uint, uint);
17103 ushort16 __ovld __cnfn bitfield_insert(ushort16, ushort16, uint, uint);
17104 int16 __ovld __cnfn bitfield_insert(int16, int16, uint, uint);
17105 uint16 __ovld __cnfn bitfield_insert(uint16, uint16, uint, uint);
17106 long16 __ovld __cnfn bitfield_insert(long16, long16, uint, uint);
17107 ulong16 __ovld __cnfn bitfield_insert(ulong16, ulong16, uint, uint);
17108 
17109 char __ovld __cnfn bitfield_extract_signed(char, uint, uint);
17110 short __ovld __cnfn bitfield_extract_signed(short, uint, uint);
17111 int __ovld __cnfn bitfield_extract_signed(int, uint, uint);
17112 long __ovld __cnfn bitfield_extract_signed(long, uint, uint);
17113 char2 __ovld __cnfn bitfield_extract_signed(char2, uint, uint);
17114 short2 __ovld __cnfn bitfield_extract_signed(short2, uint, uint);
17115 int2 __ovld __cnfn bitfield_extract_signed(int2, uint, uint);
17116 long2 __ovld __cnfn bitfield_extract_signed(long2, uint, uint);
17117 char3 __ovld __cnfn bitfield_extract_signed(char3, uint, uint);
17118 short3 __ovld __cnfn bitfield_extract_signed(short3, uint, uint);
17119 int3 __ovld __cnfn bitfield_extract_signed(int3, uint, uint);
17120 long3 __ovld __cnfn bitfield_extract_signed(long3, uint, uint);
17121 char4 __ovld __cnfn bitfield_extract_signed(char4, uint, uint);
17122 short4 __ovld __cnfn bitfield_extract_signed(short4, uint, uint);
17123 int4 __ovld __cnfn bitfield_extract_signed(int4, uint, uint);
17124 long4 __ovld __cnfn bitfield_extract_signed(long4, uint, uint);
17125 char8 __ovld __cnfn bitfield_extract_signed(char8, uint, uint);
17126 short8 __ovld __cnfn bitfield_extract_signed(short8, uint, uint);
17127 int8 __ovld __cnfn bitfield_extract_signed(int8, uint, uint);
17128 long8 __ovld __cnfn bitfield_extract_signed(long8, uint, uint);
17129 char16 __ovld __cnfn bitfield_extract_signed(char16, uint, uint);
17130 short16 __ovld __cnfn bitfield_extract_signed(short16, uint, uint);
17131 int16 __ovld __cnfn bitfield_extract_signed(int16, uint, uint);
17132 long16 __ovld __cnfn bitfield_extract_signed(long16, uint, uint);
17133 
17134 char __ovld __cnfn bitfield_extract_signed(uchar, uint, uint);
17135 short __ovld __cnfn bitfield_extract_signed(ushort, uint, uint);
17136 int __ovld __cnfn bitfield_extract_signed(uint, uint, uint);
17137 long __ovld __cnfn bitfield_extract_signed(ulong, uint, uint);
17138 char2 __ovld __cnfn bitfield_extract_signed(uchar2, uint, uint);
17139 short2 __ovld __cnfn bitfield_extract_signed(ushort2, uint, uint);
17140 int2 __ovld __cnfn bitfield_extract_signed(uint2, uint, uint);
17141 long2 __ovld __cnfn bitfield_extract_signed(ulong2, uint, uint);
17142 char3 __ovld __cnfn bitfield_extract_signed(uchar3, uint, uint);
17143 short3 __ovld __cnfn bitfield_extract_signed(ushort3, uint, uint);
17144 int3 __ovld __cnfn bitfield_extract_signed(uint3, uint, uint);
17145 long3 __ovld __cnfn bitfield_extract_signed(ulong3, uint, uint);
17146 char4 __ovld __cnfn bitfield_extract_signed(uchar4, uint, uint);
17147 short4 __ovld __cnfn bitfield_extract_signed(ushort4, uint, uint);
17148 int4 __ovld __cnfn bitfield_extract_signed(uint4, uint, uint);
17149 long4 __ovld __cnfn bitfield_extract_signed(ulong4, uint, uint);
17150 char8 __ovld __cnfn bitfield_extract_signed(uchar8, uint, uint);
17151 short8 __ovld __cnfn bitfield_extract_signed(ushort8, uint, uint);
17152 int8 __ovld __cnfn bitfield_extract_signed(uint8, uint, uint);
17153 long8 __ovld __cnfn bitfield_extract_signed(ulong8, uint, uint);
17154 char16 __ovld __cnfn bitfield_extract_signed(uchar16, uint, uint);
17155 short16 __ovld __cnfn bitfield_extract_signed(ushort16, uint, uint);
17156 int16 __ovld __cnfn bitfield_extract_signed(uint16, uint, uint);
17157 long16 __ovld __cnfn bitfield_extract_signed(ulong16, uint, uint);
17158 
17159 uchar __ovld __cnfn bitfield_extract_unsigned(char, uint, uint);
17160 ushort __ovld __cnfn bitfield_extract_unsigned(short, uint, uint);
17161 uint __ovld __cnfn bitfield_extract_unsigned(int, uint, uint);
17162 ulong __ovld __cnfn bitfield_extract_unsigned(long, uint, uint);
17163 uchar2 __ovld __cnfn bitfield_extract_unsigned(char2, uint, uint);
17164 ushort2 __ovld __cnfn bitfield_extract_unsigned(short2, uint, uint);
17165 uint2 __ovld __cnfn bitfield_extract_unsigned(int2, uint, uint);
17166 ulong2 __ovld __cnfn bitfield_extract_unsigned(long2, uint, uint);
17167 uchar3 __ovld __cnfn bitfield_extract_unsigned(char3, uint, uint);
17168 ushort3 __ovld __cnfn bitfield_extract_unsigned(short3, uint, uint);
17169 uint3 __ovld __cnfn bitfield_extract_unsigned(int3, uint, uint);
17170 ulong3 __ovld __cnfn bitfield_extract_unsigned(long3, uint, uint);
17171 uchar4 __ovld __cnfn bitfield_extract_unsigned(char4, uint, uint);
17172 ushort4 __ovld __cnfn bitfield_extract_unsigned(short4, uint, uint);
17173 uint4 __ovld __cnfn bitfield_extract_unsigned(int4, uint, uint);
17174 ulong4 __ovld __cnfn bitfield_extract_unsigned(long4, uint, uint);
17175 uchar8 __ovld __cnfn bitfield_extract_unsigned(char8, uint, uint);
17176 ushort8 __ovld __cnfn bitfield_extract_unsigned(short8, uint, uint);
17177 uint8 __ovld __cnfn bitfield_extract_unsigned(int8, uint, uint);
17178 ulong8 __ovld __cnfn bitfield_extract_unsigned(long8, uint, uint);
17179 uchar16 __ovld __cnfn bitfield_extract_unsigned(char16, uint, uint);
17180 ushort16 __ovld __cnfn bitfield_extract_unsigned(short16, uint, uint);
17181 uint16 __ovld __cnfn bitfield_extract_unsigned(int16, uint, uint);
17182 ulong16 __ovld __cnfn bitfield_extract_unsigned(long16, uint, uint);
17183 
17184 uchar __ovld __cnfn bitfield_extract_unsigned(uchar, uint, uint);
17185 ushort __ovld __cnfn bitfield_extract_unsigned(ushort, uint, uint);
17186 uint __ovld __cnfn bitfield_extract_unsigned(uint, uint, uint);
17187 ulong __ovld __cnfn bitfield_extract_unsigned(ulong, uint, uint);
17188 uchar2 __ovld __cnfn bitfield_extract_unsigned(uchar2, uint, uint);
17189 ushort2 __ovld __cnfn bitfield_extract_unsigned(ushort2, uint, uint);
17190 uint2 __ovld __cnfn bitfield_extract_unsigned(uint2, uint, uint);
17191 ulong2 __ovld __cnfn bitfield_extract_unsigned(ulong2, uint, uint);
17192 uchar3 __ovld __cnfn bitfield_extract_unsigned(uchar3, uint, uint);
17193 ushort3 __ovld __cnfn bitfield_extract_unsigned(ushort3, uint, uint);
17194 uint3 __ovld __cnfn bitfield_extract_unsigned(uint3, uint, uint);
17195 ulong3 __ovld __cnfn bitfield_extract_unsigned(ulong3, uint, uint);
17196 uchar4 __ovld __cnfn bitfield_extract_unsigned(uchar4, uint, uint);
17197 ushort4 __ovld __cnfn bitfield_extract_unsigned(ushort4, uint, uint);
17198 uint4 __ovld __cnfn bitfield_extract_unsigned(uint4, uint, uint);
17199 ulong4 __ovld __cnfn bitfield_extract_unsigned(ulong4, uint, uint);
17200 uchar8 __ovld __cnfn bitfield_extract_unsigned(uchar8, uint, uint);
17201 ushort8 __ovld __cnfn bitfield_extract_unsigned(ushort8, uint, uint);
17202 uint8 __ovld __cnfn bitfield_extract_unsigned(uint8, uint, uint);
17203 ulong8 __ovld __cnfn bitfield_extract_unsigned(ulong8, uint, uint);
17204 uchar16 __ovld __cnfn bitfield_extract_unsigned(uchar16, uint, uint);
17205 ushort16 __ovld __cnfn bitfield_extract_unsigned(ushort16, uint, uint);
17206 uint16 __ovld __cnfn bitfield_extract_unsigned(uint16, uint, uint);
17207 ulong16 __ovld __cnfn bitfield_extract_unsigned(ulong16, uint, uint);
17208 
17209 char __ovld __cnfn bit_reverse(char);
17210 uchar __ovld __cnfn bit_reverse(uchar);
17211 short __ovld __cnfn bit_reverse(short);
17212 ushort __ovld __cnfn bit_reverse(ushort);
17213 int __ovld __cnfn bit_reverse(int);
17214 uint __ovld __cnfn bit_reverse(uint);
17215 long __ovld __cnfn bit_reverse(long);
17216 ulong __ovld __cnfn bit_reverse(ulong);
17217 char2 __ovld __cnfn bit_reverse(char2);
17218 uchar2 __ovld __cnfn bit_reverse(uchar2);
17219 short2 __ovld __cnfn bit_reverse(short2);
17220 ushort2 __ovld __cnfn bit_reverse(ushort2);
17221 int2 __ovld __cnfn bit_reverse(int2);
17222 uint2 __ovld __cnfn bit_reverse(uint2);
17223 long2 __ovld __cnfn bit_reverse(long2);
17224 ulong2 __ovld __cnfn bit_reverse(ulong2);
17225 char3 __ovld __cnfn bit_reverse(char3);
17226 uchar3 __ovld __cnfn bit_reverse(uchar3);
17227 short3 __ovld __cnfn bit_reverse(short3);
17228 ushort3 __ovld __cnfn bit_reverse(ushort3);
17229 int3 __ovld __cnfn bit_reverse(int3);
17230 uint3 __ovld __cnfn bit_reverse(uint3);
17231 long3 __ovld __cnfn bit_reverse(long3);
17232 ulong3 __ovld __cnfn bit_reverse(ulong3);
17233 char4 __ovld __cnfn bit_reverse(char4);
17234 uchar4 __ovld __cnfn bit_reverse(uchar4);
17235 short4 __ovld __cnfn bit_reverse(short4);
17236 ushort4 __ovld __cnfn bit_reverse(ushort4);
17237 int4 __ovld __cnfn bit_reverse(int4);
17238 uint4 __ovld __cnfn bit_reverse(uint4);
17239 long4 __ovld __cnfn bit_reverse(long4);
17240 ulong4 __ovld __cnfn bit_reverse(ulong4);
17241 char8 __ovld __cnfn bit_reverse(char8);
17242 uchar8 __ovld __cnfn bit_reverse(uchar8);
17243 short8 __ovld __cnfn bit_reverse(short8);
17244 ushort8 __ovld __cnfn bit_reverse(ushort8);
17245 int8 __ovld __cnfn bit_reverse(int8);
17246 uint8 __ovld __cnfn bit_reverse(uint8);
17247 long8 __ovld __cnfn bit_reverse(long8);
17248 ulong8 __ovld __cnfn bit_reverse(ulong8);
17249 char16 __ovld __cnfn bit_reverse(char16);
17250 uchar16 __ovld __cnfn bit_reverse(uchar16);
17251 short16 __ovld __cnfn bit_reverse(short16);
17252 ushort16 __ovld __cnfn bit_reverse(ushort16);
17253 int16 __ovld __cnfn bit_reverse(int16);
17254 uint16 __ovld __cnfn bit_reverse(uint16);
17255 long16 __ovld __cnfn bit_reverse(long16);
17256 ulong16 __ovld __cnfn bit_reverse(ulong16);
17257 #endif // cl_khr_extended_bit_ops
17258 
17259 #if defined(__opencl_c_integer_dot_product_input_4x8bit)
17260 uint __ovld __cnfn dot(uchar4, uchar4);
17261 int __ovld __cnfn dot(char4, char4);
17262 int __ovld __cnfn dot(uchar4, char4);
17263 int __ovld __cnfn dot(char4, uchar4);
17264 
17265 uint __ovld __cnfn dot_acc_sat(uchar4, uchar4, uint);
17266 int __ovld __cnfn dot_acc_sat(char4, char4, int);
17267 int __ovld __cnfn dot_acc_sat(uchar4, char4, int);
17268 int __ovld __cnfn dot_acc_sat(char4, uchar4, int);
17269 #endif // __opencl_c_integer_dot_product_input_4x8bit
17270 
17271 #if defined(__opencl_c_integer_dot_product_input_4x8bit_packed)
17272 uint __ovld __cnfn dot_4x8packed_uu_uint(uint, uint);
17273 int __ovld __cnfn dot_4x8packed_ss_int(uint, uint);
17274 int __ovld __cnfn dot_4x8packed_us_int(uint, uint);
17275 int __ovld __cnfn dot_4x8packed_su_int(uint, uint);
17276 
17277 uint __ovld __cnfn dot_acc_sat_4x8packed_uu_uint(uint, uint, uint);
17278 int __ovld __cnfn dot_acc_sat_4x8packed_ss_int(uint, uint, int);
17279 int __ovld __cnfn dot_acc_sat_4x8packed_us_int(uint, uint, int);
17280 int __ovld __cnfn dot_acc_sat_4x8packed_su_int(uint, uint, int);
17281 #endif // __opencl_c_integer_dot_product_input_4x8bit_packed
17282 
17283 #if defined(cl_khr_subgroup_rotate)
17284 char __ovld __conv sub_group_rotate(char, int);
17285 uchar __ovld __conv sub_group_rotate(uchar, int);
17286 short __ovld __conv sub_group_rotate(short, int);
17287 ushort __ovld __conv sub_group_rotate(ushort, int);
17288 int __ovld __conv sub_group_rotate(int, int);
17289 uint __ovld __conv sub_group_rotate(uint, int);
17290 long __ovld __conv sub_group_rotate(long, int);
17291 ulong __ovld __conv sub_group_rotate(ulong, int);
17292 float __ovld __conv sub_group_rotate(float, int);
17293 #if defined(cl_khr_fp64)
17294 double __ovld __conv sub_group_rotate(double, int);
17295 #endif // cl_khr_fp64
17296 #if defined(cl_khr_fp16)
17297 half __ovld __conv sub_group_rotate(half, int);
17298 #endif // cl_khr_fp16
17299 
17300 char __ovld __conv sub_group_clustered_rotate(char, int, uint);
17301 uchar __ovld __conv sub_group_clustered_rotate(uchar, int, uint);
17302 short __ovld __conv sub_group_clustered_rotate(short, int, uint);
17303 ushort __ovld __conv sub_group_clustered_rotate(ushort, int, uint);
17304 int __ovld __conv sub_group_clustered_rotate(int, int, uint);
17305 uint __ovld __conv sub_group_clustered_rotate(uint, int, uint);
17306 long __ovld __conv sub_group_clustered_rotate(long, int, uint);
17307 ulong __ovld __conv sub_group_clustered_rotate(ulong, int, uint);
17308 float __ovld __conv sub_group_clustered_rotate(float, int, uint);
17309 #if defined(cl_khr_fp64)
17310 double __ovld __conv sub_group_clustered_rotate(double, int, uint);
17311 #endif // cl_khr_fp64
17312 #if defined(cl_khr_fp16)
17313 half __ovld __conv sub_group_clustered_rotate(half, int, uint);
17314 #endif // cl_khr_fp16
17315 #endif // cl_khr_subgroup_rotate
17316 
17317 #if defined(cl_khr_kernel_clock)
17318 #if defined(__opencl_c_kernel_clock_scope_device)
17319 ulong __ovld clock_read_device();
17320 uint2 __ovld clock_read_hilo_device();
17321 #endif // __opencl_c_kernel_clock_scope_device
17322 #if defined(__opencl_c_kernel_clock_scope_work_group)
17323 ulong __ovld clock_read_work_group();
17324 uint2 __ovld clock_read_hilo_work_group();
17325 #endif // __opencl_c_kernel_clock_scope_work_group
17326 #if defined(__opencl_c_kernel_clock_scope_sub_group)
17327 ulong __ovld clock_read_sub_group();
17328 uint2 __ovld clock_read_hilo_sub_group();
17329 #endif // __opencl_c_kernel_clock_scope_sub_group
17330 #endif // cl_khr_kernel_clock
17331 
17332 #if defined(cl_intel_subgroups)
17333 // Intel-Specific Sub Group Functions
17334 float __ovld __conv intel_sub_group_shuffle( float , uint );
17335 float2 __ovld __conv intel_sub_group_shuffle( float2, uint );
17336 float3 __ovld __conv intel_sub_group_shuffle( float3, uint );
17337 float4 __ovld __conv intel_sub_group_shuffle( float4, uint );
17338 float8 __ovld __conv intel_sub_group_shuffle( float8, uint );
17339 float16 __ovld __conv intel_sub_group_shuffle( float16, uint );
17340 
17341 int __ovld __conv intel_sub_group_shuffle( int , uint );
17342 int2 __ovld __conv intel_sub_group_shuffle( int2, uint );
17343 int3 __ovld __conv intel_sub_group_shuffle( int3, uint );
17344 int4 __ovld __conv intel_sub_group_shuffle( int4, uint );
17345 int8 __ovld __conv intel_sub_group_shuffle( int8, uint );
17346 int16 __ovld __conv intel_sub_group_shuffle( int16, uint );
17347 
17348 uint __ovld __conv intel_sub_group_shuffle( uint , uint );
17349 uint2 __ovld __conv intel_sub_group_shuffle( uint2, uint );
17350 uint3 __ovld __conv intel_sub_group_shuffle( uint3, uint );
17351 uint4 __ovld __conv intel_sub_group_shuffle( uint4, uint );
17352 uint8 __ovld __conv intel_sub_group_shuffle( uint8, uint );
17353 uint16 __ovld __conv intel_sub_group_shuffle( uint16, uint );
17354 
17355 long __ovld __conv intel_sub_group_shuffle( long, uint );
17356 ulong __ovld __conv intel_sub_group_shuffle( ulong, uint );
17357 
17358 float __ovld __conv intel_sub_group_shuffle_down( float cur, float next, uint );
17359 float2 __ovld __conv intel_sub_group_shuffle_down( float2 cur, float2 next, uint );
17360 float3 __ovld __conv intel_sub_group_shuffle_down( float3 cur, float3 next, uint );
17361 float4 __ovld __conv intel_sub_group_shuffle_down( float4 cur, float4 next, uint );
17362 float8 __ovld __conv intel_sub_group_shuffle_down( float8 cur, float8 next, uint );
17363 float16 __ovld __conv intel_sub_group_shuffle_down( float16 cur, float16 next, uint );
17364 
17365 int __ovld __conv intel_sub_group_shuffle_down( int cur, int next, uint );
17366 int2 __ovld __conv intel_sub_group_shuffle_down( int2 cur, int2 next, uint );
17367 int3 __ovld __conv intel_sub_group_shuffle_down( int3 cur, int3 next, uint );
17368 int4 __ovld __conv intel_sub_group_shuffle_down( int4 cur, int4 next, uint );
17369 int8 __ovld __conv intel_sub_group_shuffle_down( int8 cur, int8 next, uint );
17370 int16 __ovld __conv intel_sub_group_shuffle_down( int16 cur, int16 next, uint );
17371 
17372 uint __ovld __conv intel_sub_group_shuffle_down( uint cur, uint next, uint );
17373 uint2 __ovld __conv intel_sub_group_shuffle_down( uint2 cur, uint2 next, uint );
17374 uint3 __ovld __conv intel_sub_group_shuffle_down( uint3 cur, uint3 next, uint );
17375 uint4 __ovld __conv intel_sub_group_shuffle_down( uint4 cur, uint4 next, uint );
17376 uint8 __ovld __conv intel_sub_group_shuffle_down( uint8 cur, uint8 next, uint );
17377 uint16 __ovld __conv intel_sub_group_shuffle_down( uint16 cur, uint16 next, uint );
17378 
17379 long __ovld __conv intel_sub_group_shuffle_down( long prev, long cur, uint );
17380 ulong __ovld __conv intel_sub_group_shuffle_down( ulong prev, ulong cur, uint );
17381 
17382 float __ovld __conv intel_sub_group_shuffle_up( float prev, float cur, uint );
17383 float2 __ovld __conv intel_sub_group_shuffle_up( float2 prev, float2 cur, uint );
17384 float3 __ovld __conv intel_sub_group_shuffle_up( float3 prev, float3 cur, uint );
17385 float4 __ovld __conv intel_sub_group_shuffle_up( float4 prev, float4 cur, uint );
17386 float8 __ovld __conv intel_sub_group_shuffle_up( float8 prev, float8 cur, uint );
17387 float16 __ovld __conv intel_sub_group_shuffle_up( float16 prev, float16 cur, uint );
17388 
17389 int __ovld __conv intel_sub_group_shuffle_up( int prev, int cur, uint );
17390 int2 __ovld __conv intel_sub_group_shuffle_up( int2 prev, int2 cur, uint );
17391 int3 __ovld __conv intel_sub_group_shuffle_up( int3 prev, int3 cur, uint );
17392 int4 __ovld __conv intel_sub_group_shuffle_up( int4 prev, int4 cur, uint );
17393 int8 __ovld __conv intel_sub_group_shuffle_up( int8 prev, int8 cur, uint );
17394 int16 __ovld __conv intel_sub_group_shuffle_up( int16 prev, int16 cur, uint );
17395 
17396 uint __ovld __conv intel_sub_group_shuffle_up( uint prev, uint cur, uint );
17397 uint2 __ovld __conv intel_sub_group_shuffle_up( uint2 prev, uint2 cur, uint );
17398 uint3 __ovld __conv intel_sub_group_shuffle_up( uint3 prev, uint3 cur, uint );
17399 uint4 __ovld __conv intel_sub_group_shuffle_up( uint4 prev, uint4 cur, uint );
17400 uint8 __ovld __conv intel_sub_group_shuffle_up( uint8 prev, uint8 cur, uint );
17401 uint16 __ovld __conv intel_sub_group_shuffle_up( uint16 prev, uint16 cur, uint );
17402 
17403 long __ovld __conv intel_sub_group_shuffle_up( long prev, long cur, uint );
17404 ulong __ovld __conv intel_sub_group_shuffle_up( ulong prev, ulong cur, uint );
17405 
17406 float __ovld __conv intel_sub_group_shuffle_xor( float , uint );
17407 float2 __ovld __conv intel_sub_group_shuffle_xor( float2, uint );
17408 float3 __ovld __conv intel_sub_group_shuffle_xor( float3, uint );
17409 float4 __ovld __conv intel_sub_group_shuffle_xor( float4, uint );
17410 float8 __ovld __conv intel_sub_group_shuffle_xor( float8, uint );
17411 float16 __ovld __conv intel_sub_group_shuffle_xor( float16, uint );
17412 
17413 int __ovld __conv intel_sub_group_shuffle_xor( int , uint );
17414 int2 __ovld __conv intel_sub_group_shuffle_xor( int2, uint );
17415 int3 __ovld __conv intel_sub_group_shuffle_xor( int3, uint );
17416 int4 __ovld __conv intel_sub_group_shuffle_xor( int4, uint );
17417 int8 __ovld __conv intel_sub_group_shuffle_xor( int8, uint );
17418 int16 __ovld __conv intel_sub_group_shuffle_xor( int16, uint );
17419 
17420 uint __ovld __conv intel_sub_group_shuffle_xor( uint , uint );
17421 uint2 __ovld __conv intel_sub_group_shuffle_xor( uint2, uint );
17422 uint3 __ovld __conv intel_sub_group_shuffle_xor( uint3, uint );
17423 uint4 __ovld __conv intel_sub_group_shuffle_xor( uint4, uint );
17424 uint8 __ovld __conv intel_sub_group_shuffle_xor( uint8, uint );
17425 uint16 __ovld __conv intel_sub_group_shuffle_xor( uint16, uint );
17426 
17427 long __ovld __conv intel_sub_group_shuffle_xor( long, uint );
17428 ulong __ovld __conv intel_sub_group_shuffle_xor( ulong, uint );
17429 
17430 #if defined(__opencl_c_images)
17431 uint __ovld __conv intel_sub_group_block_read(read_only image2d_t, int2);
17432 uint2 __ovld __conv intel_sub_group_block_read2(read_only image2d_t, int2);
17433 uint4 __ovld __conv intel_sub_group_block_read4(read_only image2d_t, int2);
17434 uint8 __ovld __conv intel_sub_group_block_read8(read_only image2d_t, int2);
17435 #endif
17436 
17437 #if defined(__opencl_c_read_write_images)
17438 uint __ovld __conv intel_sub_group_block_read(read_write image2d_t, int2);
17439 uint2 __ovld __conv intel_sub_group_block_read2(read_write image2d_t, int2);
17440 uint4 __ovld __conv intel_sub_group_block_read4(read_write image2d_t, int2);
17441 uint8 __ovld __conv intel_sub_group_block_read8(read_write image2d_t, int2);
17442 #endif // defined(__opencl_c_read_write_images)
17443 
17444 uint __ovld __conv intel_sub_group_block_read( const __global uint* p );
17445 uint2 __ovld __conv intel_sub_group_block_read2( const __global uint* p );
17446 uint4 __ovld __conv intel_sub_group_block_read4( const __global uint* p );
17447 uint8 __ovld __conv intel_sub_group_block_read8( const __global uint* p );
17448 
17449 #if defined(__opencl_c_images)
17450 void __ovld __conv intel_sub_group_block_write(write_only image2d_t, int2, uint);
17451 void __ovld __conv intel_sub_group_block_write2(write_only image2d_t, int2, uint2);
17452 void __ovld __conv intel_sub_group_block_write4(write_only image2d_t, int2, uint4);
17453 void __ovld __conv intel_sub_group_block_write8(write_only image2d_t, int2, uint8);
17454 #endif // defined(__opencl_c_images)
17455 
17456 #if defined(__opencl_c_read_write_images)
17457 void __ovld __conv intel_sub_group_block_write(read_write image2d_t, int2, uint);
17458 void __ovld __conv intel_sub_group_block_write2(read_write image2d_t, int2, uint2);
17459 void __ovld __conv intel_sub_group_block_write4(read_write image2d_t, int2, uint4);
17460 void __ovld __conv intel_sub_group_block_write8(read_write image2d_t, int2, uint8);
17461 #endif // defined(__opencl_c_read_write_images)
17462 
17463 void __ovld __conv intel_sub_group_block_write( __global uint* p, uint data );
17464 void __ovld __conv intel_sub_group_block_write2( __global uint* p, uint2 data );
17465 void __ovld __conv intel_sub_group_block_write4( __global uint* p, uint4 data );
17466 void __ovld __conv intel_sub_group_block_write8( __global uint* p, uint8 data );
17467 
17468 #ifdef cl_khr_fp16
17469 half __ovld __conv intel_sub_group_shuffle( half, uint );
17470 half __ovld __conv intel_sub_group_shuffle_down( half prev, half cur, uint );
17471 half __ovld __conv intel_sub_group_shuffle_up( half prev, half cur, uint );
17472 half __ovld __conv intel_sub_group_shuffle_xor( half, uint );
17473 #endif
17474 
17475 #if defined(cl_khr_fp64)
17476 double __ovld __conv intel_sub_group_shuffle( double, uint );
17477 double __ovld __conv intel_sub_group_shuffle_down( double prev, double cur, uint );
17478 double __ovld __conv intel_sub_group_shuffle_up( double prev, double cur, uint );
17479 double __ovld __conv intel_sub_group_shuffle_xor( double, uint );
17480 #endif
17481 
17482 #endif //cl_intel_subgroups
17483 
17484 #if defined(cl_intel_subgroups_short)
17485 short __ovld __conv intel_sub_group_broadcast( short , uint sub_group_local_id );
17486 short2 __ovld __conv intel_sub_group_broadcast( short2, uint sub_group_local_id );
17487 short3 __ovld __conv intel_sub_group_broadcast( short3, uint sub_group_local_id );
17488 short4 __ovld __conv intel_sub_group_broadcast( short4, uint sub_group_local_id );
17489 short8 __ovld __conv intel_sub_group_broadcast( short8, uint sub_group_local_id );
17490 
17491 ushort __ovld __conv intel_sub_group_broadcast( ushort , uint sub_group_local_id );
17492 ushort2 __ovld __conv intel_sub_group_broadcast( ushort2, uint sub_group_local_id );
17493 ushort3 __ovld __conv intel_sub_group_broadcast( ushort3, uint sub_group_local_id );
17494 ushort4 __ovld __conv intel_sub_group_broadcast( ushort4, uint sub_group_local_id );
17495 ushort8 __ovld __conv intel_sub_group_broadcast( ushort8, uint sub_group_local_id );
17496 
17497 short __ovld __conv intel_sub_group_shuffle( short , uint );
17498 short2 __ovld __conv intel_sub_group_shuffle( short2 , uint );
17499 short3 __ovld __conv intel_sub_group_shuffle( short3 , uint );
17500 short4 __ovld __conv intel_sub_group_shuffle( short4 , uint );
17501 short8 __ovld __conv intel_sub_group_shuffle( short8 , uint );
17502 short16 __ovld __conv intel_sub_group_shuffle( short16, uint);
17503 
17504 ushort __ovld __conv intel_sub_group_shuffle( ushort , uint );
17505 ushort2 __ovld __conv intel_sub_group_shuffle( ushort2 , uint );
17506 ushort3 __ovld __conv intel_sub_group_shuffle( ushort3 , uint );
17507 ushort4 __ovld __conv intel_sub_group_shuffle( ushort4 , uint );
17508 ushort8 __ovld __conv intel_sub_group_shuffle( ushort8 , uint );
17509 ushort16 __ovld __conv intel_sub_group_shuffle( ushort16, uint );
17510 
17511 short __ovld __conv intel_sub_group_shuffle_down( short cur, short next, uint );
17512 short2 __ovld __conv intel_sub_group_shuffle_down( short2 cur, short2 next, uint );
17513 short3 __ovld __conv intel_sub_group_shuffle_down( short3 cur, short3 next, uint );
17514 short4 __ovld __conv intel_sub_group_shuffle_down( short4 cur, short4 next, uint );
17515 short8 __ovld __conv intel_sub_group_shuffle_down( short8 cur, short8 next, uint );
17516 short16 __ovld __conv intel_sub_group_shuffle_down( short16 cur, short16 next, uint );
17517 
17518 ushort __ovld __conv intel_sub_group_shuffle_down( ushort cur, ushort next, uint );
17519 ushort2 __ovld __conv intel_sub_group_shuffle_down( ushort2 cur, ushort2 next, uint );
17520 ushort3 __ovld __conv intel_sub_group_shuffle_down( ushort3 cur, ushort3 next, uint );
17521 ushort4 __ovld __conv intel_sub_group_shuffle_down( ushort4 cur, ushort4 next, uint );
17522 ushort8 __ovld __conv intel_sub_group_shuffle_down( ushort8 cur, ushort8 next, uint );
17523 ushort16 __ovld __conv intel_sub_group_shuffle_down( ushort16 cur, ushort16 next, uint );
17524 
17525 short __ovld __conv intel_sub_group_shuffle_up( short cur, short next, uint );
17526 short2 __ovld __conv intel_sub_group_shuffle_up( short2 cur, short2 next, uint );
17527 short3 __ovld __conv intel_sub_group_shuffle_up( short3 cur, short3 next, uint );
17528 short4 __ovld __conv intel_sub_group_shuffle_up( short4 cur, short4 next, uint );
17529 short8 __ovld __conv intel_sub_group_shuffle_up( short8 cur, short8 next, uint );
17530 short16 __ovld __conv intel_sub_group_shuffle_up( short16 cur, short16 next, uint );
17531 
17532 ushort __ovld __conv intel_sub_group_shuffle_up( ushort cur, ushort next, uint );
17533 ushort2 __ovld __conv intel_sub_group_shuffle_up( ushort2 cur, ushort2 next, uint );
17534 ushort3 __ovld __conv intel_sub_group_shuffle_up( ushort3 cur, ushort3 next, uint );
17535 ushort4 __ovld __conv intel_sub_group_shuffle_up( ushort4 cur, ushort4 next, uint );
17536 ushort8 __ovld __conv intel_sub_group_shuffle_up( ushort8 cur, ushort8 next, uint );
17537 ushort16 __ovld __conv intel_sub_group_shuffle_up( ushort16 cur, ushort16 next, uint );
17538 
17539 short __ovld __conv intel_sub_group_shuffle_xor( short , uint );
17540 short2 __ovld __conv intel_sub_group_shuffle_xor( short2 , uint );
17541 short3 __ovld __conv intel_sub_group_shuffle_xor( short3 , uint );
17542 short4 __ovld __conv intel_sub_group_shuffle_xor( short4 , uint );
17543 short8 __ovld __conv intel_sub_group_shuffle_xor( short8 , uint );
17544 short16 __ovld __conv intel_sub_group_shuffle_xor( short16, uint );
17545 
17546 ushort __ovld __conv intel_sub_group_shuffle_xor( ushort , uint );
17547 ushort2 __ovld __conv intel_sub_group_shuffle_xor( ushort2 , uint );
17548 ushort3 __ovld __conv intel_sub_group_shuffle_xor( ushort3 , uint );
17549 ushort4 __ovld __conv intel_sub_group_shuffle_xor( ushort4 , uint );
17550 ushort8 __ovld __conv intel_sub_group_shuffle_xor( ushort8 , uint );
17551 ushort16 __ovld __conv intel_sub_group_shuffle_xor( ushort16, uint );
17552 
17553 short __ovld __conv intel_sub_group_reduce_add( short x );
17554 ushort __ovld __conv intel_sub_group_reduce_add( ushort x );
17555 short __ovld __conv intel_sub_group_reduce_min( short x );
17556 ushort __ovld __conv intel_sub_group_reduce_min( ushort x );
17557 short __ovld __conv intel_sub_group_reduce_max( short x );
17558 ushort __ovld __conv intel_sub_group_reduce_max( ushort x );
17559 
17560 short __ovld __conv intel_sub_group_scan_exclusive_add( short x );
17561 ushort __ovld __conv intel_sub_group_scan_exclusive_add( ushort x );
17562 short __ovld __conv intel_sub_group_scan_exclusive_min( short x );
17563 ushort __ovld __conv intel_sub_group_scan_exclusive_min( ushort x );
17564 short __ovld __conv intel_sub_group_scan_exclusive_max( short x );
17565 ushort __ovld __conv intel_sub_group_scan_exclusive_max( ushort x );
17566 
17567 short __ovld __conv intel_sub_group_scan_inclusive_add( short x );
17568 ushort __ovld __conv intel_sub_group_scan_inclusive_add( ushort x );
17569 short __ovld __conv intel_sub_group_scan_inclusive_min( short x );
17570 ushort __ovld __conv intel_sub_group_scan_inclusive_min( ushort x );
17571 short __ovld __conv intel_sub_group_scan_inclusive_max( short x );
17572 ushort __ovld __conv intel_sub_group_scan_inclusive_max( ushort x );
17573 
17574 #if defined(__opencl_c_images)
17575 uint __ovld __conv intel_sub_group_block_read_ui(read_only image2d_t, int2);
17576 uint2 __ovld __conv intel_sub_group_block_read_ui2(read_only image2d_t, int2);
17577 uint4 __ovld __conv intel_sub_group_block_read_ui4(read_only image2d_t, int2);
17578 uint8 __ovld __conv intel_sub_group_block_read_ui8(read_only image2d_t, int2);
17579 #endif // defined(__opencl_c_images)
17580 
17581 #if defined(__opencl_c_read_write_images)
17582 uint __ovld __conv intel_sub_group_block_read_ui(read_write image2d_t, int2);
17583 uint2 __ovld __conv intel_sub_group_block_read_ui2(read_write image2d_t, int2);
17584 uint4 __ovld __conv intel_sub_group_block_read_ui4(read_write image2d_t, int2);
17585 uint8 __ovld __conv intel_sub_group_block_read_ui8(read_write image2d_t, int2);
17586 #endif // defined(__opencl_c_read_write_images)
17587 
17588 uint __ovld __conv intel_sub_group_block_read_ui( const __global uint* p );
17589 uint2 __ovld __conv intel_sub_group_block_read_ui2( const __global uint* p );
17590 uint4 __ovld __conv intel_sub_group_block_read_ui4( const __global uint* p );
17591 uint8 __ovld __conv intel_sub_group_block_read_ui8( const __global uint* p );
17592 
17593 #if defined(__opencl_c_images)
17594 void __ovld __conv intel_sub_group_block_write_ui(read_only image2d_t, int2, uint);
17595 void __ovld __conv intel_sub_group_block_write_ui2(read_only image2d_t, int2, uint2);
17596 void __ovld __conv intel_sub_group_block_write_ui4(read_only image2d_t, int2, uint4);
17597 void __ovld __conv intel_sub_group_block_write_ui8(read_only image2d_t, int2, uint8);
17598 #endif //defined(__opencl_c_images)
17599 
17600 #if defined(__opencl_c_read_write_images)
17601 void __ovld __conv intel_sub_group_block_write_ui(read_write image2d_t, int2, uint);
17602 void __ovld __conv intel_sub_group_block_write_ui2(read_write image2d_t, int2, uint2);
17603 void __ovld __conv intel_sub_group_block_write_ui4(read_write image2d_t, int2, uint4);
17604 void __ovld __conv intel_sub_group_block_write_ui8(read_write image2d_t, int2, uint8);
17605 #endif // defined(__opencl_c_read_write_images)
17606 
17607 void __ovld __conv intel_sub_group_block_write_ui( __global uint* p, uint data );
17608 void __ovld __conv intel_sub_group_block_write_ui2( __global uint* p, uint2 data );
17609 void __ovld __conv intel_sub_group_block_write_ui4( __global uint* p, uint4 data );
17610 void __ovld __conv intel_sub_group_block_write_ui8( __global uint* p, uint8 data );
17611 
17612 #if defined(__opencl_c_images)
17613 ushort __ovld __conv intel_sub_group_block_read_us(read_only image2d_t, int2);
17614 ushort2 __ovld __conv intel_sub_group_block_read_us2(read_only image2d_t, int2);
17615 ushort4 __ovld __conv intel_sub_group_block_read_us4(read_only image2d_t, int2);
17616 ushort8 __ovld __conv intel_sub_group_block_read_us8(read_only image2d_t, int2);
17617 #endif // defined(__opencl_c_images)
17618 
17619 #if defined(__opencl_c_read_write_images)
17620 ushort __ovld __conv intel_sub_group_block_read_us(read_write image2d_t, int2);
17621 ushort2 __ovld __conv intel_sub_group_block_read_us2(read_write image2d_t, int2);
17622 ushort4 __ovld __conv intel_sub_group_block_read_us4(read_write image2d_t, int2);
17623 ushort8 __ovld __conv intel_sub_group_block_read_us8(read_write image2d_t, int2);
17624 #endif // defined(__opencl_c_read_write_images)
17625 
17626 ushort __ovld __conv intel_sub_group_block_read_us( const __global ushort* p );
17627 ushort2 __ovld __conv intel_sub_group_block_read_us2( const __global ushort* p );
17628 ushort4 __ovld __conv intel_sub_group_block_read_us4( const __global ushort* p );
17629 ushort8 __ovld __conv intel_sub_group_block_read_us8( const __global ushort* p );
17630 
17631 #if defined(__opencl_c_images)
17632 void __ovld __conv intel_sub_group_block_write_us(write_only image2d_t, int2, ushort);
17633 void __ovld __conv intel_sub_group_block_write_us2(write_only image2d_t, int2, ushort2);
17634 void __ovld __conv intel_sub_group_block_write_us4(write_only image2d_t, int2, ushort4);
17635 void __ovld __conv intel_sub_group_block_write_us8(write_only image2d_t, int2, ushort8);
17636 #endif // defined(__opencl_c_images)
17637 
17638 #if defined(__opencl_c_read_write_images)
17639 void __ovld __conv intel_sub_group_block_write_us(read_write image2d_t, int2, ushort);
17640 void __ovld __conv intel_sub_group_block_write_us2(read_write image2d_t, int2, ushort2);
17641 void __ovld __conv intel_sub_group_block_write_us4(read_write image2d_t, int2, ushort4);
17642 void __ovld __conv intel_sub_group_block_write_us8(read_write image2d_t, int2, ushort8);
17643 #endif // defined(__opencl_c_read_write_images)
17644 
17645 void __ovld __conv intel_sub_group_block_write_us( __global ushort* p, ushort data );
17646 void __ovld __conv intel_sub_group_block_write_us2( __global ushort* p, ushort2 data );
17647 void __ovld __conv intel_sub_group_block_write_us4( __global ushort* p, ushort4 data );
17648 void __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, ushort8 data );
17649 #endif // cl_intel_subgroups_short
17650 
17651 #ifdef cl_intel_device_side_avc_motion_estimation
17652 #pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : begin
17653 
17654 // MCE built-in functions
17655 uchar __ovld
17656 intel_sub_group_avc_mce_get_default_inter_base_multi_reference_penalty(
17657  uchar slice_type, uchar qp);
17658 ulong __ovld intel_sub_group_avc_mce_get_default_inter_shape_penalty(
17659  uchar slice_type, uchar qp);
17660 uchar __ovld intel_sub_group_avc_mce_get_default_inter_direction_penalty(
17661  uchar slice_type, uchar qp);
17662 uint __ovld intel_sub_group_avc_mce_get_default_intra_luma_shape_penalty(
17663  uchar slice_type, uchar qp);
17664 uint2 __ovld
17665 intel_sub_group_avc_mce_get_default_inter_motion_vector_cost_table(
17666  uchar slice_type, uchar qp);
17667 uchar __ovld intel_sub_group_avc_mce_get_default_intra_luma_mode_penalty(
17668  uchar slice_type, uchar qp);
17669 
17670 uint2 __ovld intel_sub_group_avc_mce_get_default_high_penalty_cost_table();
17671 uint2 __ovld intel_sub_group_avc_mce_get_default_medium_penalty_cost_table();
17672 uint2 __ovld intel_sub_group_avc_mce_get_default_low_penalty_cost_table();
17673 uint __ovld intel_sub_group_avc_mce_get_default_non_dc_luma_intra_penalty();
17674 uchar __ovld
17675 intel_sub_group_avc_mce_get_default_intra_chroma_mode_base_penalty();
17676 
17677 intel_sub_group_avc_mce_payload_t __ovld
17678 intel_sub_group_avc_mce_set_inter_base_multi_reference_penalty(
17679  uchar reference_base_penalty, intel_sub_group_avc_mce_payload_t payload);
17680 intel_sub_group_avc_mce_payload_t __ovld
17681 intel_sub_group_avc_mce_set_inter_shape_penalty(
17682  ulong packed_shape_penalty, intel_sub_group_avc_mce_payload_t payload);
17683 intel_sub_group_avc_mce_payload_t __ovld
17684 intel_sub_group_avc_mce_set_inter_direction_penalty(
17685  uchar direction_cost, intel_sub_group_avc_mce_payload_t payload);
17686 intel_sub_group_avc_mce_payload_t __ovld
17687 intel_sub_group_avc_mce_set_motion_vector_cost_function(
17688  ulong packed_cost_center_delta, uint2 packed_cost_table,
17689  uchar cost_precision, intel_sub_group_avc_mce_payload_t payload);
17690 intel_sub_group_avc_mce_payload_t __ovld
17691 intel_sub_group_avc_mce_set_ac_only_haar(
17692  intel_sub_group_avc_mce_payload_t payload);
17693 intel_sub_group_avc_mce_payload_t __ovld
17694 intel_sub_group_avc_mce_set_source_interlaced_field_polarity(
17695  uchar src_field_polarity, intel_sub_group_avc_mce_payload_t payload);
17696 intel_sub_group_avc_mce_payload_t __ovld
17697 intel_sub_group_avc_mce_set_single_reference_interlaced_field_polarity(
17698  uchar ref_field_polarity, intel_sub_group_avc_mce_payload_t payload);
17699 intel_sub_group_avc_mce_payload_t __ovld
17700 intel_sub_group_avc_mce_set_dual_reference_interlaced_field_polarities(
17701  uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
17702  intel_sub_group_avc_mce_payload_t payload);
17703 
17704 ulong __ovld intel_sub_group_avc_mce_get_motion_vectors(
17705  intel_sub_group_avc_mce_result_t result);
17706 ushort __ovld intel_sub_group_avc_mce_get_inter_distortions(
17707  intel_sub_group_avc_mce_result_t result);
17708 ushort __ovld intel_sub_group_avc_mce_get_best_inter_distortion(
17709  intel_sub_group_avc_mce_result_t result);
17710 uchar __ovld intel_sub_group_avc_mce_get_inter_major_shape(
17711  intel_sub_group_avc_mce_result_t result);
17712 uchar __ovld intel_sub_group_avc_mce_get_inter_minor_shapes(
17713  intel_sub_group_avc_mce_result_t result);
17714 uchar __ovld intel_sub_group_avc_mce_get_inter_directions(
17715  intel_sub_group_avc_mce_result_t result);
17716 uchar __ovld intel_sub_group_avc_mce_get_inter_motion_vector_count(
17717  intel_sub_group_avc_mce_result_t result);
17718 uint __ovld intel_sub_group_avc_mce_get_inter_reference_ids(
17719  intel_sub_group_avc_mce_result_t result);
17720 uchar __ovld
17721 intel_sub_group_avc_mce_get_inter_reference_interlaced_field_polarities(
17722  uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
17723  intel_sub_group_avc_mce_result_t result);
17724 
17725 // IME built-in functions
17726 intel_sub_group_avc_ime_payload_t __ovld
17727 intel_sub_group_avc_ime_initialize(
17728  ushort2 src_coord, uchar partition_mask, uchar sad_adjustment);
17729 intel_sub_group_avc_ime_payload_t __ovld
17730 intel_sub_group_avc_ime_set_single_reference(
17731  short2 ref_offset, uchar search_window_config,
17732  intel_sub_group_avc_ime_payload_t payload);
17733 intel_sub_group_avc_ime_payload_t __ovld
17734 intel_sub_group_avc_ime_set_dual_reference(
17735  short2 fwd_ref_offset, short2 bwd_ref_offset, uchar search_window_config,
17736  intel_sub_group_avc_ime_payload_t payload);
17737 intel_sub_group_avc_ime_payload_t __ovld
17738 intel_sub_group_avc_ime_set_max_motion_vector_count(
17739  uchar max_motion_vector_count, intel_sub_group_avc_ime_payload_t payload);
17740 intel_sub_group_avc_ime_payload_t __ovld
17741 intel_sub_group_avc_ime_set_unidirectional_mix_disable(
17742  intel_sub_group_avc_ime_payload_t payload);
17743 intel_sub_group_avc_ime_payload_t __ovld
17744 intel_sub_group_avc_ime_set_early_search_termination_threshold(
17745  uchar threshold, intel_sub_group_avc_ime_payload_t payload);
17746 intel_sub_group_avc_ime_payload_t __ovld
17747 intel_sub_group_avc_ime_set_weighted_sad(
17748  uint packed_sad_weights, intel_sub_group_avc_ime_payload_t payload);
17749 
17750 __attribute__((deprecated("If you use the latest Intel driver, please use "
17751  "intel_sub_group_avc_ime_ref_window_size instead",
17752  "intel_sub_group_avc_ime_ref_window_size")))
17753 ushort2 __ovld
17754 intel_sub_group_ime_ref_window_size(uchar search_window_config, char dual_ref);
17755 ushort2 __ovld intel_sub_group_avc_ime_ref_window_size(
17756  uchar search_window_config, char dual_ref);
17757 short2 __ovld intel_sub_group_avc_ime_adjust_ref_offset(
17758  short2 ref_offset, ushort2 src_coord, ushort2 ref_window_size,
17759  ushort2 image_size);
17760 
17761 #if defined(__opencl_c_images)
17762 intel_sub_group_avc_ime_result_t __ovld
17763 intel_sub_group_avc_ime_evaluate_with_single_reference(
17764  read_only image2d_t src_image, read_only image2d_t ref_image,
17765  sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload);
17766 intel_sub_group_avc_ime_result_t __ovld
17767 intel_sub_group_avc_ime_evaluate_with_dual_reference(
17768  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17769  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17770  intel_sub_group_avc_ime_payload_t payload);
17771 intel_sub_group_avc_ime_result_single_reference_streamout_t __ovld
17772 intel_sub_group_avc_ime_evaluate_with_single_reference_streamout(
17773  read_only image2d_t src_image, read_only image2d_t ref_image,
17774  sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload);
17775 intel_sub_group_avc_ime_result_dual_reference_streamout_t __ovld
17776 intel_sub_group_avc_ime_evaluate_with_dual_reference_streamout(
17777  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17778  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17779  intel_sub_group_avc_ime_payload_t payload);
17780 intel_sub_group_avc_ime_result_t __ovld
17781 intel_sub_group_avc_ime_evaluate_with_single_reference_streamin(
17782  read_only image2d_t src_image, read_only image2d_t ref_image,
17783  sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload,
17784  intel_sub_group_avc_ime_single_reference_streamin_t streamin_components);
17785 intel_sub_group_avc_ime_result_t __ovld
17786 intel_sub_group_avc_ime_evaluate_with_dual_reference_streamin(
17787  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17788  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17789  intel_sub_group_avc_ime_payload_t payload,
17790  intel_sub_group_avc_ime_dual_reference_streamin_t streamin_components);
17791 intel_sub_group_avc_ime_result_single_reference_streamout_t __ovld
17792 intel_sub_group_avc_ime_evaluate_with_single_reference_streaminout(
17793  read_only image2d_t src_image, read_only image2d_t ref_image,
17794  sampler_t vme_media_sampler, intel_sub_group_avc_ime_payload_t payload,
17795  intel_sub_group_avc_ime_single_reference_streamin_t streamin_components);
17796 intel_sub_group_avc_ime_result_dual_reference_streamout_t __ovld
17797 intel_sub_group_avc_ime_evaluate_with_dual_reference_streaminout(
17798  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17799  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17800  intel_sub_group_avc_ime_payload_t payload,
17801  intel_sub_group_avc_ime_dual_reference_streamin_t streamin_components);
17802 #endif
17803 
17804 intel_sub_group_avc_ime_single_reference_streamin_t __ovld
17805 intel_sub_group_avc_ime_get_single_reference_streamin(
17806  intel_sub_group_avc_ime_result_single_reference_streamout_t result);
17807 intel_sub_group_avc_ime_dual_reference_streamin_t __ovld
17808 intel_sub_group_avc_ime_get_dual_reference_streamin(
17809  intel_sub_group_avc_ime_result_dual_reference_streamout_t result);
17810 intel_sub_group_avc_ime_result_t __ovld
17811 intel_sub_group_avc_ime_strip_single_reference_streamout(
17812  intel_sub_group_avc_ime_result_single_reference_streamout_t result);
17813 intel_sub_group_avc_ime_result_t __ovld
17814 intel_sub_group_avc_ime_strip_dual_reference_streamout(
17815  intel_sub_group_avc_ime_result_dual_reference_streamout_t result);
17816 
17817 uint __ovld intel_sub_group_avc_ime_get_streamout_major_shape_motion_vectors(
17818  intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17819  uchar major_shape);
17820 ushort __ovld intel_sub_group_avc_ime_get_streamout_major_shape_distortions(
17821  intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17822  uchar major_shape);
17823 uchar __ovld intel_sub_group_avc_ime_get_streamout_major_shape_reference_ids(
17824  intel_sub_group_avc_ime_result_single_reference_streamout_t result,
17825  uchar major_shape);
17826 uint __ovld intel_sub_group_avc_ime_get_streamout_major_shape_motion_vectors(
17827  intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17828  uchar major_shape, uchar direction);
17829 ushort __ovld intel_sub_group_avc_ime_get_streamout_major_shape_distortions(
17830  intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17831  uchar major_shape, uchar direction);
17832 uchar __ovld intel_sub_group_avc_ime_get_streamout_major_shape_reference_ids(
17833  intel_sub_group_avc_ime_result_dual_reference_streamout_t result,
17834  uchar major_shape, uchar direction);
17835 
17836 uchar __ovld intel_sub_group_avc_ime_get_border_reached(
17837  uchar image_select, intel_sub_group_avc_ime_result_t result);
17838 uchar __ovld intel_sub_group_avc_ime_get_truncated_search_indication(
17839  intel_sub_group_avc_ime_result_t result);
17840 uchar __ovld
17841 intel_sub_group_avc_ime_get_unidirectional_early_search_termination(
17842  intel_sub_group_avc_ime_result_t result);
17843 uint __ovld intel_sub_group_avc_ime_get_weighting_pattern_minimum_motion_vector(
17844  intel_sub_group_avc_ime_result_t result);
17845 ushort __ovld intel_sub_group_avc_ime_get_weighting_pattern_minimum_distortion(
17846  intel_sub_group_avc_ime_result_t result);
17847 
17848 // REF built-in functions
17849 intel_sub_group_avc_ref_payload_t __ovld
17850 intel_sub_group_avc_fme_initialize(
17851  ushort2 src_coord, ulong motion_vectors, uchar major_shapes,
17852  uchar minor_shapes, uchar directions, uchar pixel_resolution,
17853  uchar sad_adjustment);
17854 intel_sub_group_avc_ref_payload_t __ovld
17855 intel_sub_group_avc_bme_initialize(
17856  ushort2 src_coord, ulong motion_vectors, uchar major_shapes,
17857  uchar minor_shapes, uchar directions, uchar pixel_resolution,
17858  uchar bidirectional_weight, uchar sad_adjustment);
17859 
17860 intel_sub_group_avc_ref_payload_t __ovld
17861 intel_sub_group_avc_ref_set_bidirectional_mix_disable(
17862  intel_sub_group_avc_ref_payload_t payload);
17863 intel_sub_group_avc_ref_payload_t __ovld
17864 intel_sub_group_avc_ref_set_bilinear_filter_enable(
17865  intel_sub_group_avc_ref_payload_t payload);
17866 
17867 #if defined(__opencl_c_images)
17868 intel_sub_group_avc_ref_result_t __ovld
17869 intel_sub_group_avc_ref_evaluate_with_single_reference(
17870  read_only image2d_t src_image, read_only image2d_t ref_image,
17871  sampler_t vme_media_sampler, intel_sub_group_avc_ref_payload_t payload);
17872 intel_sub_group_avc_ref_result_t __ovld
17873 intel_sub_group_avc_ref_evaluate_with_dual_reference(
17874  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17875  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17876  intel_sub_group_avc_ref_payload_t payload);
17877 intel_sub_group_avc_ref_result_t __ovld
17878 intel_sub_group_avc_ref_evaluate_with_multi_reference(
17879  read_only image2d_t src_image, uint packed_reference_ids,
17880  sampler_t vme_media_sampler, intel_sub_group_avc_ref_payload_t payload);
17881 intel_sub_group_avc_ref_result_t __ovld
17882 intel_sub_group_avc_ref_evaluate_with_multi_reference(
17883  read_only image2d_t src_image, uint packed_reference_ids,
17884  uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
17885  intel_sub_group_avc_ref_payload_t payload);
17886 #endif //defined(__opencl_c_images)
17887 
17888 // SIC built-in functions
17889 intel_sub_group_avc_sic_payload_t __ovld
17890 intel_sub_group_avc_sic_initialize(
17891  ushort2 src_coord);
17892 intel_sub_group_avc_sic_payload_t __ovld
17893 intel_sub_group_avc_sic_configure_skc(
17894  uint skip_block_partition_type, uint skip_motion_vector_mask,
17895  ulong motion_vectors, uchar bidirectional_weight, uchar skip_sad_adjustment,
17896  intel_sub_group_avc_sic_payload_t payload);
17897 intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe(
17898  uchar luma_intra_partition_mask, uchar intra_neighbour_availability,
17899  uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel,
17900  uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels,
17901  uchar intra_sad_adjustment, intel_sub_group_avc_sic_payload_t payload);
17902 intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe(
17903  uchar luma_intra_partition_mask, uchar intra_neighbour_availability,
17904  uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel,
17905  uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels,
17906  ushort left_edge_chroma_pixels, ushort upper_left_corner_chroma_pixel,
17907  ushort upper_edge_chroma_pixels, uchar intra_sad_adjustment,
17908  intel_sub_group_avc_sic_payload_t payload);
17909 uint __ovld
17910 intel_sub_group_avc_sic_get_motion_vector_mask(
17911  uint skip_block_partition_type, uchar direction);
17912 
17913 intel_sub_group_avc_sic_payload_t __ovld
17914 intel_sub_group_avc_sic_set_intra_luma_shape_penalty(
17915  uint packed_shape_cost, intel_sub_group_avc_sic_payload_t payload);
17916 intel_sub_group_avc_sic_payload_t __ovld
17917 intel_sub_group_avc_sic_set_intra_luma_mode_cost_function(
17918  uchar luma_mode_penalty, uint luma_packed_neighbor_modes,
17919  uint luma_packed_non_dc_penalty, intel_sub_group_avc_sic_payload_t payload);
17920 intel_sub_group_avc_sic_payload_t __ovld
17921 intel_sub_group_avc_sic_set_intra_chroma_mode_cost_function(
17922  uchar chroma_mode_penalty, intel_sub_group_avc_sic_payload_t payload);
17923 
17924 intel_sub_group_avc_sic_payload_t __ovld
17925 intel_sub_group_avc_sic_set_skc_bilinear_filter_enable(
17926  intel_sub_group_avc_sic_payload_t payload);
17927 intel_sub_group_avc_sic_payload_t __ovld
17928 intel_sub_group_avc_sic_set_skc_forward_transform_enable(
17929  ulong packed_sad_coefficients, intel_sub_group_avc_sic_payload_t payload);
17930 intel_sub_group_avc_sic_payload_t __ovld
17931 intel_sub_group_avc_sic_set_block_based_raw_skip_sad(
17932  uchar block_based_skip_type,
17933  intel_sub_group_avc_sic_payload_t payload);
17934 
17935 #if defined(__opencl_c_images)
17936 intel_sub_group_avc_sic_result_t __ovld
17937 intel_sub_group_avc_sic_evaluate_ipe(
17938  read_only image2d_t src_image, sampler_t vme_media_sampler,
17939  intel_sub_group_avc_sic_payload_t payload);
17940 intel_sub_group_avc_sic_result_t __ovld
17941 intel_sub_group_avc_sic_evaluate_with_single_reference(
17942  read_only image2d_t src_image, read_only image2d_t ref_image,
17943  sampler_t vme_media_sampler, intel_sub_group_avc_sic_payload_t payload);
17944 intel_sub_group_avc_sic_result_t __ovld
17945 intel_sub_group_avc_sic_evaluate_with_dual_reference(
17946  read_only image2d_t src_image, read_only image2d_t fwd_ref_image,
17947  read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
17948  intel_sub_group_avc_sic_payload_t payload);
17949 intel_sub_group_avc_sic_result_t __ovld
17950 intel_sub_group_avc_sic_evaluate_with_multi_reference(
17951  read_only image2d_t src_image, uint packed_reference_ids,
17952  sampler_t vme_media_sampler, intel_sub_group_avc_sic_payload_t payload);
17953 intel_sub_group_avc_sic_result_t __ovld
17954 intel_sub_group_avc_sic_evaluate_with_multi_reference(
17955  read_only image2d_t src_image, uint packed_reference_ids,
17956  uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
17957  intel_sub_group_avc_sic_payload_t payload);
17958 #endif //defined(__opencl_c_images)
17959 
17960 uchar __ovld intel_sub_group_avc_sic_get_ipe_luma_shape(
17961  intel_sub_group_avc_sic_result_t result);
17962 ushort __ovld intel_sub_group_avc_sic_get_best_ipe_luma_distortion(
17963  intel_sub_group_avc_sic_result_t result);
17964 ushort __ovld intel_sub_group_avc_sic_get_best_ipe_chroma_distortion(
17965  intel_sub_group_avc_sic_result_t result);
17966 ulong __ovld intel_sub_group_avc_sic_get_packed_ipe_luma_modes(
17967  intel_sub_group_avc_sic_result_t result);
17968 uchar __ovld intel_sub_group_avc_sic_get_ipe_chroma_mode(
17969  intel_sub_group_avc_sic_result_t result);
17970 uint __ovld intel_sub_group_avc_sic_get_packed_skc_luma_count_threshold(
17971  intel_sub_group_avc_sic_result_t result);
17972 ulong __ovld intel_sub_group_avc_sic_get_packed_skc_luma_sum_threshold(
17973  intel_sub_group_avc_sic_result_t result);
17974 ushort __ovld intel_sub_group_avc_sic_get_inter_raw_sads(
17975  intel_sub_group_avc_sic_result_t result);
17976 
17977 // Wrappers
17978 intel_sub_group_avc_ime_payload_t __ovld
17979 intel_sub_group_avc_ime_set_inter_base_multi_reference_penalty(
17980  uchar reference_base_penalty, intel_sub_group_avc_ime_payload_t payload);
17981 intel_sub_group_avc_ref_payload_t __ovld
17982 intel_sub_group_avc_ref_set_inter_base_multi_reference_penalty(
17983  uchar reference_base_penalty, intel_sub_group_avc_ref_payload_t payload);
17984 intel_sub_group_avc_sic_payload_t __ovld
17985 intel_sub_group_avc_sic_set_inter_base_multi_reference_penalty(
17986  uchar reference_base_penalty, intel_sub_group_avc_sic_payload_t payload);
17987 
17988 intel_sub_group_avc_ime_payload_t __ovld
17989 intel_sub_group_avc_ime_set_inter_shape_penalty(
17990  ulong packed_shape_cost, intel_sub_group_avc_ime_payload_t payload);
17991 intel_sub_group_avc_ref_payload_t __ovld
17992 intel_sub_group_avc_ref_set_inter_shape_penalty(
17993  ulong packed_shape_cost, intel_sub_group_avc_ref_payload_t payload);
17994 intel_sub_group_avc_sic_payload_t __ovld
17995 intel_sub_group_avc_sic_set_inter_shape_penalty(
17996  ulong packed_shape_cost, intel_sub_group_avc_sic_payload_t payload);
17997 
17998 intel_sub_group_avc_ime_payload_t __ovld
17999 intel_sub_group_avc_ime_set_inter_direction_penalty(
18000  uchar direction_cost, intel_sub_group_avc_ime_payload_t payload);
18001 intel_sub_group_avc_ref_payload_t __ovld
18002 intel_sub_group_avc_ref_set_inter_direction_penalty(
18003  uchar direction_cost, intel_sub_group_avc_ref_payload_t payload);
18004 intel_sub_group_avc_sic_payload_t __ovld
18005 intel_sub_group_avc_sic_set_inter_direction_penalty(
18006  uchar direction_cost, intel_sub_group_avc_sic_payload_t payload);
18007 
18008 intel_sub_group_avc_ime_payload_t __ovld
18009 intel_sub_group_avc_ime_set_motion_vector_cost_function(
18010  ulong packed_cost_center_delta, uint2 packed_cost_table,
18011  uchar cost_precision, intel_sub_group_avc_ime_payload_t payload);
18012 intel_sub_group_avc_ref_payload_t __ovld
18013 intel_sub_group_avc_ref_set_motion_vector_cost_function(
18014  ulong packed_cost_center_delta, uint2 packed_cost_table,
18015  uchar cost_precision, intel_sub_group_avc_ref_payload_t payload);
18016 intel_sub_group_avc_sic_payload_t __ovld
18017 intel_sub_group_avc_sic_set_motion_vector_cost_function(
18018  ulong packed_cost_center_delta, uint2 packed_cost_table,
18019  uchar cost_precision, intel_sub_group_avc_sic_payload_t payload);
18020 
18021 intel_sub_group_avc_ime_payload_t __ovld
18022 intel_sub_group_avc_ime_set_source_interlaced_field_polarity(
18023  uchar src_field_polarity, intel_sub_group_avc_ime_payload_t payload);
18024 intel_sub_group_avc_ref_payload_t __ovld
18025 intel_sub_group_avc_ref_set_source_interlaced_field_polarity(
18026  uchar src_field_polarity, intel_sub_group_avc_ref_payload_t payload);
18027 intel_sub_group_avc_sic_payload_t __ovld
18028 intel_sub_group_avc_sic_set_source_interlaced_field_polarity(
18029  uchar src_field_polarity, intel_sub_group_avc_sic_payload_t payload);
18030 
18031 intel_sub_group_avc_ime_payload_t __ovld
18032 intel_sub_group_avc_ime_set_single_reference_interlaced_field_polarity(
18033  uchar ref_field_polarity, intel_sub_group_avc_ime_payload_t payload);
18034 intel_sub_group_avc_ref_payload_t __ovld
18035 intel_sub_group_avc_ref_set_single_reference_interlaced_field_polarity(
18036  uchar ref_field_polarity, intel_sub_group_avc_ref_payload_t payload);
18037 intel_sub_group_avc_sic_payload_t __ovld
18038 intel_sub_group_avc_sic_set_single_reference_interlaced_field_polarity(
18039  uchar ref_field_polarity, intel_sub_group_avc_sic_payload_t payload);
18040 intel_sub_group_avc_ime_payload_t __ovld
18041 intel_sub_group_avc_ime_set_dual_reference_interlaced_field_polarities(
18042  uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18043  intel_sub_group_avc_ime_payload_t payload);
18044 intel_sub_group_avc_ref_payload_t __ovld
18045 intel_sub_group_avc_ref_set_dual_reference_interlaced_field_polarities(
18046  uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18047  intel_sub_group_avc_ref_payload_t payload);
18048 intel_sub_group_avc_sic_payload_t __ovld
18049 intel_sub_group_avc_sic_set_dual_reference_interlaced_field_polarities(
18050  uchar fwd_ref_field_polarity, uchar bwd_ref_field_polarity,
18051  intel_sub_group_avc_sic_payload_t payload);
18052 
18053 intel_sub_group_avc_ime_payload_t __ovld
18054 intel_sub_group_avc_ime_set_ac_only_haar(
18055  intel_sub_group_avc_ime_payload_t payload);
18056 intel_sub_group_avc_ref_payload_t __ovld
18057 intel_sub_group_avc_ref_set_ac_only_haar(
18058  intel_sub_group_avc_ref_payload_t payload);
18059 intel_sub_group_avc_sic_payload_t __ovld
18060 intel_sub_group_avc_sic_set_ac_only_haar(
18061  intel_sub_group_avc_sic_payload_t payload);
18062 
18063 ulong __ovld intel_sub_group_avc_ime_get_motion_vectors(
18064  intel_sub_group_avc_ime_result_t result);
18065 ulong __ovld intel_sub_group_avc_ref_get_motion_vectors(
18066  intel_sub_group_avc_ref_result_t result);
18067 
18068 ushort __ovld intel_sub_group_avc_ime_get_inter_distortions(
18069  intel_sub_group_avc_ime_result_t result);
18070 ushort __ovld intel_sub_group_avc_ref_get_inter_distortions(
18071  intel_sub_group_avc_ref_result_t result);
18072 ushort __ovld intel_sub_group_avc_sic_get_inter_distortions(
18073  intel_sub_group_avc_sic_result_t result);
18074 
18075 ushort __ovld intel_sub_group_avc_ime_get_best_inter_distortion(
18076  intel_sub_group_avc_ime_result_t result);
18077 ushort __ovld intel_sub_group_avc_ref_get_best_inter_distortion(
18078  intel_sub_group_avc_ref_result_t result);
18079 
18080 uchar __ovld intel_sub_group_avc_ime_get_inter_major_shape(
18081  intel_sub_group_avc_ime_result_t result);
18082 uchar __ovld intel_sub_group_avc_ref_get_inter_major_shape(
18083  intel_sub_group_avc_ref_result_t result);
18084 uchar __ovld intel_sub_group_avc_ime_get_inter_minor_shapes(
18085  intel_sub_group_avc_ime_result_t result);
18086 uchar __ovld intel_sub_group_avc_ref_get_inter_minor_shapes(
18087  intel_sub_group_avc_ref_result_t result);
18088 
18089 uchar __ovld intel_sub_group_avc_ime_get_inter_directions(
18090  intel_sub_group_avc_ime_result_t result);
18091 uchar __ovld intel_sub_group_avc_ref_get_inter_directions(
18092  intel_sub_group_avc_ref_result_t result);
18093 
18094 uchar __ovld intel_sub_group_avc_ime_get_inter_motion_vector_count(
18095  intel_sub_group_avc_ime_result_t result);
18096 uchar __ovld intel_sub_group_avc_ref_get_inter_motion_vector_count(
18097  intel_sub_group_avc_ref_result_t result);
18098 
18099 uint __ovld intel_sub_group_avc_ime_get_inter_reference_ids(
18100  intel_sub_group_avc_ime_result_t result);
18101 uint __ovld intel_sub_group_avc_ref_get_inter_reference_ids(
18102  intel_sub_group_avc_ref_result_t result);
18103 
18104 uchar __ovld
18105 intel_sub_group_avc_ime_get_inter_reference_interlaced_field_polarities(
18106  uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
18107  intel_sub_group_avc_ime_result_t result);
18108 uchar __ovld
18109 intel_sub_group_avc_ref_get_inter_reference_interlaced_field_polarities(
18110  uint packed_reference_ids, uint packed_reference_parameter_field_polarities,
18111  intel_sub_group_avc_ref_result_t result);
18112 
18113 // Type conversion functions
18114 intel_sub_group_avc_mce_payload_t __ovld
18115 intel_sub_group_avc_ime_convert_to_mce_payload(
18116  intel_sub_group_avc_ime_payload_t payload);
18117 intel_sub_group_avc_ime_payload_t __ovld
18118 intel_sub_group_avc_mce_convert_to_ime_payload(
18119  intel_sub_group_avc_mce_payload_t payload);
18120 intel_sub_group_avc_mce_payload_t __ovld
18121 intel_sub_group_avc_ref_convert_to_mce_payload(
18122  intel_sub_group_avc_ref_payload_t payload);
18123 intel_sub_group_avc_ref_payload_t __ovld
18124 intel_sub_group_avc_mce_convert_to_ref_payload(
18125  intel_sub_group_avc_mce_payload_t payload);
18126 intel_sub_group_avc_mce_payload_t __ovld
18127 intel_sub_group_avc_sic_convert_to_mce_payload(
18128  intel_sub_group_avc_sic_payload_t payload);
18129 intel_sub_group_avc_sic_payload_t __ovld
18130 intel_sub_group_avc_mce_convert_to_sic_payload(
18131  intel_sub_group_avc_mce_payload_t payload);
18132 
18133 intel_sub_group_avc_mce_result_t __ovld
18134 intel_sub_group_avc_ime_convert_to_mce_result(
18135  intel_sub_group_avc_ime_result_t result);
18136 intel_sub_group_avc_ime_result_t __ovld
18137 intel_sub_group_avc_mce_convert_to_ime_result(
18138  intel_sub_group_avc_mce_result_t result);
18139 intel_sub_group_avc_mce_result_t __ovld
18140 intel_sub_group_avc_ref_convert_to_mce_result(
18141  intel_sub_group_avc_ref_result_t result);
18142 intel_sub_group_avc_ref_result_t __ovld
18143 intel_sub_group_avc_mce_convert_to_ref_result(
18144  intel_sub_group_avc_mce_result_t result);
18145 intel_sub_group_avc_mce_result_t __ovld
18146 intel_sub_group_avc_sic_convert_to_mce_result(
18147  intel_sub_group_avc_sic_result_t result);
18148 intel_sub_group_avc_sic_result_t __ovld
18149 intel_sub_group_avc_mce_convert_to_sic_result(
18150  intel_sub_group_avc_mce_result_t result);
18151 #pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end
18152 #endif // cl_intel_device_side_avc_motion_estimation
18153 
18154 #ifdef cl_amd_media_ops
18155 uint __ovld amd_bitalign(uint, uint, uint);
18156 uint2 __ovld amd_bitalign(uint2, uint2, uint2);
18157 uint3 __ovld amd_bitalign(uint3, uint3, uint3);
18158 uint4 __ovld amd_bitalign(uint4, uint4, uint4);
18159 uint8 __ovld amd_bitalign(uint8, uint8, uint8);
18160 uint16 __ovld amd_bitalign(uint16, uint16, uint16);
18161 
18162 uint __ovld amd_bytealign(uint, uint, uint);
18163 uint2 __ovld amd_bytealign(uint2, uint2, uint2);
18164 uint3 __ovld amd_bytealign(uint3, uint3, uint3);
18165 uint4 __ovld amd_bytealign(uint4, uint4, uint4);
18166 uint8 __ovld amd_bytealign(uint8, uint8, uint8);
18167 uint16 __ovld amd_bytealign(uint16, uint16, uint16);
18168 
18169 uint __ovld amd_lerp(uint, uint, uint);
18170 uint2 __ovld amd_lerp(uint2, uint2, uint2);
18171 uint3 __ovld amd_lerp(uint3, uint3, uint3);
18172 uint4 __ovld amd_lerp(uint4, uint4, uint4);
18173 uint8 __ovld amd_lerp(uint8, uint8, uint8);
18174 uint16 __ovld amd_lerp(uint16, uint16, uint16);
18175 
18176 uint __ovld amd_pack(float4 v);
18177 
18178 uint __ovld amd_sad4(uint4, uint4, uint);
18179 
18180 uint __ovld amd_sadhi(uint, uint, uint);
18181 uint2 __ovld amd_sadhi(uint2, uint2, uint2);
18182 uint3 __ovld amd_sadhi(uint3, uint3, uint3);
18183 uint4 __ovld amd_sadhi(uint4, uint4, uint4);
18184 uint8 __ovld amd_sadhi(uint8, uint8, uint8);
18185 uint16 __ovld amd_sadhi(uint16, uint16, uint16);
18186 
18187 uint __ovld amd_sad(uint, uint, uint);
18188 uint2 __ovld amd_sad(uint2, uint2, uint2);
18189 uint3 __ovld amd_sad(uint3, uint3, uint3);
18190 uint4 __ovld amd_sad(uint4, uint4, uint4);
18191 uint8 __ovld amd_sad(uint8, uint8, uint8);
18192 uint16 __ovld amd_sad(uint16, uint16, uint16);
18193 
18194 float __ovld amd_unpack0(uint);
18195 float2 __ovld amd_unpack0(uint2);
18196 float3 __ovld amd_unpack0(uint3);
18197 float4 __ovld amd_unpack0(uint4);
18198 float8 __ovld amd_unpack0(uint8);
18199 float16 __ovld amd_unpack0(uint16);
18200 
18201 float __ovld amd_unpack1(uint);
18202 float2 __ovld amd_unpack1(uint2);
18203 float3 __ovld amd_unpack1(uint3);
18204 float4 __ovld amd_unpack1(uint4);
18205 float8 __ovld amd_unpack1(uint8);
18206 float16 __ovld amd_unpack1(uint16);
18207 
18208 float __ovld amd_unpack2(uint);
18209 float2 __ovld amd_unpack2(uint2);
18210 float3 __ovld amd_unpack2(uint3);
18211 float4 __ovld amd_unpack2(uint4);
18212 float8 __ovld amd_unpack2(uint8);
18213 float16 __ovld amd_unpack2(uint16);
18214 
18215 float __ovld amd_unpack3(uint);
18216 float2 __ovld amd_unpack3(uint2);
18217 float3 __ovld amd_unpack3(uint3);
18218 float4 __ovld amd_unpack3(uint4);
18219 float8 __ovld amd_unpack3(uint8);
18220 float16 __ovld amd_unpack3(uint16);
18221 #endif // cl_amd_media_ops
18222 
18223 #ifdef cl_amd_media_ops2
18224 int __ovld amd_bfe(int src0, uint src1, uint src2);
18225 int2 __ovld amd_bfe(int2 src0, uint2 src1, uint2 src2);
18226 int3 __ovld amd_bfe(int3 src0, uint3 src1, uint3 src2);
18227 int4 __ovld amd_bfe(int4 src0, uint4 src1, uint4 src2);
18228 int8 __ovld amd_bfe(int8 src0, uint8 src1, uint8 src2);
18229 int16 __ovld amd_bfe(int16 src0, uint16 src1, uint16 src2);
18230 
18231 uint __ovld amd_bfe(uint src0, uint src1, uint src2);
18232 uint2 __ovld amd_bfe(uint2 src0, uint2 src1, uint2 src2);
18233 uint3 __ovld amd_bfe(uint3 src0, uint3 src1, uint3 src2);
18234 uint4 __ovld amd_bfe(uint4 src0, uint4 src1, uint4 src2);
18235 uint8 __ovld amd_bfe(uint8 src0, uint8 src1, uint8 src2);
18236 uint16 __ovld amd_bfe(uint16 src0, uint16 src1, uint16 src2);
18237 
18238 uint __ovld amd_bfm(uint src0, uint src1);
18239 uint2 __ovld amd_bfm(uint2 src0, uint2 src1);
18240 uint3 __ovld amd_bfm(uint3 src0, uint3 src1);
18241 uint4 __ovld amd_bfm(uint4 src0, uint4 src1);
18242 uint8 __ovld amd_bfm(uint8 src0, uint8 src1);
18243 uint16 __ovld amd_bfm(uint16 src0, uint16 src1);
18244 
18245 float __ovld amd_max3(float src0, float src1, float src2);
18246 float2 __ovld amd_max3(float2 src0, float2 src1, float2 src2);
18247 float3 __ovld amd_max3(float3 src0, float3 src1, float3 src2);
18248 float4 __ovld amd_max3(float4 src0, float4 src1, float4 src2);
18249 float8 __ovld amd_max3(float8 src0, float8 src1, float8 src2);
18250 float16 __ovld amd_max3(float16 src0, float16 src1, float16 src2);
18251 
18252 int __ovld amd_max3(int src0, int src1, int src2);
18253 int2 __ovld amd_max3(int2 src0, int2 src1, int2 src2);
18254 int3 __ovld amd_max3(int3 src0, int3 src1, int3 src2);
18255 int4 __ovld amd_max3(int4 src0, int4 src1, int4 src2);
18256 int8 __ovld amd_max3(int8 src0, int8 src1, int8 src2);
18257 int16 __ovld amd_max3(int16 src0, int16 src1, int16 src2);
18258 
18259 uint __ovld amd_max3(uint src0, uint src1, uint src2);
18260 uint2 __ovld amd_max3(uint2 src0, uint2 src1, uint2 src2);
18261 uint3 __ovld amd_max3(uint3 src0, uint3 src1, uint3 src2);
18262 uint4 __ovld amd_max3(uint4 src0, uint4 src1, uint4 src2);
18263 uint8 __ovld amd_max3(uint8 src0, uint8 src1, uint8 src2);
18264 uint16 __ovld amd_max3(uint16 src0, uint16 src1, uint16 src2);
18265 
18266 float __ovld amd_median3(float src0, float src1, float src2);
18267 float2 __ovld amd_median3(float2 src0, float2 src1, float2 src2);
18268 float3 __ovld amd_median3(float3 src0, float3 src1, float3 src2);
18269 float4 __ovld amd_median3(float4 src0, float4 src1, float4 src2);
18270 float8 __ovld amd_median3(float8 src0, float8 src1, float8 src2);
18271 float16 __ovld amd_median3(float16 src0, float16 src1, float16 src2);
18272 
18273 int __ovld amd_median3(int src0, int src1, int src2);
18274 int2 __ovld amd_median3(int2 src0, int2 src1, int2 src2);
18275 int3 __ovld amd_median3(int3 src0, int3 src1, int3 src2);
18276 int4 __ovld amd_median3(int4 src0, int4 src1, int4 src2);
18277 int8 __ovld amd_median3(int8 src0, int8 src1, int8 src2);
18278 int16 __ovld amd_median3(int16 src0, int16 src1, int16 src2);
18279 
18280 uint __ovld amd_median3(uint src0, uint src1, uint src2);
18281 uint2 __ovld amd_median3(uint2 src0, uint2 src1, uint2 src2);
18282 uint3 __ovld amd_median3(uint3 src0, uint3 src1, uint3 src2);
18283 uint4 __ovld amd_median3(uint4 src0, uint4 src1, uint4 src2);
18284 uint8 __ovld amd_median3(uint8 src0, uint8 src1, uint8 src2);
18285 uint16 __ovld amd_median3(uint16 src0, uint16 src1, uint16 src2);
18286 
18287 float __ovld amd_min3(float src0, float src1, float src);
18288 float2 __ovld amd_min3(float2 src0, float2 src1, float2 src);
18289 float3 __ovld amd_min3(float3 src0, float3 src1, float3 src);
18290 float4 __ovld amd_min3(float4 src0, float4 src1, float4 src);
18291 float8 __ovld amd_min3(float8 src0, float8 src1, float8 src);
18292 float16 __ovld amd_min3(float16 src0, float16 src1, float16 src);
18293 
18294 int __ovld amd_min3(int src0, int src1, int src2);
18295 int2 __ovld amd_min3(int2 src0, int2 src1, int2 src2);
18296 int3 __ovld amd_min3(int3 src0, int3 src1, int3 src2);
18297 int4 __ovld amd_min3(int4 src0, int4 src1, int4 src2);
18298 int8 __ovld amd_min3(int8 src0, int8 src1, int8 src2);
18299 int16 __ovld amd_min3(int16 src0, int16 src1, int16 src2);
18300 
18301 uint __ovld amd_min3(uint src0, uint src1, uint src2);
18302 uint2 __ovld amd_min3(uint2 src0, uint2 src1, uint2 src2);
18303 uint3 __ovld amd_min3(uint3 src0, uint3 src1, uint3 src2);
18304 uint4 __ovld amd_min3(uint4 src0, uint4 src1, uint4 src2);
18305 uint8 __ovld amd_min3(uint8 src0, uint8 src1, uint8 src2);
18306 uint16 __ovld amd_min3(uint16 src0, uint16 src1, uint16 src2);
18307 
18308 ulong __ovld amd_mqsad(ulong src0, uint src1, ulong src2);
18309 ulong2 __ovld amd_mqsad(ulong2 src0, uint2 src1, ulong2 src2);
18310 ulong3 __ovld amd_mqsad(ulong3 src0, uint3 src1, ulong3 src2);
18311 ulong4 __ovld amd_mqsad(ulong4 src0, uint4 src1, ulong4 src2);
18312 ulong8 __ovld amd_mqsad(ulong8 src0, uint8 src1, ulong8 src2);
18313 ulong16 __ovld amd_mqsad(ulong16 src0, uint16 src1, ulong16 src2);
18314 
18315 ulong __ovld amd_qsad(ulong src0, uint src1, ulong src2);
18316 ulong2 __ovld amd_qsad(ulong2 src0, uint2 src1, ulong2 src2);
18317 ulong3 __ovld amd_qsad(ulong3 src0, uint3 src1, ulong3 src2);
18318 ulong4 __ovld amd_qsad(ulong4 src0, uint4 src1, ulong4 src2);
18319 ulong8 __ovld amd_qsad(ulong8 src0, uint8 src1, ulong8 src2);
18320 ulong16 __ovld amd_qsad(ulong16 src0, uint16 src1, ulong16 src2);
18321 
18322 uint __ovld amd_msad(uint src0, uint src1, uint src2);
18323 uint2 __ovld amd_msad(uint2 src0, uint2 src1, uint2 src2);
18324 uint3 __ovld amd_msad(uint3 src0, uint3 src1, uint3 src2);
18325 uint4 __ovld amd_msad(uint4 src0, uint4 src1, uint4 src2);
18326 uint8 __ovld amd_msad(uint8 src0, uint8 src1, uint8 src2);
18327 uint16 __ovld amd_msad(uint16 src0, uint16 src1, uint16 src2);
18328 
18329 uint __ovld amd_sadd(uint src0, uint src1, uint src2);
18330 uint2 __ovld amd_sadd(uint2 src0, uint2 src1, uint2 src2);
18331 uint3 __ovld amd_sadd(uint3 src0, uint3 src1, uint3 src2);
18332 uint4 __ovld amd_sadd(uint4 src0, uint4 src1, uint4 src2);
18333 uint8 __ovld amd_sadd(uint8 src0, uint8 src1, uint8 src2);
18334 uint16 __ovld amd_sadd(uint16 src0, uint16 src1, uint16 src2);
18335 
18336 uint __ovld amd_sadw(uint src0, uint src1, uint src2);
18337 uint2 __ovld amd_sadw(uint2 src0, uint2 src1, uint2 src2);
18338 uint3 __ovld amd_sadw(uint3 src0, uint3 src1, uint3 src2);
18339 uint4 __ovld amd_sadw(uint4 src0, uint4 src1, uint4 src2);
18340 uint8 __ovld amd_sadw(uint8 src0, uint8 src1, uint8 src2);
18341 uint16 __ovld amd_sadw(uint16 src0, uint16 src1, uint16 src2);
18342 #endif // cl_amd_media_ops2
18343 
18344 #if defined(cl_arm_integer_dot_product_int8)
18345 uint __ovld arm_dot(uchar4, uchar4);
18346 int __ovld arm_dot(char4, char4);
18347 #endif // defined(cl_arm_integer_dot_product_int8)
18348 
18349 #if defined(cl_arm_integer_dot_product_accumulate_int8)
18350 uint __ovld arm_dot_acc(uchar4, uchar4, uint);
18351 int __ovld arm_dot_acc(char4, char4, int);
18352 #endif // defined(cl_arm_integer_dot_product_accumulate_int8)
18353 
18354 #if defined(cl_arm_integer_dot_product_accumulate_int16)
18355 uint __ovld arm_dot_acc(ushort2, ushort2, uint);
18356 int __ovld arm_dot_acc(short2, short2, int);
18357 #endif // defined(cl_arm_integer_dot_product_accumulate_int16)
18358 
18359 #if defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
18360 uint __ovld arm_dot_acc_sat(uchar4, uchar4, uint);
18361 int __ovld arm_dot_acc_sat(char4, char4, int);
18362 #endif // defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
18363 
18364 // Disable any extensions we may have enabled previously.
18365 #pragma OPENCL EXTENSION all : disable
18366 
18367 #undef __opencl_c_named_address_space_builtins
18368 
18369 #undef __cnfn
18370 #undef __ovld
18371 #endif //_OPENCL_H_
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
__PTRDIFF_TYPE__ ptrdiff_t
do v
Definition: arm_acle.h:83
vector< half, 4 > half4
vector< half, 2 > half2
vector< uint, 2 > uint2
vector< int, 3 > int3
vector< float, 4 > float4
vector< int, 4 > int4
vector< double, 3 > double3
vector< float, 2 > float2
vector< float, 3 > float3
vector< uint, 3 > uint3
vector< double, 4 > double4
vector< double, 2 > double2
vector< int, 2 > int2
vector< uint, 4 > uint4
vector< half, 3 > half3
__INTPTR_TYPE__ intptr_t
A signed integer type with the property that any valid pointer to void can be converted to this type,...
memory_order
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
int clk_profiling_info
uint cl_mem_fence_flags
unsigned char uchar
An unsigned 8-bit integer.
unsigned long ulong
An unsigned 64-bit integer.
unsigned int uint
An unsigned 32-bit integer.
memory_scope
unsigned short ushort
An unsigned 16-bit integer.
int4 __ovld __cnfn convert_int4_rte(char4)
void __ovld vstore16(char16, size_t, __global char *)
float __ovld __cnfn erf(float)
Error function encountered in integrating the normal distribution.
uint8 __ovld __cnfn convert_uint8_rte(char8)
long __ovld __cnfn convert_long_rtp(char)
long2 __ovld __cnfn convert_long2_sat_rtp(char2)
char2 __ovld __cnfn convert_char2_rtp(char2)
float __ovld __cnfn asinh(float)
Inverse hyperbolic sine.
void __ovld vstorea_half2_rte(float2, size_t, __global half *)
short8 __ovld __cnfn convert_short8_sat_rte(char8)
uchar8 __ovld __cnfn convert_uchar8_rtp(char8)
ulong16 __ovld __cnfn convert_ulong16_sat(char16)
uchar __ovld __cnfn convert_uchar(char)
ulong8 __ovld __cnfn convert_ulong8_rte(char8)
float __ovld __cnfn half_tan(float)
Compute tangent.
void __ovld vstore2(char2, size_t, __global char *)
int16 __ovld __cnfn convert_int16_sat_rtn(char16)
int3 __ovld __cnfn convert_int3_rtn(char3)
float __ovld __cnfn nan(uint)
Returns a quiet NaN.
void __ovld vstorea_half4(float4, size_t, __global half *)
int __ovld __cnfn isequal(float, float)
intn isequal (floatn x, floatn y) Returns the component-wise compare of x == y.
short4 __ovld __cnfn convert_short4_rtp(char4)
int __ovld atomic_or(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
ulong2 __ovld __cnfn convert_ulong2_rtn(char2)
void __ovld vstore_half4(float4, size_t, __global half *)
float __ovld __cnfn atan(float)
Arc tangent function.
float __ovld __cnfn sin(float)
Compute sine.
int __ovld atomic_fetch_sub_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
ushort8 __ovld __cnfn convert_ushort8_rtn(char8)
uint16 __ovld __cnfn convert_uint16_sat_rtp(char16)
char __ovld __cnfn mad_hi(char, char, char)
Returns mul_hi(a, b) + c.
int3 __ovld __cnfn convert_int3_rtp(char3)
void __ovld vstorea_half2_rtz(float2, size_t, __global half *)
char3 __ovld __cnfn convert_char3_sat(char3)
char4 __ovld __cnfn convert_char4_sat(char4)
long __ovld __cnfn convert_long_rtz(char)
ushort8 __ovld __cnfn convert_ushort8_sat_rtn(char8)
float __ovld __cnfn native_tan(float)
Compute tangent over an implementation-defined range.
uint __ovld __cnfn convert_uint_sat_rtn(char)
uint16 __ovld __cnfn convert_uint16_sat_rtn(char16)
uchar8 __ovld __cnfn convert_uchar8(char8)
char __ovld __cnfn sub_sat(char, char)
Returns x - y and saturates the result.
float8 __ovld __purefn vload_half8(size_t, const __constant half *)
uchar2 __ovld __cnfn convert_uchar2_sat(char2)
void __ovld vstore_half8_rtz(float8, size_t, __global half *)
int3 __ovld __cnfn convert_int3(char3)
short __ovld __cnfn convert_short_sat_rtn(char)
uchar2 __ovld __cnfn convert_uchar2_rte(char2)
float __ovld fract(float, __global float *)
Returns fmin(x - floor (x), 0x1.fffffep-1f ).
uchar16 __ovld __cnfn convert_uchar16_sat_rtn(char16)
float __ovld __cnfn pown(float, int)
Compute x to the power y, where y is an integer.
float __ovld __cnfn dot(float, float)
Compute dot product.
ulong4 __ovld __cnfn convert_ulong4_rtp(char4)
ushort3 __ovld __cnfn convert_ushort3_rtz(char3)
void __ovld vstorea_half16_rtz(float16, size_t, __global half *)
int16 __ovld __cnfn convert_int16_sat(char16)
int __ovld __cnfn get_image_width(read_only image1d_t)
Return the image width in pixels.
float __ovld __cnfn native_sin(float)
Compute sine over an implementation-defined range.
char4 __ovld __cnfn convert_char4_rte(char4)
int __ovld atomic_max(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn erfc(float)
Complementary error function.
int2 __ovld __cnfn convert_int2_sat_rtz(char2)
char __ovld __cnfn clz(char)
Returns the number of leading 0-bits in x, starting at the most significant bit position.
float __ovld __cnfn convert_float_rte(char)
ulong __ovld __cnfn convert_ulong_rtz(char)
float2 __ovld __cnfn convert_float2_rtp(char2)
short4 __ovld __cnfn convert_short4_sat_rtn(char4)
short2 __ovld __cnfn convert_short2_rtz(char2)
float __ovld __cnfn fmax(float, float)
Returns y if x < y, otherwise it returns x.
char8 __ovld __cnfn convert_char8_sat_rte(char8)
ushort8 __ovld __cnfn convert_ushort8_sat_rtp(char8)
void __ovld write_imagei(write_only image2d_t, int2, int4)
void __ovld vstorea_half3_rtn(float3, size_t, __global half *)
void __ovld vstore_half2_rte(float2, size_t, __global half *)
int3 __ovld __cnfn convert_int3_rtz(char3)
ushort8 __ovld __cnfn convert_ushort8_sat_rtz(char8)
char8 __ovld __cnfn convert_char8_sat_rtn(char8)
int2 __ovld __cnfn convert_int2_sat(char2)
size_t __ovld __cnfn get_global_offset(uint)
get_global_offset returns the offset values specified in global_work_offset argument to clEnqueueNDRa...
void __ovld atomic_flag_clear_explicit(volatile __global atomic_flag *, memory_order, memory_scope)
float __ovld __cnfn fast_length(float)
Returns the length of vector p computed as: half_sqrt(p.x2 + p.y2 + ...)
ushort3 __ovld __cnfn convert_ushort3_rtn(char3)
float4 __ovld __cnfn convert_float4(char4)
int __ovld __cnfn isnotequal(float, float)
Returns the component-wise compare of x != y.
char __ovld __cnfn add_sat(char, char)
Returns x + y and saturates the result.
ulong8 __ovld __cnfn convert_ulong8_rtp(char8)
uint3 __ovld __cnfn convert_uint3_rtn(char3)
ushort3 __ovld __cnfn convert_ushort3_sat_rtn(char3)
long2 __ovld __cnfn convert_long2_sat(char2)
ushort3 __ovld __cnfn convert_ushort3_rte(char3)
ulong16 __ovld __cnfn convert_ulong16_sat_rtp(char16)
size_t __ovld __cnfn get_local_id(uint)
Returns the unique local work-item ID i.e.
float __ovld __cnfn native_log(float)
Compute natural logarithm over an implementationdefined range.
char8 __ovld __cnfn convert_char8(char8)
char __ovld __cnfn convert_char_sat(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtn(char3)
ushort __ovld __cnfn convert_ushort_rtn(char)
float __ovld __cnfn native_recip(float)
Compute reciprocal over an implementation-defined range.
uint4 __ovld __cnfn convert_uint4_rtz(char4)
float16 __ovld __cnfn convert_float16_rtn(char16)
short3 __ovld __cnfn convert_short3_rtp(char3)
int __ovld __cnfn convert_int_sat_rtz(char)
float __ovld __cnfn asinpi(float)
Compute asin (x) / PI.
int16 __ovld __cnfn convert_int16(char16)
uint __ovld __cnfn convert_uint_rtz(char)
float __ovld __cnfn round(float)
Return the integral value nearest to x rounding halfway cases away from zero, regardless of the curre...
int __ovld atomic_xchg(volatile __global int *, int)
Swaps the old value stored at location p with new value given by val.
int __ovld __cnfn ilogb(float)
Return the exponent as an integer value.
int __ovld atomic_fetch_or_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
ushort8 __ovld __cnfn convert_ushort8_rte(char8)
long3 __ovld __cnfn convert_long3_sat_rtz(char3)
short16 __ovld __cnfn convert_short16_sat_rte(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtn(char8)
void __ovld vstore_half_rte(float, size_t, __global half *)
void __ovld vstorea_half3_rtp(float3, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3_sat(char3)
int8 __ovld __cnfn convert_int8_sat(char8)
float3 __ovld __cnfn convert_float3_rtp(char3)
int16 __ovld __cnfn convert_int16_rtp(char16)
ulong4 __ovld __cnfn convert_ulong4_sat_rtn(char4)
float __ovld __cnfn half_recip(float)
Compute reciprocal.
uchar2 __ovld __cnfn convert_uchar2_sat_rtp(char2)
ulong2 __ovld __cnfn convert_ulong2_sat_rtz(char2)
int4 __ovld __cnfn convert_int4_sat_rtz(char4)
void __ovld vstore_half2(float2, size_t, __global half *)
The floatn value given by data is converted to a halfn value using the appropriate rounding mode.
ushort8 __ovld __cnfn convert_ushort8_sat(char8)
void __ovld vstore_half16_rtz(float16, size_t, __global half *)
float __ovld __cnfn cosh(float)
Compute hyperbolic cosine.
uint3 __ovld __cnfn convert_uint3_sat(char3)
void __ovld vstore_half2_rtn(float2, size_t, __global half *)
ulong4 __ovld __cnfn convert_ulong4_sat(char4)
int16 __ovld __cnfn convert_int16_sat_rtp(char16)
char16 __ovld __cnfn convert_char16_sat_rtz(char16)
uint __ovld __cnfn convert_uint_sat(char)
ushort4 __ovld __cnfn convert_ushort4_sat_rtn(char4)
float3 __ovld __cnfn convert_float3_rtn(char3)
long16 __ovld __cnfn convert_long16(char16)
short16 __ovld __cnfn convert_short16_rtn(char16)
float __ovld __cnfn cbrt(float)
Compute cube-root.
float4 __ovld __purefn vload_half4(size_t, const __constant half *)
short2 __ovld __cnfn convert_short2_rtp(char2)
uchar8 __ovld __cnfn convert_uchar8_rtz(char8)
float __ovld __cnfn half_powr(float, float)
Compute x to the power y, where x is >= 0.
int __ovld __cnfn convert_int_rtz(char)
char16 __ovld __cnfn convert_char16_rtz(char16)
float __ovld __cnfn pow(float, float)
Compute x to the power y.
ushort16 __ovld __cnfn convert_ushort16_rte(char16)
int2 __ovld __cnfn convert_int2_sat_rtp(char2)
float __ovld __cnfn atanpi(float)
Compute atan (x) / PI.
float __ovld __cnfn fdim(float, float)
x - y if x > y, +0 if x is less than or equal to y.
char __ovld __cnfn convert_char_sat_rtn(char)
short2 __ovld __cnfn convert_short2(char2)
short2 __ovld __cnfn convert_short2_sat_rtp(char2)
int __ovld __cnfn convert_int_rtn(char)
ushort __ovld __cnfn convert_ushort_sat_rtz(char)
long4 __ovld __cnfn convert_long4(char4)
short16 __ovld __cnfn convert_short16_sat(char16)
uchar3 __ovld __cnfn convert_uchar3_rtn(char3)
short8 __ovld __cnfn convert_short8(char8)
ulong2 __ovld __cnfn convert_ulong2_sat(char2)
ulong3 __ovld __cnfn convert_ulong3_sat_rte(char3)
short4 __ovld __cnfn convert_short4_sat_rte(char4)
float __ovld __cnfn fmin(float, float)
Returns y if y < x, otherwise it returns x.
ulong8 __ovld __cnfn convert_ulong8_sat(char8)
void __ovld vstorea_half4_rtz(float4, size_t, __global half *)
char2 __ovld __cnfn convert_char2_sat_rtp(char2)
uint __ovld __cnfn convert_uint_sat_rte(char)
uint8 __ovld __cnfn convert_uint8_sat_rte(char8)
int16 __ovld __cnfn convert_int16_rte(char16)
char __ovld __cnfn ctz(char)
Returns the count of trailing 0-bits in x.
char16 __ovld __cnfn convert_char16_sat_rtn(char16)
int __ovld atomic_fetch_and_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
ulong __ovld __cnfn convert_ulong_sat_rte(char)
char __ovld __cnfn hadd(char, char)
Returns (x + y) >> 1.
float __ovld __cnfn convert_float_rtp(char)
ulong2 __ovld __cnfn convert_ulong2_sat_rtp(char2)
uint3 __ovld __cnfn convert_uint3_rtp(char3)
float16 __ovld __cnfn convert_float16_rtp(char16)
float2 __ovld __purefn vload_half2(size_t, const __constant half *)
Read sizeof (halfn) bytes of data from address (p + (offset * n)).
short4 __ovld __cnfn convert_short4_sat_rtz(char4)
int3 __ovld __cnfn convert_int3_sat_rtz(char3)
ushort3 __ovld __cnfn convert_ushort3_sat_rte(char3)
ulong __ovld __cnfn convert_ulong_sat(char)
long3 __ovld __cnfn convert_long3_sat(char3)
ulong4 __ovld __cnfn convert_ulong4_sat_rtz(char4)
long8 __ovld __cnfn convert_long8_sat_rte(char8)
int4 __ovld __cnfn convert_int4(char4)
ushort8 __ovld __cnfn convert_ushort8_rtz(char8)
short __ovld __cnfn convert_short_sat_rtp(char)
ulong4 __ovld __cnfn convert_ulong4_rtn(char4)
long16 __ovld __cnfn convert_long16_rtn(char16)
uint __ovld __cnfn convert_uint_rtn(char)
uchar __ovld __cnfn abs_diff(char, char)
Returns | x - y | without modulo overflow.
float __ovld __cnfn mix(float, float, float)
Returns the linear blend of x & y implemented as: x + (y - x) * a a must be a value in the range 0....
float __ovld sincos(float, __global float *)
Compute sine and cosine of x.
void __ovld vstorea_half4_rtp(float4, size_t, __global half *)
void __ovld vstore_half(float, size_t, __global half *)
The float value given by data is first converted to a half value using the appropriate rounding mode.
float __ovld __cnfn half_exp2(float)
Compute the base- 2 exponential of x.
short2 __ovld __cnfn convert_short2_rte(char2)
ulong3 __ovld __cnfn convert_ulong3_rtp(char3)
ulong16 __ovld __cnfn convert_ulong16_rtz(char16)
int2 __ovld __cnfn convert_int2_rte(char2)
float __ovld __cnfn step(float, float)
Returns 0.0 if x < edge, otherwise it returns 1.0.
float8 __ovld __cnfn convert_float8_rte(char8)
uchar3 __ovld __cnfn convert_uchar3(char3)
float __ovld __cnfn convert_float_rtz(char)
float __ovld __cnfn log2(float)
Compute a base 2 logarithm.
char4 __ovld __cnfn convert_char4_sat_rte(char4)
float __ovld __cnfn exp10(float)
Exponential base 10 function.
char __ovld __cnfn convert_char(char)
float __ovld __cnfn half_exp(float)
Compute the base- e exponential of x.
ushort16 __ovld __cnfn convert_ushort16_sat_rte(char16)
int __ovld __cnfn isinf(float)
Test for infinity value (+ve or -ve) .
ushort3 __ovld __cnfn convert_ushort3_sat_rtz(char3)
float __ovld __cnfn logb(float)
Compute the exponent of x, which is the integral part of logr | x |.
int __ovld __cnfn get_image_height(read_only image2d_t)
Return the image height in pixels.
short __ovld __cnfn convert_short_rtp(char)
float __ovld __cnfn ldexp(float, int)
Multiply x by 2 to the power n.
int2 __ovld __cnfn get_image_dim(read_only image2d_t)
Return the 2D image width and height as an int2 type.
uchar __ovld __cnfn convert_uchar_rte(char)
int __ovld atomic_sub(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn expm1(float)
Compute e^x- 1.0.
float3 __ovld __cnfn convert_float3_rtz(char3)
long __ovld __cnfn convert_long_rte(char)
float __ovld __cnfn native_exp2(float)
Compute the base- 2 exponential of x over an implementation-defined range.
short8 __ovld __cnfn convert_short8_rtz(char8)
float __ovld __cnfn sign(float)
Returns 1.0 if x > 0, -0.0 if x = -0.0, +0.0 if x = +0.0, or -1.0 if x < 0.
float __ovld __cnfn radians(float)
Converts degrees to radians, i.e.
char __ovld __cnfn mul_hi(char, char)
Computes x * y and returns the high half of the product of x and y.
size_t __ovld get_global_linear_id(void)
char __ovld __cnfn convert_char_sat_rtz(char)
void __ovld vstorea_half2(float2, size_t, __global half *)
The floatn value given by data is converted to a halfn value using the appropriate rounding mode.
int __ovld __cnfn convert_int_rtp(char)
long3 __ovld __cnfn convert_long3_sat_rtp(char3)
void __ovld vstorea_half8_rtz(float8, size_t, __global half *)
uchar __ovld __cnfn convert_uchar_rtp(char)
char __ovld __cnfn max(char, char)
Returns y if x < y, otherwise it returns x.
size_t __ovld __cnfn get_num_groups(uint)
Returns the number of work-groups that will execute a kernel for dimension identified by dimindx.
ulong4 __ovld __cnfn convert_ulong4(char4)
uint4 __ovld __cnfn convert_uint4_sat(char4)
ulong2 __ovld __cnfn convert_ulong2(char2)
long2 __ovld __cnfn convert_long2_rtn(char2)
long16 __ovld __cnfn convert_long16_rtp(char16)
void __ovld vstorea_half8_rtn(float8, size_t, __global half *)
int __ovld atomic_fetch_max_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
ushort16 __ovld __cnfn convert_ushort16_sat_rtn(char16)
long3 __ovld __cnfn convert_long3_sat_rtn(char3)
float __ovld __cnfn degrees(float)
Converts radians to degrees, i.e.
uint2 __ovld __cnfn convert_uint2_rtp(char2)
uint3 __ovld __cnfn convert_uint3(char3)
void __ovld vstorea_half4_rtn(float4, size_t, __global half *)
ushort4 __ovld __cnfn convert_ushort4_sat(char4)
float __ovld __cnfn atanh(float)
Hyperbolic arc tangent.
short __ovld __cnfn convert_short_rtz(char)
uint8 __ovld __cnfn convert_uint8_sat_rtn(char8)
uchar __ovld __cnfn convert_uchar_sat(char)
float8 __ovld __cnfn convert_float8_rtn(char8)
float __ovld __cnfn log(float)
Compute natural logarithm.
short4 __ovld __cnfn convert_short4_sat(char4)
float4 __ovld __cnfn convert_float4_rte(char4)
float __ovld __cnfn asin(float)
Arc sine function.
float __ovld __cnfn nextafter(float, float)
Computes the next representable single-precision floating-point value following x in the direction of...
uchar4 __ovld __cnfn convert_uchar4_rtz(char4)
char4 __ovld __cnfn convert_char4_rtp(char4)
uchar16 __ovld __cnfn convert_uchar16_sat(char16)
long8 __ovld __cnfn convert_long8_sat_rtp(char8)
float __ovld __cnfn native_exp(float)
Compute the base- e exponential of x over an implementation-defined range.
short3 __ovld __cnfn convert_short3_rte(char3)
uint3 __ovld __cnfn convert_uint3_sat_rtz(char3)
char3 __ovld __cnfn convert_char3_sat_rtp(char3)
int __ovld __cnfn all(char)
Returns 1 if the most significant bit in all components of x is set; otherwise returns 0.
ushort16 __ovld __cnfn convert_ushort16(char16)
float __ovld __cnfn exp(float)
Compute the base e exponential function of x.
float __ovld frexp(float, __global int *)
Extract mantissa and exponent from x.
void __ovld vstore_half_rtp(float, size_t, __global half *)
long4 __ovld __cnfn convert_long4_sat_rtp(char4)
float __ovld __cnfn hypot(float, float)
Compute the value of the square root of x^2 + y^2 without undue overflow or underflow.
uint8 __ovld __cnfn convert_uint8_rtn(char8)
float8 __ovld __cnfn convert_float8(char8)
uchar __ovld __cnfn abs(char)
Returns | x |.
float __ovld __cnfn half_log2(float)
Compute a base 2 logarithm.
float16 __ovld __cnfn convert_float16(char16)
char8 __ovld __cnfn convert_char8_rtp(char8)
short3 __ovld __cnfn convert_short3_rtz(char3)
char16 __ovld __cnfn convert_char16_sat_rte(char16)
void __ovld vstore_half16(float16, size_t, __global half *)
long16 __ovld __cnfn convert_long16_rte(char16)
int __ovld atomic_dec(volatile __global int *)
Read the 32-bit value (referred to as old) stored at location pointed by p.
uchar3 __ovld __cnfn convert_uchar3_sat(char3)
uchar16 __ovld __cnfn convert_uchar16_sat_rte(char16)
char __ovld __cnfn rhadd(char, char)
Returns (x + y + 1) >> 1.
void __ovld vstorea_half16_rtn(float16, size_t, __global half *)
long8 __ovld __cnfn convert_long8_rtz(char8)
ushort16 __ovld __cnfn convert_ushort16_rtn(char16)
ulong2 __ovld __cnfn convert_ulong2_sat_rtn(char2)
int __ovld __cnfn isless(float, float)
Returns the component-wise compare of x < y.
float __ovld __cnfn length(float)
Return the length of vector p, i.e., sqrt(p.x2 + p.y 2 + ...)
char4 __ovld __cnfn convert_char4(char4)
int2 __ovld __cnfn convert_int2_rtz(char2)
short16 __ovld __cnfn convert_short16_sat_rtn(char16)
ulong __ovld __cnfn convert_ulong_rtn(char)
ulong16 __ovld __cnfn convert_ulong16_rtp(char16)
char3 __ovld __cnfn convert_char3_sat_rtn(char3)
short __ovld __cnfn convert_short_rte(char)
short3 __ovld __cnfn convert_short3_sat(char3)
long8 __ovld __cnfn convert_long8_sat(char8)
uint __ovld __cnfn convert_uint_sat_rtp(char)
char2 __ovld __cnfn convert_char2_sat_rte(char2)
float __ovld __cnfn half_log(float)
Compute natural logarithm.
char4 __ovld __cnfn convert_char4_sat_rtp(char4)
long8 __ovld __cnfn convert_long8_rtp(char8)
uint __ovld __cnfn convert_uint_rtp(char)
ulong __ovld __cnfn convert_ulong(char)
short4 __ovld __cnfn convert_short4_rtz(char4)
uchar3 __ovld __cnfn convert_uchar3_sat_rtn(char3)
ulong8 __ovld __cnfn convert_ulong8_rtn(char8)
char __ovld __cnfn mad_sat(char, char, char)
Returns a * b + c and saturates the result.
void __ovld vstorea_half2_rtp(float2, size_t, __global half *)
float __ovld __cnfn copysign(float, float)
Returns x with its sign changed to match the sign of y.
size_t __ovld get_local_linear_id(void)
short2 __ovld __cnfn convert_short2_sat(char2)
char3 __ovld __cnfn convert_char3_rtz(char3)
uint2 __ovld __cnfn convert_uint2_sat_rtz(char2)
uchar4 __ovld __cnfn convert_uchar4_sat_rte(char4)
float __ovld __cnfn minmag(float, float)
Returns x if | x | < | y |, y if | y | < | x |, otherwise fmin(x, y).
int8 __ovld __cnfn convert_int8(char8)
ulong16 __ovld __cnfn convert_ulong16_rte(char16)
char16 __ovld __cnfn convert_char16_rtp(char16)
float __ovld __cnfn floor(float)
Round to integral value using the round to -ve infinity rounding mode.
float __ovld __cnfn native_powr(float, float)
Compute x to the power y, where x is >= 0.
int16 __ovld __cnfn convert_int16_sat_rte(char16)
long16 __ovld __cnfn convert_long16_sat(char16)
uchar __ovld __cnfn convert_uchar_rtz(char)
char3 __ovld __cnfn convert_char3_rtp(char3)
void __ovld vstorea_half16_rte(float16, size_t, __global half *)
int8 __ovld __cnfn convert_int8_sat_rtp(char8)
ulong2 __ovld __cnfn convert_ulong2_rte(char2)
char __ovld __cnfn convert_char_rtz(char)
short16 __ovld __cnfn convert_short16_sat_rtp(char16)
size_t __ovld __cnfn get_image_array_size(read_only image1d_array_t)
Return the image array size.
float4 __ovld __cnfn convert_float4_rtz(char4)
void __ovld vstorea_half3_rte(float3, size_t, __global half *)
uint4 __ovld __cnfn convert_uint4_rtn(char4)
float __ovld __cnfn convert_float_rtn(char)
float __ovld __cnfn tan(float)
Compute tangent.
int __ovld atomic_and(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn rsqrt(float)
Compute inverse square root.
float __ovld __cnfn exp2(float)
Exponential base 2 function.
float2 __ovld __cnfn convert_float2_rte(char2)
void __ovld atomic_store_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
float __ovld __cnfn smoothstep(float, float, float)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
void __ovld vstore_half4_rte(float4, size_t, __global half *)
ushort4 __ovld __cnfn convert_ushort4_rtp(char4)
char3 __ovld __cnfn convert_char3_rtn(char3)
char3 __ovld __cnfn convert_char3_sat_rte(char3)
void __ovld wait_group_events(int, event_t *)
Wait for events that identify the async_work_group_copy operations to complete.
int __ovld __cnfn convert_int_sat_rte(char)
short8 __ovld __cnfn convert_short8_sat_rtz(char8)
uchar8 __ovld __cnfn convert_uchar8_sat_rtp(char8)
uchar2 __ovld __cnfn convert_uchar2(char2)
uint4 __ovld __cnfn convert_uint4_rtp(char4)
ushort4 __ovld __cnfn convert_ushort4_rtz(char4)
char __ovld __cnfn select(char, char, char)
For each component of a vector type, result[i] = if MSB of c[i] is set ? b[i] : a[i].
void __ovld vstore_half8_rtp(float8, size_t, __global half *)
size_t __ovld __cnfn get_global_id(uint)
Returns the unique global work-item ID value for dimension identified by dimindx.
ushort __ovld __cnfn convert_ushort_sat(char)
int3 __ovld __cnfn convert_int3_sat_rtp(char3)
uint8 __ovld __cnfn convert_uint8_sat_rtp(char8)
ulong8 __ovld __cnfn convert_ulong8_rtz(char8)
char4 __ovld __cnfn convert_char4_sat_rtn(char4)
int4 __ovld __purefn read_imagei(read_only image2d_t, sampler_t, int2)
float __ovld __cnfn half_exp10(float)
Compute the base- 10 exponential of x.
void __ovld vstore_half16_rte(float16, size_t, __global half *)
short __ovld __cnfn convert_short_sat_rtz(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtp(char3)
uchar3 __ovld __cnfn convert_uchar3_sat_rte(char3)
ulong16 __ovld __cnfn convert_ulong16_rtn(char16)
char2 __ovld __cnfn convert_char2_rte(char2)
uchar4 __ovld __cnfn convert_uchar4_sat_rtn(char4)
char2 __ovld __cnfn shuffle(char2, uchar2)
The shuffle and shuffle2 built-in functions construct a permutation of elements from one or two input...
char4 __ovld __cnfn convert_char4_sat_rtz(char4)
float __ovld __cnfn native_cos(float)
Compute cosine over an implementation-defined range.
short3 __ovld __cnfn convert_short3_sat_rtp(char3)
ushort2 __ovld __cnfn convert_ushort2_sat(char2)
float8 __ovld __cnfn convert_float8_rtz(char8)
short3 __ovld __cnfn convert_short3_sat_rte(char3)
char8 __ovld __cnfn convert_char8_sat_rtz(char8)
float8 __ovld __purefn vloada_half8(size_t, const __constant half *)
int __ovld atomic_inc(volatile __global int *)
Read the 32-bit value (referred to as old) stored at location pointed by p.
char __ovld __cnfn popcount(char)
uchar2 __ovld __cnfn convert_uchar2_rtp(char2)
size_t __ovld get_enqueued_local_size(uint)
float __ovld __cnfn maxmag(float, float)
Returns x if | x | > | y |, y if | y | > | x |, otherwise fmax(x, y).
ushort16 __ovld __cnfn convert_ushort16_sat_rtz(char16)
uint4 __ovld __cnfn convert_uint4_sat_rte(char4)
short16 __ovld __cnfn convert_short16_sat_rtz(char16)
float16 __ovld __purefn vload_half16(size_t, const __constant half *)
uchar3 __ovld __cnfn convert_uchar3_rtp(char3)
ushort4 __ovld __cnfn convert_ushort4_sat_rtz(char4)
float __ovld __cnfn sinh(float)
Compute hyperbolic sine.
uint3 __ovld __cnfn convert_uint3_rtz(char3)
uint8 __ovld __cnfn convert_uint8_sat(char8)
uchar2 __ovld __cnfn convert_uchar2_sat_rtn(char2)
int __ovld __cnfn isgreaterequal(float, float)
Returns the component-wise compare of x >= y.
void __ovld vstore_half8(float8, size_t, __global half *)
float3 __ovld __purefn vloada_half3(size_t, const __constant half *)
ushort2 __ovld __cnfn convert_ushort2_rtz(char2)
int __ovld __cnfn isfinite(float)
Test for finite value.
char __ovld __cnfn rotate(char, char)
For each element in v, the bits are shifted left by the number of bits given by the corresponding ele...
void __ovld vstore_half3_rtn(float3, size_t, __global half *)
float __ovld __cnfn native_rsqrt(float)
Compute inverse square root over an implementationdefined range.
float3 __ovld __cnfn convert_float3(char3)
int4 __ovld __cnfn convert_int4_sat_rte(char4)
char8 __ovld __cnfn convert_char8_rtz(char8)
void __ovld vstore_half8_rte(float8, size_t, __global half *)
short4 __ovld __cnfn convert_short4_sat_rtp(char4)
int2 __ovld __cnfn convert_int2_rtp(char2)
float __ovld __cnfn fabs(float)
Compute absolute value of a floating-point number.
float __ovld __cnfn fma(float, float, float)
Returns the correctly rounded floating-point representation of the sum of c with the infinitely preci...
long4 __ovld __cnfn convert_long4_sat_rtn(char4)
int16 __ovld __cnfn convert_int16_sat_rtz(char16)
int __ovld atomic_add(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
uchar4 __ovld __cnfn convert_uchar4_sat(char4)
ushort __ovld __cnfn convert_ushort_rtz(char)
short8 __ovld __cnfn convert_short8_rtp(char8)
long4 __ovld __cnfn convert_long4_rtn(char4)
int4 __ovld __cnfn convert_int4_sat_rtn(char4)
char __ovld __cnfn clamp(char, char, char)
Returns min(max(x, minval), maxval).
long __ovld __cnfn convert_long(char)
short8 __ovld __cnfn convert_short8_rte(char8)
char16 __ovld __cnfn convert_char16_rte(char16)
int __ovld __cnfn mad24(int, int, int)
Multiply two 24-bit integer values x and y and add the 32-bit integer result to the 32-bit integer z.
int3 __ovld __cnfn convert_int3_sat_rte(char3)
void __ovld vstorea_half8(float8, size_t, __global half *)
float __ovld __cnfn cospi(float)
Compute cos (PI * x).
float __ovld __cnfn fast_normalize(float)
Returns a vector in the same direction as p but with a length of 1.
ushort2 __ovld __cnfn convert_ushort2_sat_rtz(char2)
short4 __ovld __cnfn convert_short4_rtn(char4)
float2 __ovld __cnfn convert_float2(char2)
void __ovld write_imagef(write_only image2d_t, int2, float4)
Write color value to location specified by coordinate (coord.x, coord.y) in the 2D image object speci...
long2 __ovld __cnfn convert_long2_rtz(char2)
char __ovld __cnfn convert_char_sat_rtp(char)
uint16 __ovld __cnfn convert_uint16_rtz(char16)
short3 __ovld __cnfn convert_short3_sat_rtn(char3)
uchar16 __ovld __cnfn convert_uchar16(char16)
uint3 __ovld __cnfn convert_uint3_rte(char3)
uint16 __ovld __cnfn convert_uint16_sat_rte(char16)
long3 __ovld __cnfn convert_long3_rtp(char3)
int __ovld __cnfn isnormal(float)
Test for a normal value.
ushort2 __ovld __cnfn convert_ushort2_rtn(char2)
char8 __ovld __cnfn convert_char8_sat(char8)
uint16 __ovld __cnfn convert_uint16_rtn(char16)
long8 __ovld __cnfn convert_long8_sat_rtn(char8)
void __ovld vstore_half3(float3, size_t, __global half *)
uchar8 __ovld __cnfn convert_uchar8_sat_rtn(char8)
uchar8 __ovld __cnfn convert_uchar8_rte(char8)
uint4 __ovld __cnfn convert_uint4_sat_rtz(char4)
int16 __ovld __cnfn convert_int16_rtn(char16)
void __ovld vstorea_half3(float3, size_t, __global half *)
int4 __ovld __cnfn convert_int4_rtz(char4)
float __ovld __cnfn distance(float, float)
Returns the distance between p0 and p1.
uint2 __ovld __cnfn convert_uint2_rte(char2)
int __ovld __cnfn isordered(float, float)
Test if arguments are ordered.
void __ovld vstorea_half8_rte(float8, size_t, __global half *)
ulong16 __ovld __cnfn convert_ulong16(char16)
float __ovld __purefn vload_half(size_t, const __constant half *)
Read sizeof (half) bytes of data from address (p + offset).
char __ovld __cnfn convert_char_rtp(char)
uchar8 __ovld __cnfn convert_uchar8_sat_rtz(char8)
ulong3 __ovld __cnfn convert_ulong3(char3)
char3 __ovld __cnfn convert_char3(char3)
float __ovld __cnfn cos(float)
Compute cosine.
long __ovld __cnfn convert_long_sat_rtz(char)
long2 __ovld __cnfn convert_long2_sat_rtz(char2)
ulong4 __ovld __cnfn convert_ulong4_sat_rte(char4)
char2 __ovld __cnfn convert_char2_rtn(char2)
short2 __ovld __cnfn convert_short2_sat_rtz(char2)
short8 __ovld __cnfn convert_short8_sat_rtn(char8)
uint2 __ovld __cnfn convert_uint2_sat_rtn(char2)
void __ovld write_imageui(write_only image2d_t, int2, uint4)
char __ovld __cnfn min(char, char)
Returns y if y < x, otherwise it returns x.
uchar3 __ovld __cnfn convert_uchar3_rtz(char3)
bool __ovld atomic_compare_exchange_strong_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope)
uint3 __ovld __cnfn convert_uint3_sat_rtn(char3)
char __ovld __cnfn bitselect(char, char, char)
Each bit of the result is the corresponding bit of a if the corresponding bit of c is 0.
uchar4 __ovld __cnfn convert_uchar4_rtn(char4)
float3 __ovld __purefn vload_half3(size_t, const __constant half *)
uint4 __ovld __cnfn convert_uint4_sat_rtn(char4)
int8 __ovld __cnfn convert_int8_sat_rte(char8)
ulong3 __ovld __cnfn convert_ulong3_sat(char3)
float __ovld __cnfn normalize(float)
Returns a vector in the same direction as p but with a length of 1.
ushort3 __ovld __cnfn convert_ushort3_rtp(char3)
float4 __ovld __purefn read_imagef(read_only image2d_t, sampler_t, int2)
Use the coordinate (coord.xy) to do an element lookup in the 2D image object specified by image.
float3 __ovld __cnfn convert_float3_rte(char3)
uchar __ovld __cnfn convert_uchar_rtn(char)
void __ovld vstore8(char8, size_t, __global char *)
long4 __ovld __cnfn convert_long4_sat_rte(char4)
float __ovld __cnfn ceil(float)
Round to integral value using the round to positive infinity rounding mode.
int3 __ovld __cnfn convert_int3_sat_rtn(char3)
long __ovld __cnfn convert_long_rtn(char)
uchar8 __ovld __cnfn convert_uchar8_sat_rte(char8)
long2 __ovld __cnfn convert_long2(char2)
ulong16 __ovld __cnfn convert_ulong16_sat_rte(char16)
float __ovld __cnfn log1p(float)
Compute a base e logarithm of (1.0 + x).
long __ovld __cnfn convert_long_sat(char)
short __ovld __cnfn convert_short_sat_rte(char)
float __ovld __cnfn native_log10(float)
Compute a base 10 logarithm over an implementationdefined range.
ulong16 __ovld __cnfn convert_ulong16_sat_rtz(char16)
ushort __ovld __cnfn convert_ushort_sat_rte(char)
short2 __ovld __cnfn convert_short2_sat_rte(char2)
void __ovld vstore_half16_rtp(float16, size_t, __global half *)
uint8 __ovld __cnfn convert_uint8(char8)
float __ovld __cnfn half_divide(float, float)
Compute x / y.
float __ovld modf(float, __global float *)
Decompose a floating-point number.
void __ovld vstore3(char3, size_t, __global char *)
uint __ovld __cnfn get_work_dim(void)
Returns the number of dimensions in use.
bool __ovld atomic_flag_test_and_set_explicit(volatile __global atomic_flag *, memory_order, memory_scope)
long2 __ovld __cnfn convert_long2_sat_rtn(char2)
int2 __ovld __cnfn convert_int2_rtn(char2)
float __ovld __cnfn fmod(float, float)
Modulus.
long8 __ovld __cnfn convert_long8_rte(char8)
char16 __ovld __cnfn convert_char16_sat_rtp(char16)
uchar __ovld __cnfn convert_uchar_sat_rte(char)
uchar4 __ovld __cnfn convert_uchar4(char4)
uchar8 __ovld __cnfn convert_uchar8_rtn(char8)
void __ovld vstore_half4_rtz(float4, size_t, __global half *)
ushort8 __ovld __cnfn convert_ushort8_rtp(char8)
float4 __ovld __cnfn convert_float4_rtp(char4)
uint2 __ovld __cnfn convert_uint2_sat_rtp(char2)
long8 __ovld __cnfn convert_long8_rtn(char8)
char2 __ovld __cnfn convert_char2_rtz(char2)
ulong4 __ovld __cnfn convert_ulong4_rtz(char4)
void __ovld vstorea_half3_rtz(float3, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3_sat_rtp(char3)
long16 __ovld __cnfn convert_long16_sat_rtp(char16)
uchar __ovld __cnfn convert_uchar_sat_rtn(char)
ushort4 __ovld __cnfn convert_ushort4_sat_rtp(char4)
uchar __ovld __cnfn convert_uchar_sat_rtz(char)
void __ovld vstore_half4_rtp(float4, size_t, __global half *)
float __ovld __cnfn tanh(float)
Compute hyperbolic tangent.
long4 __ovld __cnfn convert_long4_rtp(char4)
int __ovld atomic_min(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
void __ovld vstore_half8_rtn(float8, size_t, __global half *)
ushort3 __ovld __cnfn convert_ushort3(char3)
int __ovld atomic_xor(volatile __global int *, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
long2 __ovld __cnfn convert_long2_rtp(char2)
size_t __ovld __cnfn get_group_id(uint)
get_group_id returns the work-group ID which is a number from 0 .
char4 __ovld __cnfn convert_char4_rtz(char4)
void __ovld vstore_half_rtz(float, size_t, __global half *)
uchar4 __ovld __cnfn convert_uchar4_rtp(char4)
int __ovld __cnfn convert_int_sat_rtn(char)
float __ovld __cnfn sqrt(float)
Compute square root.
uchar16 __ovld __cnfn convert_uchar16_rtz(char16)
char2 __ovld __cnfn convert_char2(char2)
void __ovld vstore_half2_rtz(float2, size_t, __global half *)
char2 __ovld __purefn vload2(size_t, const __constant char *)
Use generic type gentype to indicate the built-in data types char, uchar, short, ushort,...
long4 __ovld __cnfn convert_long4_rtz(char4)
float __ovld __cnfn powr(float, float)
Compute x to the power y, where x is >= 0.
char __ovld __cnfn convert_char_rte(char)
int __ovld __cnfn islessgreater(float, float)
Returns the component-wise compare of (x < y) || (x > y) .
ushort __ovld __cnfn convert_ushort(char)
uint8 __ovld __cnfn convert_uint8_rtp(char8)
long16 __ovld __cnfn convert_long16_rtz(char16)
float __ovld __cnfn acosh(float)
Inverse hyperbolic cosine.
ushort8 __ovld __cnfn convert_ushort8_sat_rte(char8)
short16 __ovld __cnfn convert_short16_rtp(char16)
long4 __ovld __cnfn convert_long4_sat(char4)
long4 __ovld __cnfn convert_long4_rte(char4)
short __ovld __cnfn upsample(char, uchar)
result[i] = ((short)hi[i] << 8) | lo[i] result[i] = ((ushort)hi[i] << 8) | lo[i]
int __ovld atomic_fetch_xor_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
int __ovld __cnfn get_image_depth(read_only image3d_t)
Return the image depth in pixels.
float __ovld __cnfn half_sqrt(float)
Compute square root.
void __ovld vstore_half16_rtn(float16, size_t, __global half *)
char8 __ovld __cnfn convert_char8_rtn(char8)
short3 __ovld __cnfn convert_short3(char3)
int8 __ovld __cnfn convert_int8_sat_rtn(char8)
char3 __ovld __cnfn convert_char3_sat_rtz(char3)
ulong8 __ovld __cnfn convert_ulong8(char8)
float __ovld __cnfn native_divide(float, float)
Compute x / y over an implementation-defined range.
float __ovld __cnfn tgamma(float)
Compute the gamma function.
uchar3 __ovld __cnfn convert_uchar3_sat_rtz(char3)
long3 __ovld __cnfn convert_long3_rte(char3)
char8 __ovld __cnfn convert_char8_sat_rtp(char8)
char __ovld __cnfn convert_char_rtn(char)
long3 __ovld __cnfn convert_long3_sat_rte(char3)
char __ovld __cnfn convert_char_sat_rte(char)
ulong16 __ovld __cnfn convert_ulong16_sat_rtn(char16)
uint2 __ovld __cnfn convert_uint2_rtz(char2)
long __ovld __cnfn convert_long_sat_rte(char)
int2 __ovld __cnfn convert_int2(char2)
float __ovld __cnfn trunc(float)
Round to integral value using the round to zero rounding mode.
int __ovld __cnfn isnan(float)
Test for a NaN.
int __ovld atomic_exchange_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
#define __ovld
Definition: opencl-c.h:35
int __ovld __cnfn any(char)
Returns 1 if the most significant bit in any component of x is set; otherwise returns 0.
short3 __ovld __cnfn convert_short3_rtn(char3)
int2 __ovld __cnfn convert_int2_sat_rtn(char2)
void __ovld write_mem_fence(cl_mem_fence_flags)
Write memory barrier that orders only stores.
short __ovld __cnfn convert_short_rtn(char)
ulong2 __ovld __cnfn convert_ulong2_rtz(char2)
uint2 __ovld __cnfn convert_uint2_sat(char2)
int4 __ovld __cnfn convert_int4_sat_rtp(char4)
uchar16 __ovld __cnfn convert_uchar16_sat_rtp(char16)
short3 __ovld __cnfn convert_short3_sat_rtz(char3)
uint2 __ovld __cnfn convert_uint2_rtn(char2)
int __ovld __cnfn convert_int_rte(char)
void __ovld atomic_work_item_fence(cl_mem_fence_flags, memory_order, memory_scope)
int8 __ovld __cnfn convert_int8_rte(char8)
uchar __ovld __cnfn convert_uchar_sat_rtp(char)
ulong3 __ovld __cnfn convert_ulong3_sat_rtz(char3)
float __ovld __cnfn tanpi(float)
Compute tan (PI * x).
ushort2 __ovld __cnfn convert_ushort2_sat_rtp(char2)
uchar2 __ovld __cnfn convert_uchar2_rtz(char2)
int __ovld __cnfn convert_int(char)
ushort16 __ovld __cnfn convert_ushort16_rtp(char16)
int __ovld __cnfn isgreater(float, float)
Returns the component-wise compare of x > y.
ulong4 __ovld __cnfn convert_ulong4_sat_rtp(char4)
int4 __ovld __cnfn convert_int4_rtp(char4)
float __ovld __cnfn native_sqrt(float)
Compute square root over an implementation-defined range.
void __ovld vstore_half3_rtz(float3, size_t, __global half *)
float __ovld __cnfn acospi(float)
Compute acos (x) / PI.
ulong __ovld __cnfn convert_ulong_sat_rtp(char)
void __ovld prefetch(const __global char *, size_t)
Prefetch num_elements * sizeof(gentype) bytes into the global cache.
short2 __ovld __cnfn convert_short2_rtn(char2)
size_t __ovld __cnfn get_global_size(uint)
Returns the number of global work-items specified for dimension identified by dimindx.
event_t __ovld async_work_group_copy(__local char *, const __global char *, size_t, event_t)
event_t async_work_group_copy ( __global gentype *dst, const __local gentype *src,...
int __ovld atomic_load_explicit(volatile __global atomic_int *, memory_order, memory_scope)
int16 __ovld __cnfn convert_int16_rtz(char16)
ulong __ovld __cnfn convert_ulong_sat_rtz(char)
int __ovld __cnfn islessequal(float, float)
Returns the component-wise compare of x <= y.
long8 __ovld __cnfn convert_long8(char8)
uchar3 __ovld __cnfn convert_uchar3_rte(char3)
int __ovld atomic_fetch_add_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
long __ovld __cnfn convert_long_sat_rtn(char)
uchar2 __ovld __cnfn convert_uchar2_sat_rte(char2)
ushort16 __ovld __cnfn convert_ushort16_sat_rtp(char16)
ushort16 __ovld __cnfn convert_ushort16_rtz(char16)
ushort2 __ovld __cnfn convert_ushort2_sat_rtn(char2)
char2 __ovld __cnfn shuffle2(char2, char2, uchar2)
int8 __ovld __cnfn convert_int8_sat_rtz(char8)
float4 __ovld __purefn vloada_half4(size_t, const __constant half *)
event_t __ovld async_work_group_strided_copy(__local char *, const __global char *, size_t, size_t, event_t)
Perform an async gather of num_elements gentype elements from src to dst.
long16 __ovld __cnfn convert_long16_sat_rte(char16)
uchar16 __ovld __cnfn convert_uchar16_rtp(char16)
float2 __ovld __purefn vloada_half2(size_t, const __constant half *)
For n = 1, 2, 4, 8 and 16 read sizeof (halfn) bytes of data from address (p + (offset * n)).
uchar2 __ovld __cnfn convert_uchar2_rtn(char2)
int __ovld __cnfn signbit(float)
Test for sign bit.
short16 __ovld __cnfn convert_short16_rte(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtp(char8)
long8 __ovld __cnfn convert_long8_sat_rtz(char8)
char16 __ovld __purefn vload16(size_t, const __constant char *)
short8 __ovld __cnfn convert_short8_sat(char8)
float __ovld __cnfn half_log10(float)
Compute a base 10 logarithm.
float2 __ovld __cnfn convert_float2_rtn(char2)
float __ovld __cnfn log10(float)
Compute a base 10 logarithm.
void __ovld vstorea_half2_rtn(float2, size_t, __global half *)
char8 __ovld __purefn vload8(size_t, const __constant char *)
ulong3 __ovld __cnfn convert_ulong3_rtn(char3)
#define __cnfn
Definition: opencl-c.h:40
char4 __ovld __cnfn convert_char4_rtn(char4)
int __ovld atomic_cmpxchg(volatile __global int *, int, int)
Read the 32-bit value (referred to as old) stored at location pointed by p.
float __ovld __cnfn native_exp10(float)
Compute the base- 10 exponential of x over an implementation-defined range.
int3 __ovld __cnfn convert_int3_rte(char3)
int2 __ovld __cnfn convert_int2_sat_rte(char2)
long4 __ovld __cnfn convert_long4_sat_rtz(char4)
float __ovld __cnfn fast_distance(float, float)
Returns fast_length(p0 - p1).
ulong __ovld __cnfn convert_ulong_rte(char)
float16 __ovld __cnfn convert_float16_rtz(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rtz(char8)
uint __ovld __cnfn convert_uint_rte(char)
size_t __ovld __cnfn get_local_size(uint)
Returns the number of local work-items specified in dimension identified by dimindx.
float __ovld __cnfn lgamma(float)
Log gamma function.
uchar4 __ovld __cnfn convert_uchar4_sat_rtz(char4)
long3 __ovld __cnfn convert_long3(char3)
short8 __ovld __cnfn convert_short8_sat_rtp(char8)
uint16 __ovld __cnfn convert_uint16(char16)
float __ovld __cnfn atan2(float, float)
Arc tangent of y / x.
short16 __ovld __cnfn convert_short16(char16)
long __ovld __cnfn convert_long_sat_rtp(char)
long3 __ovld __cnfn convert_long3_rtz(char3)
void __ovld vstore_half4_rtn(float4, size_t, __global half *)
char16 __ovld __cnfn convert_char16_sat(char16)
short4 __ovld __cnfn convert_short4_rte(char4)
void __ovld __conv barrier(cl_mem_fence_flags)
All work-items in a work-group executing the kernel on a processor must execute this function before ...
void __ovld vstore_half3_rtp(float3, size_t, __global half *)
float __ovld __cnfn convert_float(char)
int4 __ovld __cnfn convert_int4_sat(char4)
long16 __ovld __cnfn convert_long16_sat_rtz(char16)
uchar16 __ovld __cnfn convert_uchar16_rte(char16)
bool __ovld atomic_compare_exchange_weak_explicit(volatile __global atomic_int *, __global int *, int, memory_order, memory_order, memory_scope)
int8 __ovld __cnfn convert_int8_rtp(char8)
uint16 __ovld __cnfn convert_uint16_rtp(char16)
int __ovld __cnfn isunordered(float, float)
Test if arguments are unordered.
float __ovld __cnfn half_sin(float)
Compute sine.
ushort __ovld __cnfn convert_ushort_rte(char)
long2 __ovld __cnfn convert_long2_sat_rte(char2)
long16 __ovld __cnfn convert_long16_sat_rtn(char16)
ulong2 __ovld __cnfn convert_ulong2_sat_rte(char2)
uchar16 __ovld __cnfn convert_uchar16_sat_rtz(char16)
uchar4 __ovld __cnfn convert_uchar4_sat_rtp(char4)
ulong4 __ovld __cnfn convert_ulong4_rte(char4)
int __ovld __cnfn convert_int_sat_rtp(char)
ulong __ovld __cnfn convert_ulong_rtp(char)
ushort2 __ovld __cnfn convert_ushort2_rtp(char2)
uint16 __ovld __cnfn convert_uint16_sat(char16)
void __ovld vstorea_half16(float16, size_t, __global half *)
int __ovld atomic_fetch_min_explicit(volatile __global atomic_int *, int, memory_order, memory_scope)
void __ovld vstorea_half4_rte(float4, size_t, __global half *)
float __ovld __cnfn sinpi(float)
Compute sin (PI * x).
uchar8 __ovld __cnfn convert_uchar8_sat(char8)
ushort2 __ovld __cnfn convert_ushort2_rte(char2)
uint4 __ovld __purefn read_imageui(read_only image2d_t, sampler_t, int2)
char16 __ovld __cnfn convert_char16(char16)
#define __conv
Definition: opencl-c.h:36
float16 __ovld __cnfn convert_float16_rte(char16)
char2 __ovld __cnfn convert_char2_sat_rtz(char2)
uint __ovld __cnfn convert_uint(char)
float __ovld __cnfn remainder(float, float)
Compute the value r such that r = x - n*y, where n is the integer nearest the exact value of x/y.
int8 __ovld __cnfn convert_int8_rtn(char8)
int4 __ovld __cnfn convert_int4_rtn(char4)
float8 __ovld __cnfn convert_float8_rtp(char8)
float4 __ovld __cnfn cross(float4, float4)
Returns the cross product of p0.xyz and p1.xyz.
float4 __ovld __cnfn convert_float4_rtn(char4)
ushort4 __ovld __cnfn convert_ushort4_rte(char4)
int __ovld __cnfn get_image_channel_data_type(read_only image1d_t)
Return the channel data type.
uint3 __ovld __cnfn convert_uint3_sat_rtp(char3)
uint4 __ovld __cnfn convert_uint4(char4)
ushort2 __ovld __cnfn convert_ushort2_sat_rte(char2)
float __ovld __cnfn atan2pi(float, float)
Compute atan2 (y, x) / PI.
short __ovld __cnfn convert_short_sat(char)
uint2 __ovld __cnfn convert_uint2_sat_rte(char2)
ushort __ovld __cnfn convert_ushort_sat_rtn(char)
void __ovld vstore_half_rtn(float, size_t, __global half *)
void __ovld mem_fence(cl_mem_fence_flags)
Orders loads and stores of a work-item executing a kernel.
uint16 __ovld __cnfn convert_uint16_sat_rtz(char16)
ushort4 __ovld __cnfn convert_ushort4_rtn(char4)
uint4 __ovld __cnfn convert_uint4_sat_rtp(char4)
int __ovld __cnfn get_image_channel_order(read_only image1d_t)
Return the image channel order.
void __ovld vstore4(char4, size_t, __global char *)
uchar4 __ovld __cnfn convert_uchar4_rte(char4)
ushort2 __ovld __cnfn convert_ushort2(char2)
int __ovld __cnfn mul24(int, int)
Multiply two 24-bit integer values x and y.
float __ovld __cnfn native_log2(float)
Compute a base 2 logarithm over an implementationdefined range.
uint __ovld __cnfn convert_uint_sat_rtz(char)
void __ovld vstorea_half16_rtp(float16, size_t, __global half *)
uchar2 __ovld __cnfn convert_uchar2_sat_rtz(char2)
uint8 __ovld __cnfn convert_uint8_rtz(char8)
ushort4 __ovld __cnfn convert_ushort4(char4)
float __ovld lgamma_r(float, __global int *)
char16 __ovld __cnfn convert_char16_rtn(char16)
ulong8 __ovld __cnfn convert_ulong8_sat_rte(char8)
uint3 __ovld __cnfn convert_uint3_sat_rte(char3)
uint2 __ovld __cnfn convert_uint2(char2)
uint8 __ovld __cnfn convert_uint8_sat_rtz(char8)
uint16 __ovld __cnfn convert_uint16_rte(char16)
short2 __ovld __cnfn convert_short2_sat_rtn(char2)
char8 __ovld __cnfn convert_char8_rte(char8)
float2 __ovld __cnfn convert_float2_rtz(char2)
float __ovld __cnfn half_cos(float)
Compute cosine.
char3 __ovld __cnfn convert_char3_rte(char3)
int __ovld __cnfn convert_int_sat(char)
char2 __ovld __cnfn convert_char2_sat_rtn(char2)
ushort __ovld __cnfn convert_ushort_rtp(char)
ulong3 __ovld __cnfn convert_ulong3_rte(char3)
ulong2 __ovld __cnfn convert_ulong2_rtp(char2)
ushort16 __ovld __cnfn convert_ushort16_sat(char16)
short __ovld __cnfn convert_short(char)
short8 __ovld __cnfn convert_short8_rtn(char8)
char4 __ovld __purefn vload4(size_t, const __constant char *)
long3 __ovld __cnfn convert_long3_rtn(char3)
float __ovld remquo(float, float, __global int *)
The remquo function computes the value r such that r = x - n*y, where n is the integer nearest the ex...
float __ovld __cnfn rootn(float, int)
Compute x to the power 1/y.
void __ovld vstorea_half8_rtp(float8, size_t, __global half *)
char2 __ovld __cnfn convert_char2_sat(char2)
void __ovld read_mem_fence(cl_mem_fence_flags)
Read memory barrier that orders only loads.
ushort4 __ovld __cnfn convert_ushort4_sat_rte(char4)
uchar3 __ovld __cnfn convert_uchar3_sat_rtp(char3)
short4 __ovld __cnfn convert_short4(char4)
ulong3 __ovld __cnfn convert_ulong3_rtz(char3)
float __ovld __cnfn half_rsqrt(float)
Compute inverse square root.
uchar16 __ovld __cnfn convert_uchar16_rtn(char16)
char3 __ovld __purefn vload3(size_t, const __constant char *)
ulong __ovld __cnfn convert_ulong_sat_rtn(char)
short16 __ovld __cnfn convert_short16_rtz(char16)
long2 __ovld __cnfn convert_long2_rte(char2)
void __ovld vstore_half2_rtp(float2, size_t, __global half *)
float __ovld __cnfn acos(float)
Arc cosine function.
void __ovld atomic_init(volatile __global atomic_int *, int)
float __ovld __cnfn mad(float, float, float)
mad approximates a * b + c.
uint4 __ovld __cnfn convert_uint4_rte(char4)
ushort8 __ovld __cnfn convert_ushort8(char8)
int8 __ovld __cnfn convert_int8_rtz(char8)
#define __purefn
Definition: opencl-c.h:39
ushort __ovld __cnfn convert_ushort_sat_rtp(char)
int3 __ovld __cnfn convert_int3_sat(char3)
void __ovld __conv work_group_barrier(cl_mem_fence_flags, memory_scope)
float __ovld __cnfn rint(float)
Round to integral value (using round to nearest even rounding mode) in floating-point format.
float16 __ovld __purefn vloada_half16(size_t, const __constant half *)
void __ovld vstore_half3_rte(float3, size_t, __global half *)
#define atomic_fetch_xor(object, operand)
Definition: stdatomic.h:159
#define atomic_store(object, desired)
Definition: stdatomic.h:135
#define atomic_compare_exchange_weak(object, expected, desired)
Definition: stdatomic.h:147
#define atomic_compare_exchange_strong(object, expected, desired)
Definition: stdatomic.h:144
#define atomic_exchange(object, desired)
Definition: stdatomic.h:141
#define atomic_fetch_or(object, operand)
Definition: stdatomic.h:156
void atomic_flag_clear(volatile atomic_flag *)
#define atomic_fetch_sub(object, operand)
Definition: stdatomic.h:153
_Bool atomic_flag_test_and_set(volatile atomic_flag *)
#define atomic_load(object)
Definition: stdatomic.h:138
#define atomic_fetch_and(object, operand)
Definition: stdatomic.h:162
#define atomic_fetch_add(object, operand)
Definition: stdatomic.h:150